Fiat : Analysis of Stability Margin of Spark Ignition Engine Fiat Dedra

Reference

  • Neculai Andrei, Nonlinear Optimization Applications Using the GAMS Technology,Springer Optimization and Its Applications, Model Fiat (11.5) in chapter Robust Stability Analysis , 2013

Category : GAMS NOA library


Mainfile : fiat.gms

$ONTEXT
   Analysis of the stability margin of the spark ignition engine
   Fiat Dedra.

   References:
   B.R. Barmish, New tools for robustness of linear systems.
   McMillan Publishing Company, New York, 1994.
  
   M. Abate, B. Barmish, C. Murillo-Sanchez, R. Tempo, Application of
   some new tools to robust stability analysis of spark ignition engines:
   A case study. IEEE Trans. Contr. syst. tech., vol.2, 1994, pp. 22.
  
   Neculai Andrei, "Models, Test Problems and Applications for
   Mathematical Programming". Technical Press, Bucharest, 2003.
   Application A41, page 407.
  
   Floudas, C.A., Pardalos, P.M., et al. "Handbook of Test Problems in 
   Local and Global Optimization". Kluwer Academic Publishers, Dordrecht, 
   1999.
   Problem 7.3.6. Test problem 16, page 103.
$OFFTEXT

VARIABLES
         q1, q2, q3, q4, q5, q6, q7
         w   frequency
         k   stability margin
         a0, a1, a2, a3, a4, a5, a6, a7
     objval    objective function variable;

FREE VARIABLES    objval;


EQUATIONS
         f Objective function
         g1
         g2
         b1l, b1u
         b2l, b2u
         b3l, b3u
         b4l, b4u
         b5l, b5u
         b6l, b6u
         b7l, b7u
         ga0, ga1, ga2, ga3, ga4, ga5, ga6, ga7  ;

f  .. objval =e=k;

g1  .. -a6*POWER(w,6) + a4*POWER(w,4) - a2*POWER(w,2) + a0 =e= 0;
g2  .. a7*POWER(w,6) - a5*POWER(w,4) + a3*POWER(w,2) - a1 =e= 0;

b1l  .. 3.4329-1.02721*k =l= q1;
b1u  .. q1 =l= 3.4320+1.02721*k;
b2l  .. 0.1627-0.06*k =l= q2;
b2u  .. q2 =l= 0.1627+0.06*k;
b3l  .. 0.1139-0.0782*k =l= q3;
b3u  .. q3 =l= 0.1139+0.0782*k;
b4l  .. 1.2539-0.3068*k =l= q4;
b4u  .. q4 =l= 1.2539+0.3068*k;
b5l  .. 0.0208-0.0108*k =l= q5;
b5u  .. q5 =l= 0.0208+0.08*k;
b6l  .. 5.0247-2.4715*k =l= q6;
b6u  .. q6 =l= 5.0247+2.4715*k;
b7l  .. 1.0-2*k =l= q7;
b7u  .. q7 =l= 1.0+2*k;

ga0  .. a0 =e= 6.82079e-05*q1*q3*POWER(q4,2) + 6.82079e-05*q1*q2*q4*q5;

ga1  .. a1 =e= 0.00076176*POWER(q2,2)*POWER(q5,2) +
               0.00076176*POWER(q3,2)*POWER(q4,2) +
               0.000402141*q1*q2*POWER(q5,2) +
               0.00337606*q1*q3*POWER(q4,2) +
               6.82079e-05*q1*q4*q5 + 0.00051612*POWER(q2,2)*q5*q6 +
               0.00337606*q1*q2*q4*q5 + 6.82079e-05*q1*q2*q4*q7 +
               6.28987e-05*q1*q2*q5*q6 + 0.000402141*q1*q3*q4*q5 +
               6.28987e-05*q1*q3*q4*q6 + 0.00152352*q2*q3*q4*q5 +
               0.00051612*q2*q3*q4*q6;

ga2  .. a2 =e= 0.000402141*q1*POWER(q5,2) + 0.00152352*q2*POWER(q5,2) +
               0.0552*POWER(q2,2)*POWER(q5,2) +
               0.0552*POWER(q3,2)*POWER(q4,2) +
               0.0189477*q1*q2*POWER(q5,2) + 0.034862*q1*q3*POWER(q4,2) +
               0.00336706*q1*q4*q5 + 6.82079e-05*q1*q4*q7 +
               6.28987e-05*q1*q5*q6 + 0.00152352*q3*q4*q5 +
               0.00051612*q3*q4*q6 - 0.00234048*POWER(q3,2)*q4*q6 +
               0.034862*q1*q2*q4*q5 + 0.0237398*POWER(q2,2)*q5*q6 +
               0.00152352*POWER(q2,2)*q5*q7 +
               0.00051612*POWER(q2,2)*q6*q7 +
               0.00336706*q1*q2*q4*q7 + 0.00287416*q1*q2*q5*q6 +
               0.000804282*q1*q2*q5*q7 + 6.28987e-05*q1*q2*q6*q7 +
               0.0189477*q1*q3*q4*q5 + 0.00287416*q1*q3*q4*q6 +
               0.000402141*q1*q3*q4*q7 + 0.1104*q2*q3*q4*q5 +
               0.0237398*q2*q3*q4*q6 + 0.00152352*q2*q3*q4*q7 -
               0.00234048*q2*q3*q5*q6 + 0.00103224*q2*q5*q6;

