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"))