Jupiter planar optimization
Compute the shortest possible trip to Jupiter given the engine configuration. Compare the fuel with a straight-line computation to see the savings. ------------------------------------------------------------------------- See also: PlanarHelioOptimal, SimulatePlanarHelioTrajectory, StraightLineReport, ComputeDuration, ComputeThrust, FuelMass -------------------------------------------------------------------------
Contents
%-------------------------------------------------------------------------- % Copyright (c) 2018 Princeton Satellite Systems, Inc. % All rights reserved. %--------------------------------------------------------------------------
Setup
au = Constant('au'); year = 365.25*86400; uExhaust = 81; % km/s sigma = 750; % W/kg eta = 0.2; % Total fusion power to thrust payload = 1000; % payload mass (kg) nYears = 1.2; % transit time in years fTank = 0.04; dAU = 5; repeatPrevious = false;
Shortest possible trip
d = PlanarHelioOptimal; d.sigma = sigma; % specific power, W/kg d.eta = eta; % thrust efficiency d.uE = uExhaust; % exhaust velocity, km/s d.f = fTank; % fuel structural fraction (tanks) tRet = nYears*year; d.r0 = 1*au; d.rF = dAU*au; d.tF = nYears*year; d.mP = payload; % payload mass (kg) d.scale = [1;1e3;1e3]; % [distance;vel;vel] d.nPts = 25; if repeatPrevious [phi, thrust, t, data] = PlanarHelioOptimal( d, 4000, 'iter-detailed', thrust1, phi1 ); else [phi, thrust, t, data] = PlanarHelioOptimal( d ); end [~,x1] = SimulatePlanarHelioTrajectory( data.mD, data.mF, thrust, d.uE,... d.r0, d.rF, d.mu, phi, t ); phi1 = phi; thrust1 = thrust; data1 = data; h1 = findobj('name','Optimization PlotFcns'); set(h1,'name','Fast Jupiter Trip Optimization') data1.fmincon ret.dT = d.tF; ret.dTheta = data.xEnd(end); fprintf('Trip duration: %g days\n',d.tF/86400); fprintf('Trip angle: %g deg\n',ret.dTheta*180/pi); rXY = x1(1,:).*[cos(x1(2,:));sin(x1(2,:))]; dX = rXY(:,2:end) - rXY(:,1:end-1); s = sum(Mag(dX)); fprintf('Total distance traveled: %g AU\n\n',s); StraightLineReport(data) repeatPrevious = true;
5.1115 9.9186 23.302 5.1317 3.5527e-13 5.1115 9.9186 23.302 5.1317 3.5527e-13 First-order Norm of Iter F-count f(x) Feasibility optimality step 0 53 4.865448e+03 1.970e+07 5.378e+02 1 108 4.171010e+03 3.549e+06 4.750e+02 8.971e-01 4.1932 9.5172 22.829 5.0237 1.5632e-13 2 168 4.767780e+03 3.412e+06 4.705e+02 2.379e+00 4.9824 1.5628 10.657 4.9772 -3.6948e-13 3 227 4.741207e+03 2.961e+06 1.737e+02 7.495e-01 4.9472 1.01 12.316 4.9802 -7.9581e-13 4 285 4.842135e+03 1.990e+06 1.828e+02 3.908e-01 5.0807 0.62023 12.604 4.9867 -2.2737e-13 5 343 4.924308e+03 1.345e+06 1.852e+02 3.930e-01 5.1894 0.29873 12.87 4.991 -2.4158e-13 6 401 4.991922e+03 8.142e+05 1.682e+02 3.901e-01 5.2788 0.061956 13.144 4.9946 -5.6843e-13 7 459 4.973018e+03 5.578e+05 1.665e+02 8.964e-01 5.2538 0.0030134 13.29 4.9963 -6.8212e-13 8 520 4.897525e+03 3.373e+05 1.172e+02 3.861e-01 5.154 0.1605 13.279 4.9977 -2.8422e-13 9 581 4.935283e+03 4.879e+03 1.186e+01 2.046e-01 5.2039 0.050234 13.304 5 -6.9633e-13 10 648 4.947551e+03 4.450e+03 7.227e+00 2.927e-02 5.2201 0.020157 13.314 5 9.2371e-13 11 707 4.953658e+03 1.517e+03 6.578e+00 1.405e-02 5.2282 0.0056316 13.318 5 -3.979e-13 12 767 4.955924e+03 5.198e+02 6.242e+00 8.426e-03 5.2312 -1.5707e-05 13.32 5 -1.1369e-13 13 826 4.955202e+03 6.328e+00 5.345e+00 1.989e-02 5.2302 -2.4348e-07 13.32 5 1.279e-13 14 891 4.954606e+03 3.807e+00 4.722e+00 1.735e-02 5.2294 -1.4516e-07 13.32 5 -8.5265e-13 15 952 4.954045e+03 3.459e+00 4.158e+00 1.732e-02 5.2287 -1.3066e-07 13.32 5 0 16 1011 4.953518e+03 3.146e+00 3.640e+00 1.728e-02 5.228 -1.1818e-07 13.32 5 8.1002e-13 17 1070 4.953026e+03 2.852e+00 3.163e+00 1.725e-02 5.2273 -1.0672e-07 13.32 5 -2.1316e-13 18 1129 4.952567e+03 2.568e+00 2.726e+00 1.722e-02 5.2267 -9.575e-08 13.32 5 6.6791e-13 19 1188 4.952141e+03 2.289e+00 2.328e+00 1.718e-02 5.2262 -8.503e-08 13.32 5 3.4106e-13 20 1247 4.951748e+03 2.011e+00 1.965e+00 1.715e-02 5.2257 -7.4497e-08 13.32 5 3.4106e-13 21 1306 4.951388e+03 1.736e+00 1.638e+00 1.711e-02 5.2252 -6.4209e-08 13.32 5 -1.009e-12 22 1367 4.951060e+03 1.462e+00 1.477e+00 1.707e-02 5.2247 -5.4199e-08 13.32 5 -4.9738e-13 23 1428 4.950764e+03 1.194e+00 1.299e+00 1.702e-02 5.2244 -4.4592e-08 13.32 5 -1.4637e-12 24 1489 4.950499e+03 9.346e-01 1.180e+00 1.698e-02 5.224 -3.5521e-08 13.32 5 2.1316e-13 25 1550 4.950265e+03 6.865e-01 9.993e-01 1.693e-02 5.2237 -2.708e-08 13.32 5 1.0374e-12 26 1611 4.950062e+03 4.559e-01 8.186e-01 1.689e-02 5.2234 -1.9465e-08 13.32 5 -5.6843e-13 27 1672 4.949888e+03 2.451e-01 7.498e-01 1.684e-02 5.2232 -1.2741e-08 13.32 5 3.5527e-13 28 1733 4.949744e+03 5.768e-02 5.673e-01 1.679e-02 5.223 -7.04e-09 13.32 5 3.2685e-13 29 1798 4.949642e+03 7.241e-02 4.210e-01 1.466e-02 5.2229 -1.5227e-09 13.32 5 -1.1369e-13 30 1863 4.949571e+03 1.076e-01 3.946e-01 1.280e-02 5.2228 5.7341e-10 13.32 5 3.979e-13 First-order Norm of Iter F-count f(x) Feasibility optimality step 31 1924 4.949516e+03 1.616e-01 2.524e-01 1.278e-02 5.2227 1.9371e-09 13.32 5 -1.4637e-12 32 1985 4.949495e+03 3.012e-02 2.329e-01 6.385e-03 5.2227 4.9739e-10 13.32 5 -8.1002e-13 33 2050 4.949479e+03 2.494e-02 2.055e-01 5.586e-03 5.2227 4.5337e-10 13.32 5 -2.2737e-13 34 2111 4.949467e+03 3.105e-02 1.412e-01 5.587e-03 5.2226 6.1009e-10 13.32 5 3.4106e-13 35 2170 4.949457e+03 4.044e-02 1.219e-01 5.592e-03 5.2226 8.3317e-10 13.32 5 4.6896e-13 36 2239 4.949454e+03 6.252e-03 9.022e-02 2.675e-03 5.2226 1.3988e-10 13.32 5 -1.0658e-12 37 2304 4.949451e+03 4.992e-03 7.521e-02 2.344e-03 5.2226 1.0442e-10 13.32 5 -5.6843e-13 38 2365 4.949450e+03 6.220e-03 6.758e-02 2.351e-03 5.2226 1.538e-10 13.32 5 -5.6843e-13 39 2424 4.949448e+03 7.336e-03 5.201e-02 2.381e-03 5.2226 1.2877e-10 13.32 5 9.0949e-13 40 2485 4.949448e+03 8.472e-04 6.285e-02 1.269e-03 5.2226 4.2818e-11 13.32 5 3.5527e-13 41 2550 4.949447e+03 3.256e-04 4.264e-02 1.091e-03 5.2226 1.6545e-11 13.32 5 8.1002e-13 42 2615 4.949447e+03 7.367e-05 5.345e-02 9.463e-04 5.2226 4.5457e-12 13.32 5 -3.5527e-13 43 2680 4.949447e+03 3.350e-05 3.640e-02 8.263e-04 5.2226 1.0675e-11 13.32 5 2.1316e-13 44 2745 4.949447e+03 3.624e-05 4.037e-02 7.193e-04 5.2226 -9.5923e-13 13.32 5 -7.816e-13 45 2810 4.949447e+03 3.576e-07 2.850e-02 6.299e-04 5.2226 4.7793e-12 13.32 5 -1.4211e-14 46 2881 4.949447e+03 4.184e-05 3.082e-02 4.996e-04 5.2226 -1.8296e-12 13.32 5 6.6791e-13 47 2946 4.949446e+03 6.676e-06 2.103e-02 4.375e-04 5.2226 2.1108e-12 13.32 5 3.4106e-13 48 3011 4.949446e+03 1.597e-05 2.377e-02 3.822e-04 5.2226 -6.5814e-13 13.32 5 -1.0232e-12 49 3076 4.949446e+03 2.265e-06 1.592e-02 3.347e-04 5.2226 8.3933e-13 13.32 5 -1.0658e-12 50 3141 4.949446e+03 3.457e-06 1.688e-02 2.916e-04 5.2226 -9.0594e-14 13.32 5 -2.7001e-13 51 3206 4.949446e+03 1.669e-06 1.313e-02 2.554e-04 5.2226 3.2641e-13 13.32 5 2.1316e-13 52 3271 4.949446e+03 1.073e-06 1.202e-02 2.223e-04 5.2226 8.2157e-14 13.32 5 -9.9476e-14 53 3334 4.949446e+03 2.635e-05 1.713e-02 3.870e-04 5.2226 5.409e-13 13.32 5 -1.4211e-14 54 3395 4.949446e+03 3.779e-05 7.795e-03 3.857e-04 5.2226 1.2492e-12 13.32 5 -1.1369e-13 55 3456 4.949446e+03 4.661e-05 9.198e-03 3.847e-04 5.2226 4.7695e-13 13.32 5 -1.4211e-14 56 3517 4.949446e+03 5.531e-05 5.281e-03 3.846e-04 5.2226 1.2714e-12 13.32 5 -5.6843e-13 5.2226 1.2714e-12 13.32 5 -5.6843e-13 Feasible point with lower objective function value found, but optimality criteria not satisfied. See output.bestfeasible.. Optimization completed: The relative first-order optimality measure, 6.982872e-06, is less than options.OptimalityTolerance = 1.000000e-05, and the relative maximum constraint violation, 2.808053e-12, is less than options.ConstraintTolerance = 5.000000e-05. Planar optimization results: ---------------------------- Destination: 5.0 AU sigma: 750 W/kg uE: 81 km/s eta: 0.2 f: 0.04 Duration: 438.3 days Thrust: 5.2 N Distance error: 0.000 km Velocity errors: [1.27143e-12;-4.70202e-12] km/s Payload: 1000 kg Engine: 1410.1 kg Dry mass: 2507.77 kg Fuel: 2441.67 kg Total mass: 4949.45 kg Total DV: 55.0704 km/s Power: 1.05758 MW Mars Angle: 172.094 deg Earth Angle: 432 deg ans = struct with fields: iterations: 56 funcCount: 3517 constrviolation: 5.5313e-05 stepsize: 0.00038465 algorithm: 'interior-point' firstorderopt: 0.0052806 cgiterations: 242 message: 'Local minimum found that satisfies the constraints.↵↵Optimization completed because the objective function is non-decreasing in ↵feasible directions, to within the value of the optimality tolerance,↵and constraints are satisfied to within the value of the constraint tolerance.↵↵<stopping criteria details>↵↵Optimization completed: The relative first-order optimality measure, 6.982872e-06,↵is less than options.OptimalityTolerance = 1.000000e-05, and the relative maximum constraint↵violation, 2.808053e-12, is less than options.ConstraintTolerance = 5.000000e-05.' bestfeasible: [1×1 struct] Trip duration: 438.3 days Trip angle: 172.094 deg Total distance traveled: 6.92602 AU Report: Inputs -- -- Payload 1000 kg Travel time 1.20 years Specific Power 0.75 kW/kg Exhaust velocity 81 km/s Thrust Efficiency 0.20 Fuel Fraction 0.04 Outputs -- -- Thrust 5.22 N Total Mass 4949.45 kg Mass Dry 2507.77 kg Mass Engine 1410.10 kg Mass Fuel 2441.67 kg Flow Rate 0.06 g/s Power 1.06 MW Delta V 55.07 km/s Final Distance 5.00 AU Final Velocity 13.32 km/s




Compare to straight line with same power
dS = d; dS.dF = d.rF; dS.v0 = 0; dS.mE = []; [tMin,~,dataS] = ComputeDuration( data.p, dS ); fprintf('\nStraight line duration: %.3f year\n',tMin/86400/365.25) fprintf('Straight line fuel mass: %.3f kg\n',dataS.mF) fprintf('Planar savings: %.1f %%\n',(dataS.mF-data.mF)/dataS.mF*100) %-------------------------------------- % $Id: e1734010364c2d21bd51b81981c2b43b97570793 $
Straight line duration: 1.500 year Straight line fuel mass: 3051.139 kg Planar savings: 20.0 %