Beispiel #1
0
def test():

    for config in configs:

        aircraft = OnDemandAircraft()
        aircraft = aircraft.standard_substitutions(
            config=config, autonomousEnabled=generic_data["autonomousEnabled"])

        sizing_mission = OnDemandSizingMission(aircraft=aircraft)
        sizing_mission = sizing_mission.standard_substitutions(
            piloted=generic_data["isSizingMissionPiloted"],
            reserve=generic_data["reserve"])

        revenue_mission = OnDemandRevenueMission(aircraft=aircraft)
        revenue_mission = revenue_mission.standard_substitutions(
            piloted=generic_data["isRevenueMissionPiloted"])

        deadhead_mission = OnDemandDeadheadMission(aircraft=aircraft)
        deadhead_mission = deadhead_mission.standard_substitutions(
            piloted=generic_data["isDeadheadMissionPiloted"])

        mission_cost = OnDemandMissionCost(aircraft=aircraft,
                                           revenue_mission=revenue_mission,
                                           deadhead_mission=deadhead_mission)
        mission_cost = mission_cost.standard_substitutions(
            isRevenueMissionPiloted=generic_data["isRevenueMissionPiloted"],
            isDeadheadMissionPiloted=generic_data["isDeadheadMissionPiloted"])

        objective_function = mission_cost.cpt
        problem = Model(objective_function, [
            aircraft, sizing_mission, revenue_mission, deadhead_mission,
            mission_cost
        ])
        solution = problem.solve(verbosity=0)
Beispiel #2
0
	elif (config == "Coaxial heli"):
		mission_range = np.linspace(1,  49, num_pts) * ureg.nautical_mile
	elif (config == "Compound heli"):
		mission_range = np.linspace(10, 82, num_pts) * ureg.nautical_mile
	elif (config == "Lift + cruise"):
		mission_range = np.linspace(10, 85, num_pts) * ureg.nautical_mile
	elif (config == "Tilt wing"):
		mission_range = np.linspace(15, 98, num_pts) * ureg.nautical_mile
	elif (config == "Tilt rotor"):
		mission_range = np.linspace(15, 110, num_pts) * ureg.nautical_mile

	c                 = configs[config]
	c["SPL_sizing_A"] = np.zeros(np.size(mission_range))

	aircraft = OnDemandAircraft()
	aircraft = aircraft.standard_substitutions(config=config, autonomousEnabled=generic_data["autonomousEnabled"])

	sizing_mission = OnDemandSizingMission(aircraft=aircraft)
	sizing_mission = sizing_mission.standard_substitutions(piloted=generic_data["isSizingMissionPiloted"], reserve=generic_data["reserve"])

	sizing_mission.substitutions.update({
		sizing_mission.cruise_segment.d_segment: ("sweep", mission_range.to(ureg.km).magnitude),  # Careful with units here
	})

	revenue_mission = OnDemandRevenueMission(aircraft=aircraft)
	revenue_mission = revenue_mission.standard_substitutions(piloted=generic_data["isRevenueMissionPiloted"])

	deadhead_mission = OnDemandDeadheadMission(aircraft=aircraft)
	deadhead_mission = deadhead_mission.standard_substitutions(piloted=generic_data["isDeadheadMissionPiloted"])

	mission_cost = OnDemandMissionCost(aircraft=aircraft, revenue_mission=revenue_mission, deadhead_mission=deadhead_mission)
Beispiel #3
0
        return constraints


if __name__ == "__main__":

    #Concept representative analysis

    # from noise_models import rotational_noise, vortex_noise, noise_weighting

    #String inputs
    # reserve_type="FAA_heli"
    # sizing_mission_type="piloted"

    aircraft = OnDemandAircraft()
    aircraft = aircraft.standard_substitutions(config="Compound heli",
                                               autonomousEnabled=True)

    sizing_mission = OnDemandSizingMission(aircraft=aircraft)
    sizing_mission = sizing_mission.standard_substitutions(
        piloted=True, reserve="20-minute loiter")

    revenue_mission = OnDemandRevenueMission(aircraft=aircraft)
    revenue_mission = revenue_mission.standard_substitutions(piloted=True)

    deadhead_mission = OnDemandDeadheadMission(aircraft=aircraft)
    deadhead_mission = deadhead_mission.standard_substitutions(piloted=False)

    mission_cost = OnDemandMissionCost(aircraft=aircraft,
                                       revenue_mission=revenue_mission,
                                       deadhead_mission=deadhead_mission)
    mission_cost = mission_cost.standard_substitutions(
Beispiel #4
0
        constraints += [W_mission == c.performance.W for c in flight_segments]
        constraints += [
            W_mission >= W_noPassengersOrCrew + sum(c.W for c in payload)
        ]
        constraints += [MTOW >= W_mission]

        constraints += [
            E_mission >= sum(c.performance.battery_perf.E
                             for c in flight_segments)
        ]
        constraints += [E_eff >= E_mission]

        return constraints


if __name__ == "__main__":

    aircraft = OnDemandAircraft()
    aircraft = aircraft.standard_substitutions(config="Lift + cruise",
                                               autonomousEnabled=True)

    sizing_mission = OnDemandSizingMission(aircraft=aircraft)
    sizing_mission = sizing_mission.standard_substitutions(
        piloted=True, reserve="20-minute loiter")

    objective_function = aircraft.MTOM
    problem = Model(objective_function, [aircraft, sizing_mission])
    solution = problem.solve(verbosity=0)

    # print solution.table()
Beispiel #5
0
	cases[config]["Initial"]["battery_cost_per_energy"]   = 400 * ureg.kWh**-1
	cases[config]["Near term"]["battery_cost_per_energy"] = 200 * ureg.kWh**-1
	cases[config]["Long term"]["battery_cost_per_energy"] = 100 * ureg.kWh**-1


# Optimize
for config in cases:
	
	print "Solving configuration: " + config

	for i, case in enumerate(cases[config]):
		
		c = cases[config][case]

		aircraft = OnDemandAircraft()
		aircraft = aircraft.standard_substitutions(config=config, autonomousEnabled=c["autonomousEnabled"])

		aircraft.substitutions.update({
			aircraft.airframe.cost_per_weight: c["airframe_cost_per_weight"],
			aircraft.battery.e:                c["e"],
			aircraft.battery.cost_per_energy:  c["battery_cost_per_energy"],
		})

		sizing_mission = OnDemandSizingMission(aircraft=aircraft)
		sizing_mission = sizing_mission.standard_substitutions(piloted=c["isSizingMissionPiloted"], reserve=generic_data["reserve"])

		revenue_mission = OnDemandRevenueMission(aircraft=aircraft)
		revenue_mission = revenue_mission.standard_substitutions(piloted=c["isRevenueMissionPiloted"])

		deadhead_mission = OnDemandDeadheadMission(aircraft=aircraft)
		deadhead_mission = deadhead_mission.standard_substitutions(piloted=c["isDeadheadMissionPiloted"])