ga3  .. a3 =e= 0.189477*q1*POWER(q5,2) + 0.1104*q2*POWER(q5,2) +
               0.00051612*q5*q6 + POWER(q2,2)*POWER(q5,2) +
               0.00076176*POWER(q2,2)*POWER(q7,2) +
               POWER(q3,2)*POWER(q4,2) +
               0.1586*q1*q2*POWER(q5,2) + 0.000402141*q1*q2*POWER(q7,2) +
               0.0872*q1*q3*POWER(q4,2) + 0.034862*q1*q4*q5 +
               0.00336706*q1*q4*q7 + 0.00287416*q1*q5*q6 +
               6.28987e-05*q1*q6*q7 + 0.00103224*q2*q6*q7 +
               0.1104*q3*q4*q5 +
               0.0237398*q3*q4*q6 + 0.00152352*q3*q4*q7 -
               0.00234048*q3*q5*q6 +
               0.1826*POWER(q2,2)*q5*q6 + 0.1104*POWER(q2,2)*q5*q7 +
               0.0237398*POWER(q2,2)*q6*q7 - 0.0848*POWER(q3,2)*q4*q6 +
               0.0872*q1*q2*q4*q5 + 0.034862*q1*q2*q4*q7 +
               0.0215658*q1*q2*q5*q6 + 0.0378954*q1*q2*q5*q7 +
               0.00287416*q1*q2*q6*q7 + 0.1586*q1*q3*q4*q5 +
               0.0215658*q1*q3*q4*q6 + 0.0189477*q1*q3*q4*q7 +
               2*q2*q3*q4*q5 + 0.1826*q2*q3*q4*q6 + 0.1104*q2*q3*q4*q7 -
               0.0848*q2*q3*q5*q6 - 0.00234048*q2*q3*q6*q7 +
               0.00076176*POWER(q5,2) + 0.0474795*q2*q5*q6 +
               0.000804282*q1*q5*q7 + 0.00304704*q2*q5*q7;

ga4  .. a4 =e= 0.1586*q1*POWER(q5,2) + 0.000402141*q1*POWER(q7,2) +
               2*q2*POWER(q5,2) + 0.00152352*q2*POWER(q7,2) +
               0.0237398*q5*q6 +
               0.00152352*q5*q7 + 0.00051612*q6*q7 +
               0.0552*POWER(q2,2)*POWER(q7,2) +
               0.0189477*q1*q2*POWER(q7,2) +
               0.0872*q1*q4*q5 + 0.034862*q1*q4*q7 + 0.0215658*q1*q5*q6 +
               0.00287416*q1*q6*q7 + 0.0474795*q2*q6*q7 + 2*q3*q4*q5 +
               0.1826*q3*q4*q6 + 0.1104*q3*q4*q7 - 0.0848*q3*q5*q6 -
               0.00234048*q3*q6*q7 + 2*POWER(q2,2)*q5*q7 +
               0.1826*POWER(q2,2)*q6*q7 + 0.0872*q1*q2*q4*q7 +
               0.3172*q1*q2*q5*q7 + 0.0215658*q1*q2*q6*q7 +
               0.1586*q1*q3*q4*q7 + 2*q2*q3*q4*q7 - 0.0848*q2*q3*q6*q7 +
               0.0552*POWER(q5,2) + 0.3652*q2*q5*q6 + 0.0378954*q1*q5*q7 +
               0.2208*q2*q5*q7;

ga5  .. a5 =e= 0.0189477*q1*POWER(q7,2) + 0.1104*q2*POWER(q7,2) +
               0.1826*q5*q6 + 0.1104*q5*q7 + 0.0237398*q6*q7 +
               POWER(q2,2)*POWER(q7,2) + 0.1586*q1*q2*POWER(q7,2) +
               0.0872*q1*q4*q7 + 0.0215658*q1*q6*q7 + 0.3652*q2*q6*q7 +
               2*q3*q4*q7 - 0.0848*q3*q6*q7 + POWER(q5,2) +
               0.00076176*POWER(q7,2) + 0.3172*q1*q5*q7 + 4*q2*q5*q7;

ga6  .. a6 =e= 0.1586*q1*POWER(q7,2) + 2*q2*POWER(q7,2) + 2*q5*q7 +
               0.1826*q6*q7 + 0.0552*POWER(q7,2);

ga7  .. a7 =e= POWER(q7,2);

* Bounds
*q1.UP = 3.4329;
*q2.UP = 0.1627;
*q3.UP = 0.1139;
*q4.LO = 0.2539;
*q5.UP = 0.0208;
*q6.LO = 2.0247;
*q7.LO = 1;
w.LO = 0;
w.UP = 10;
k.LO = 0;
k.UP = 10;

* Initial point
q1.l=0.2;
q2.l=0.02;
q3.l=0.1;
q4.l=0.3;
q5.l=0;
q6.l=2;
q7.l=4.5;
w.l=0;
k.l=2;

MODEL fiat /ALL/;

$onecho >bench.opt
  solvers conopt minos
$offecho

fiat.optfile=1;
option nlp=bench;

SOLVE fiat USING NLP MINIMIZING objval;
* End Fiat