fmcmac/tp067v3.mac


If Cut/Copy and Paste fails, then click here for download.


fmcTitle ("tp067v3")$

/* Source version 2 */
/* FMCMAC post processor version 1.1 */

/* FMC's second native input language. */
/* The Hock & Schittkowski test problem #67. */
/* This is a free, more intuitive formulation of #67, */
/* without discontinuities, as it would probably be defined */
/* by a modeler of our days. */
/* The solution is equal to the one obtained with tp067v1, */
/* i.e., it is sensible but not exact in the sense of #67. */

y2 : tp067v3x (fmc_ident_tcb, 2, 0, x1, x2, x3)$
y3 : tp067v3x (fmc_ident_tcb, 3, 0, x1, x2, x3)$
y4 : tp067v3x (fmc_ident_tcb, 4, 0, x1, x2, x3)$
y5 : tp067v3x (fmc_ident_tcb, 5, 0, x1, x2, x3)$
y6 : tp067v3x (fmc_ident_tcb, 6, 0, x1, x2, x3)$
y7 : tp067v3x (fmc_ident_tcb, 7, 0, x1, x2, x3)$
y8 : tp067v3x (fmc_ident_tcb, 8, 0, x1, x2, x3)$

fmcFunctionDiffHint ([ tp067v3x, 0, 0, 0,
  tp067v3x ( fmcFunctionArg1,  fmcFunctionArg2,  1,
             fmcFunctionArg4,  fmcFunctionArg5,  fmcFunctionArg6 ),
  tp067v3x ( fmcFunctionArg1,  fmcFunctionArg2,  2,
             fmcFunctionArg4,  fmcFunctionArg5,  fmcFunctionArg6 ),
  tp067v3x ( fmcFunctionArg1,  fmcFunctionArg2,  3,
             fmcFunctionArg4,  fmcFunctionArg5,  fmcFunctionArg6 ) ])$

fmcExternalCodePath ("../../doc/RevisedHockSchittkowski/src/tp067v3x.c")$

myminfun : -(0.063b0*y2*y5 - 5.04b0*x1 - 3.36b0*y3 - 0.035b0*x2 - 10*x3)$
fmcMinimum (myminfun)$

fmcInequality (i1,  y2 -     0)$
fmcInequality (i2,  y3 -     0)$
fmcInequality (i3,  y4 -    85)$
fmcInequality (i4,  y5 -    90)$
fmcInequality (i5,  y6 -     3)$
fmcInequality (i6,  y7 - 1/100)$
fmcInequality (i7,  y8 -   145)$

fmcInequality (i8, 5000 - y2)$
fmcInequality (i9, 2000 - y3)$
fmcInequality (i10,  93 - y4)$
fmcInequality (i11,  95 - y5)$
fmcInequality (i12,  12 - y6)$
fmcInequality (i13,   4 - y7)$
fmcInequality (i14, 162 - y8)$

fmcStrongLowerBound (x1, 10^(-5))$
fmcStrongLowerBound (x2, 10^(-5))$
fmcStrongLowerBound (x3, 10^(-5))$

fmcStrongUpperBound (x1,  2000)$
fmcStrongUpperBound (x2, 16000)$
fmcStrongUpperBound (x3,   120)$

fmcInitialValue (x1,  1745)$
fmcInitialValue (x2, 12000)$
fmcInitialValue (x3,   110)$

myownabs (x) := fmc_m_abs (x)$

myabsdevnod0_0 : myownabs (myminfun + 1162.02698005969)$
myreldevnod0_0 : myownabs (myminfun/1162.02698005969 + 1)$
myabsdevnod0_1 : myownabs (x1 - 1728.371443241086)$
myreldevnod0_1 : myownabs (x1/1728.371443241086 - 1)$
myabsdevnod0_2 : myownabs (x2 - 16000)$
myreldevnod0_2 : myownabs (x2/16000 - 1)$
myabsdevnod0_3 : myownabs (x3 - 98.13617652300942)$
myreldevnod0_3 : myownabs (x3/98.13617652300942 - 1)$
myabsdevnod1_0 : (1/2)*(myownabs (myabsdevnod0_0 - myabsdevnod0_1) + (myabsdevnod0_0 + myabsdevnod0_1))$
myreldevnod1_0 : (1/2)*(myownabs (myreldevnod0_0 - myreldevnod0_1) + (myreldevnod0_0 + myreldevnod0_1))$
myabsdevnod1_2 : (1/2)*(myownabs (myabsdevnod0_2 - myabsdevnod0_3) + (myabsdevnod0_2 + myabsdevnod0_3))$
myreldevnod1_2 : (1/2)*(myownabs (myreldevnod0_2 - myreldevnod0_3) + (myreldevnod0_2 + myreldevnod0_3))$
myabsdevnod2_0 : (1/2)*(myownabs (myabsdevnod1_0 - myabsdevnod1_2) + (myabsdevnod1_0 + myabsdevnod1_2))$
myreldevnod2_0 : (1/2)*(myownabs (myreldevnod1_0 - myreldevnod1_2) + (myreldevnod1_0 + myreldevnod1_2))$
zmyabsdevmax : myabsdevnod2_0$
zmyreldevmax : myreldevnod2_0$
fmcEscortFloat (x1, x1)$
fmcEscortFloat (x2, x2)$
fmcEscortFloat (x3, x3)$
fmcEscortFloat ('myminfun, myminfun)$
fmcEscortFloat ('zmyabsdevmax, zmyabsdevmax)$
fmcEscortFloat ('zmyreldevmax, zmyreldevmax)$


Stephan K.H. Seidl