Quick Test¶

A compact end-to-end fuel optimization example.

In [1]:
import time
import warnings

import numpy as np

import opentop as top

warnings.filterwarnings("ignore")
In [2]:
actype = "A320"
origin = "EHAM"
destination = "LGAV"
m0 = 0.85

optimizer = top.CompleteFlight(actype, origin, destination, m0=m0)
# optimizer = top.Cruise(actype, origin, destination, m0=m0)
# optimizer = top.Climb(actype, origin, destination, m0=m0)
# optimizer = top.Descent(actype, origin, destination, m0=m0)
In [3]:
start = time.time()
flight = optimizer.trajectory(objective="fuel")

fuel_cost_val = float(np.sum(flight["fuel_cost"]))
obj = optimizer.stats["iterations"]["obj"][-1]
status = optimizer.success

print(f"Fuel Cost: {fuel_cost_val:.2f} | Objective: {obj:.2f} | Status: {status}")
print(flight)
print(f"\nOptimal trajectory was generated in {round(time.time() - start)} seconds.\n")
Fuel Cost: 7381.74 | Objective: 7381.74 | Status: True
            mass          ts              x              y             h  \
0   66299.999901      0.0000 -652421.018906  840655.020513     30.480000
1   65856.885843    234.0711 -634426.727912  825818.739650   2905.430322
2   65515.244285    468.1422 -608584.495635  798126.756506   5250.205369
3   65221.764104    702.2134 -577519.605784  764838.285033   7000.439772
4   64956.994689    936.2845 -542723.874754  727551.923951   8332.819588
5   64711.343509   1170.3556 -505219.768605  687363.326020   9371.734159
6   64478.345623   1404.4267 -466962.532225  646367.689839  10275.805831
7   64282.892802   1638.4978 -429294.759392  606003.710184  10585.336865
8   64108.745858   1872.5690 -392448.192927  566519.717706  10585.336944
9   63932.483433   2106.6401 -355327.706847  526742.198824  10611.371628
10  63756.476914   2340.7112 -318191.216206  486947.529797  10640.074235
11  63581.009730   2574.7823 -281064.400730  447163.228468  10668.286854
12  63406.041117   2808.8535 -243943.881630  407385.674200  10696.441561
13  63231.574769   3042.9246 -206830.302495  367615.556649  10724.481077
14  63057.608474   3276.9957 -169723.760010  327852.979420  10752.412614
15  62884.140769   3511.0668 -132624.416144  288098.116077  10780.235193
16  62711.170088   3745.1379  -95532.418745  248351.125050  10807.948894
17  62538.694866   3979.2091  -58447.911680  208612.160505  10835.553725
18  62366.713535   4213.2802  -21371.033783  168881.371212  10863.049682
19  62195.224489   4447.3513   15698.081369  129158.900311  10890.437345
20  62024.226400   4681.4224   52759.300777   89444.890320  10917.712098
21  61853.715140   4915.4935   89812.536305   49739.435683  10944.920957
22  61683.714919   5149.5647  126857.300253   10043.059011  10971.586380
23  61513.954043   5383.6358  163897.281214  -29648.192314  11002.723183
24  61344.943654   5617.7069  200887.431721  -69286.046392  11033.120934
25  61176.827531   5851.7780  237838.950473 -108882.503506  11059.254425
26  61009.146310   6085.8492  274802.320623 -148491.660325  11085.653928
27  60841.936324   6319.9203  311773.108540 -188108.765864  11111.949208
28  60675.193109   6553.9914  348751.499668 -227734.018840  11138.169968
29  60508.915500   6788.0625  385737.305407 -267367.217154  11164.313806
30  60343.102067   7022.1336  422730.370879 -307008.194842  11190.380852
31  60177.751399   7256.2048  459730.542421 -346656.787242  11216.371047
32  60012.862063   7490.2759  496737.670333 -386312.833938  11242.284674
33  59848.432865   7724.3470  533751.604167 -425976.173713  11268.117497
34  59684.459034   7958.4181  570772.259209 -465646.715788  11293.933789
35  59519.576306   8192.4892  607798.578616 -505323.327675  11348.253086
36  59386.168227   8426.5604  644324.655964 -544463.890870  10808.031814
37  59252.471276   8660.6315  680786.620353 -583535.751986  10213.491162
38  59160.645600   8894.7026  713689.621101 -618793.903788   9024.409861
39  59101.833713   9128.7737  744278.145518 -651571.912258   7240.787919
40  59051.294366   9362.8449  773236.291405 -682602.841966   5228.860108
41  59004.110681   9596.9160  799965.710663 -711245.515888   3201.703815
42  58958.463401   9830.9871  824125.149823 -737134.253921   1318.821594
43  58918.264009  10065.0582  842394.396984 -752197.235962     30.480000

     latitude  longitude  altitude      mach       tas  vertical_rate  \
