ship.gms : Structural Optimization

Description

This model designs a vertically corrugated transverse bulkhead of an
oil tanker. The objective is to design for minimum weight and
meet stress, moment of inertia and plate thickness constraints.


Small Model of Type : NLP


Category : GAMS Model library


Main file : ship.gms

$title Structural Optimization (SHIP,SEQ=22)

$onText
This model designs a vertically corrugated transverse bulkhead of an
oil tanker. The objective is to design for minimum weight and
meet stress, moment of inertia and plate thickness constraints.


Bracken, J, and McCormick, G P, Chapter 6. In Selected Applications of
Nonlinear Programming. John Wiley and Sons, New York, 1968.

Keywords: nonlinear programming, ship construction, bulkhead designment, engineering
$offText

Set s 'bulkhead sections' / top, middle, bottom /;

Alias (s,sp);

Scalar
   gam      'specific gravity of water (kg cm-3)' / .001  /
   sig      'maximum bending stress    (kg cm-2)' / 1200  /
   dnv      'det norske veritas factor'           / 3.9   /
   ca       'corrosion allowance            (cm)' / na    /
   e        'flange effectiveness'                / na    /
   ha       'height above panel             (cm)' / 250   /
   gamsteel 'specific weight of steel'            / .0078 /
   width    'width of panel                  (m)' / na    /
   tlow     'lower bound on t               (cm)' / na    /;

Parameter
   h(s)     'height at the middle of panel  (cm)'
   hb(s)    'height at the base of panel    (cm)'
   k1(s)    'constant number one'
   k2(s)    'constant number two'
   l(s)     'length of panel                (cm)' / top 495, middle 385, bottom 315 /;

hb(s) = ha + sum(sp$(ord(sp) <= ord(s)), l(sp));
h(s)  = hb(s) - l(s)/2;
k1(s) = gam*h(s)*l(s)*l(s)/12/sig;
k2(s) = dnv*1.05e-4*sqrt(hb(s));

display l, h, hb, k1, k2;

* the reference does not contain values for the parameters
* e, width, ca, and t.lo. from reported optimal solutions and
* using constraints stress and inertia a value for e can be calculated.
* the width is only a scaling constant and is set to 500. ca is assumed
* to be .2 and the lower bound of 1.05 on t was read out from solution values.

e     = .8;
width = 500;
ca    = .2;
tlow  = 1.05;

Variable
   z(s)       'module               (cm3)'
   t(s)       'plate thickness       (cm)'
   wl         'width of flange       (cm)'
   lw         'length of web         (cm)'
   d          'depth of corrugation  (cm)'
   wc         'width of corrugation  (cm)'
   w          'weight of structure (tons)'

Equation
   zdef(s)    'module definition                (cm3)'
   wdef       'width of corrugation - definition (cm)'
   stress(s)  'bending stress               (kg cm-2)'
   inertia(s) 'moment of inertia                (cm4)'
   platew(s)  'plate thickness - width of flange (cm)'
   platel(s)  'plate thickness - length of web   (cm)'
   geom       'geometric constraint              (cm)'
   weight     'total weight of structure       (tons)';

zdef(s)..    z(s) =e= d*t(s)*(lw/3+wl*e)/2;

wdef..       wc   =e= wl + sqrt(lw*lw-d*d);

stress(s)..  z(s) =g= k1(s)*wc;

inertia(s).. z(s)*d/2 =g= 2.2*(k1(s)*wc)**(4/3);

platew(s)..  t(s) =g= k2(s)*wl + ca;

platel(s)..  t(s) =g= k2(s)*lw + ca;

geom..       lw   =g= d;

weight..     w    =e= gamsteel*width*(wl+lw)*sum(s, t(s)*l(s))/wc/1000;

t.lo(s)       = tlow;
t.l("top")    = 1.2;
t.l("middle") = 1.2;
t.l("bottom") = 1.3;
wl.l = 45.8;
lw.l = 43.2;
d.l  = 30.5;
wc.l = wl.l + sqrt(lw.l**2-d.l**2);
display wc.l;

z.l(s) = d.l*t.l(s)*(lw.l/3+wl.l*e)/2;
display z.l;

wc.lo = 1;

Model ship 'structural design of bulkhead' / all /;

solve ship minimizing w using nlp;