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;