0   52.316620   4.746300     100.0  0.300000  198.3755         2418.0
1   52.204138   5.035433    9532.0  0.500000  319.7176         1972.0
2   51.984467   5.459163   17225.0  0.616216  382.7162         1472.0
3   51.718431   5.963067   22967.0  0.704296  427.5134         1121.0
4   51.417945   6.520505   27339.0  0.771567  459.9134          874.0
5   51.091183   7.113193   30747.0  0.798023  468.7689          760.0
6   50.754849   7.709224   33713.0  0.792633  459.5426          260.0
7   50.420804   8.287772   34729.0  0.777115  448.4940            0.0
8   50.091337   8.845879   34729.0  0.783044  451.9153           22.0
9   49.756784   9.400444   34814.0  0.783699  452.1192           24.0
10  49.419505   9.947661   34908.0  0.783826  451.9998           24.0
11  49.079801  10.487285   35001.0  0.784021  451.9231           24.0
12  48.737704  11.019508   35093.0  0.784202  451.8383           24.0
13  48.393285  11.544460   35185.0  0.784380  451.7523           23.0
14  48.046606  12.062278   35277.0  0.784554  451.6644           23.0
15  47.697731  12.573096   35368.0  0.784723  451.5747           23.0
16  47.346718  13.077049   35459.0  0.784888  451.4832           23.0
17  46.993628  13.574270   35550.0  0.785049  451.3900           23.0
18  46.638516  14.064890   35640.0  0.785207  451.2952           23.0
19  46.281439  14.549039   35730.0  0.785361  451.1988           23.0
20  45.922452  15.026845   35819.0  0.785512  451.1014           23.0
21  45.561606  15.498436   35909.0  0.785649  450.9965           22.0
22  45.198956  15.963932   35996.0  0.785888  450.9535           26.0
23  44.834515  16.423504   36098.0  0.784982  450.2417           26.0
24  44.468777  16.876724   36198.0  0.784162  449.7715           22.0
25  44.101682  17.323867   36284.0  0.784413  449.9157           22.0
26  43.732775  17.765665   36370.0  0.784571  450.0060           22.0
27  43.362140  18.202173   36457.0  0.784732  450.0986           22.0
28  42.989816  18.633502   36543.0  0.784889  450.1888           22.0
29  42.615844  19.059755   36628.0  0.785044  450.2772           22.0
30  42.240265  19.481037   36714.0  0.785194  450.3637           22.0
31  41.863118  19.897447   36799.0  0.785342  450.4484           22.0
32  41.484440  20.309086   36884.0  0.785486  450.5312           22.0
33  41.104268  20.716052   36969.0  0.785629  450.6130           22.0
34  40.722638  21.118441   37054.0  0.785750  450.6821           46.0
35  40.339595  21.516339   37232.0  0.774750  444.3731         -454.0
36  39.960433  21.904495   35459.0  0.768206  441.8866         -500.0
37  39.580684  22.287736   33509.0  0.684432  397.1740        -1000.0
38  39.236954  22.630013   29608.0  0.623398  368.0062        -1500.0
39  38.916531  22.945245   23756.0  0.575475  348.1915        -1692.0
40  38.612429  23.241088   17155.0  0.517750  321.6494        -1705.0
41  38.331090  23.511965   10504.0  0.456998  291.1739        -1583.0
42  38.076281  23.755012    4327.0  0.300000  195.4697        -1083.0
43  37.923510  23.943260     100.0  0.300000  198.3755        -1083.0

     heading   fuel_cost  grid_cost  fuelflow
0   129.5056  443.114057        NaN  1.872298
1   136.9789  341.641559        NaN  1.483132
2   136.9789  293.480181        NaN  1.287565
3   136.9789  264.769414        NaN  1.163877
4   136.9789  245.651180        NaN  1.077207
5   136.9789  232.997887        NaN  1.009868
6   136.9789  195.452821        NaN  0.834163
7   136.9789  174.146944        NaN  0.741526
8   136.9789  176.262425        NaN  0.749578
9   136.9789  176.006519        NaN  0.748257
10  136.9789  175.467184        NaN  0.745997
11  136.9789  174.968613        NaN  0.743794
12  136.9789  174.466348        NaN  0.741598
13  136.9789  173.966295        NaN  0.739134
14  136.9789  173.467705        NaN  0.736948
15  136.9789  172.970681        NaN  0.734774
16  136.9789  172.475222        NaN  0.732606
17  136.9789  171.981331        NaN  0.730441
18  136.9789  171.489046        NaN  0.728290
19  136.9789  170.998089        NaN  0.726143
20  136.9789  170.511260        NaN  0.724010
21  136.9789  170.000221        NaN  0.721600
22  136.9789  169.760876        NaN  0.720614
23  136.9789  169.010388        NaN  0.717830
24  136.9789  168.116123        NaN  0.714062
25  136.9789  167.681221        NaN  0.712048
26  136.9789  167.209986        NaN  0.709994
27  136.9789  166.743215        NaN  0.707938
28  136.9789  166.277609        NaN  0.705896
29  136.9789  165.813433        NaN  0.703867
30  136.9789  165.350668        NaN  0.701834
31  136.9789  164.889335        NaN  0.699815
32  136.9789  164.429199        NaN  0.697800
33  136.9789  163.973831        NaN  0.695790
34  136.9789  164.882728        NaN  0.700010
35  136.9789  133.408079        NaN  0.559887
36  136.9789  133.696951        NaN  0.559141
37  136.9789   91.825677        NaN  0.376183
38  136.9789   58.811886        NaN  0.233009
39  136.9789   50.539347        NaN  0.196947
40  136.9789   47.183685        NaN  0.184647
41  136.9789   45.647280        NaN  0.181420
42  129.5056   40.199393        NaN  0.172518
43  129.5056         NaN        NaN  0.171535

Optimal trajectory was generated in 7 seconds.

Other objective examples:

flight = optimizer.trajectory(objective="ci:30")
flight = optimizer.trajectory(objective="gwp100")
flight = optimizer.trajectory(objective="gtp100")
flight = optimizer.trajectory(objective=("ci:90", "ci:10", "ci:20"))