launch.gms : Launch Vehicle Design and Costing

**Description**

This model designs a three stage launch vehicle, taking into account cost-estimation relationships for R&D and production costs for airframe, engines and an instrument unit.

**Reference**

- Bracken, J, and McCormick, G P, Chapter 7. In Selected Applications of Nonlinear Programming. John Wiley and Sons, New York, 1968, pp. 58-82.

**Small Model of Type :** NLP

**Category :** GAMS Model library

**Main file :** launch.gms

$title Launch Vehicle Design (LAUNCH,SEQ=161) $Ontext This model designs a three stage launch vehicle, taking into account cost-estimation relationships for R&D and production costs for airframe, engines and an instrument unit. Bracken, J, and McCormick, G P, Chapter 7. In Selected Applications of Nonlinear Programming. John Wiley and Sons, New York, 1968, pp. 58-82. $Offtext sets s stages / stage-1, stage-2, stage-3 / b bound labels / lower, upper / alias(s,ss); sets ge(s,ss) s is greater than ss; ge(s,ss) = yes$(ord(s) >= ord(ss)); scalars pl pay load (thousands of pound) / 20 / numl number of launches / 10 / g average gravity (est) / 31.8 / table pwbound(s,b) propellant weight lower upper stage-1 12 16 stage-2 10 12 stage-3 7 9 parameters iwf(s) weight fraction / stage-1 .5, stage-2 .6, stage-3 .7 / nume(s) number of engines / (stage-1,stage-2) 5, stage-3 1 / rde1(s) Engine R&D cost 1 / (stage-1,stage-2) -257.963, stage-3 32.591 / rde2(s) Engine R&D cost 2 / (stage-1,stage-2) 160.990, stage-3 181.806 / rde3(s) Engine R&D cost 3 / (stage-1,stage-2) -0.146, stage-3 0.539 / rde4(s) Engine R&D cost 4 / (stage-1,stage-2) 282.874, stage-3 232.570 / rde5(s) Engine R&D cost 5 / (stage-1,stage-2) 0.648, stage-3 0.772 / pre1(s) Engine cost 1 / (stage-1,stage-2) 0.2085, stage-3 0.0705 / pre2(s) Engine cost 2 / (stage-1,stage-2) 2.509 , stage-3 -0.01807 / pre3(s) Engine cost 3 / (stage-1,stage-2) 0.736 , stage-3 -1.33 / pre4(s) Engine cost 4 / (stage-1,stage-2) 0.9744, stage-3 16.687 / pre5(s) Engine cost 5 / (stage-1,stage-2) -0.229 , stage-3 0.498 / ; * adjust from c*(x/100)**b to (c*10**b)*(x/1000)**b for stage-3 pre2('stage-3') = pre2('stage-3')*10**pre3('stage-3'); pre4('stage-3') = pre4('stage-3')*10**pre5('stage-3'); variables aweight(s) airframe weight (thousands of pounds) iweight(s) inert weight (thousands of pounds) pweight(s) propellant weight (thousands of pounds) instweight instrument unit weight (thousands of pounds) weight(s) total initial weight (thousands of pounds) length(s) length of stage (feet) thrust(s) thrust (thousands of pounds) ethrust(s) single engine thrust (thousands of pounds) ms(s) mass fraction t2w(s) thrust to weight ratio t(s) operating time vfac(s) velocity factor v(s) incremental velocity vt total velocity cost total cost; equations diweight(s) definition of inert weight dweight(s) definition of weight dthrust(s) definition of thrust t2wr(s) thrust to initial weight ratio definition msd(s) mass fraction definition pwlower(s) lower bound of propellant weight pwupper(s) upper bound of propellant weight defvfac(s) velocity factor definition defv(s) definition of velocity defvt definition of total velocity costdef cost definition ; diweight(s).. iwf(s)*iweight(s) =e= aweight(s); dweight(s).. weight(s) =e= sum(ss$ge(ss,s), iweight(ss) + pweight(ss)) + instweight + pl; dthrust(s).. thrust(s) =e= nume(s)*ethrust(s); t2wr(s).. t2w(s)*weight(s) =e= thrust(s); msd(s).. (1-ms(s))*weight(s) =e= pweight(s); pwlower(s).. pwbound(s,'lower')*iweight(s) =l= pweight(s); pwupper(s).. pweight(s) =l= pwbound(s,'upper')*iweight(s); defvfac(s).. vfac(s)*pweight(s) =e= thrust(s)*t(s); defv(s).. v(s) =e= vfac(s)*g*log(1/ms(s)); defvt.. vt =e= sum(s, v(s)); costdef.. cost =e= * airframe R&D cost + 5272.77*sum(s, aweight(s)**1.2781*iweight(s)**(-0.1959)* ms(s)**2.4242*thrust(s)**0.38745*pweight(s)**(-0.9904)) * airframe production cost + .185214*sum(s, aweight(s)**0.3322*ms(s)**(-1.5935)*pweight(s)**0.2362* length(s)**0.1079*nume(s)**0.1616*numl**0.9) * engine R&D cost + sum(s, rde1(s) + rde2(s)*(ethrust(s)/1000)**rde3(s) + rde4(s)*(ethrust(s)/1000)**rde5(s)) * engine production cost + sum(s, ( pre1(s)*(ethrust(s)/1000) + pre2(s)*(ethrust(s)/1000)**pre3(s) + pre4(s)*(ethrust(s)/1000)**pre5(s))*(nume(s)*numl)**0.93) * instrument unit + 10.35*(15822e-6*(instweight*1000)**0.786 - 35.5) + numl**0.9*15822e-6*(instweight*1000)**0.786 * launch operations + 8.5*numl*(3*sum(s, pweight(s))/1000)**0.460; model launch / all /; t2w.lo('stage-1') = 1.2; t2w.up('stage-1') = 1.4 ; t2w.lo('stage-2') = .6; t2w.up('stage-2') = .75; t2w.lo('stage-3') = .7; t2w.up('stage-3') = .9 ; ms.lo('stage-1') = .25; ms.up('stage-1') = .30; ms.lo('stage-2') = .24; ms.up('stage-2') = .29; ms.lo('stage-3') = .16; ms.up('stage-3') = .21; length.lo('stage-1') = 125; length.up('stage-1') = 150; length.lo('stage-2') = 75; length.up('stage-2') = 100; length.lo('stage-3') = 50; length.up('stage-3') = 70; vfac.lo('stage-1') = 240; vfac.up('stage-1') = 290; vfac.lo('stage-2') = 240; vfac.up('stage-2') = 290; vfac.lo('stage-3') = 340; vfac.up('stage-3') = 375; vt.lo = 35000; vt.up = 50000; instweight.lo = 2.5; instweight.up = 4.0; v.lo(s) = 1000; t.lo(s) = 100; thrust.lo(s) = 1; aweight.lo(s) = 1; iweight.lo(s) = 5; pweight.lo(s) = 50; ethrust.lo(s) = 20; * this are the solution values the book t.l ('stage-1') = 155; t.l ('stage-2') = 314; t.l ('stage-3') = 403; iweight.l ('stage-1') = 136; iweight.l ('stage-2') = 47; iweight.l ('stage-3') = 16; pweight.l ('stage-1') = 2176; pweight.l ('stage-2') = 564; pweight.l ('stage-3') = 144; ethrust.l('stage-1') = 746; ethrust.l('stage-2') = 96; ethrust.l('stage-3') = 129; length.l('stage-1') = 125; length.l('stage-2') = 75; length.l('stage-3') = 50; ms.l('stage-1') = .3; ms.l('stage-2') = .29; ms.l('stage-3') = .21; instweight.l = 2.5; vt.l = 38632; solve launch using nlp minmizing cost;