-
Notifications
You must be signed in to change notification settings - Fork 17
/
objective_table.py
36 lines (34 loc) · 1.15 KB
/
objective_table.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
"""
script to generate the values in the SP_TASOPT paper for
aircraft optimized for different objectives
"""
from gpkit import units
from aircraft import Mission
from SPaircraft import optimize_aircraft
from subs.optimalD8 import get_optimalD8_subs
# solve all the cases
Nclimb = 3 # number of climb segments
Ncruise = 2 # number of cruise segments
Nmission = 1 # number of missions
config = 'optimalD8' # String describing configuration:
m = Mission(Nclimb, Ncruise, config, Nmission)
substitutions = get_optimalD8_subs()
substitutions.update({'R_{req}': 3000.*units('nmi'),
'n_{pass}': 180.})
# Additional options
fixedBPR = False
pRatOpt = True
mutategparg = True
sol = {}
objectives = [m['W_{f_{total}}'],m['W_{dry}'],m['b'],m['AR'],m['W_{engine}'],m['TotalTime'],m['L/D'][Nclimb],m['W_{lg}']]
for i in range(0,8):
m.cost = objectives[i].sum()
sol[i] = optimize_aircraft(m, substitutions, fixedBPR, pRatOpt, mutategparg)
basesol = sol[0]
# output the columns of the table
for i in range(0,8):
print ("column %s" % i)
print "\n"
print [sol[i](objectives[j])/basesol(objectives[j]) for j in range(0,8)]
print "\n"
print "\n"