MINLPLib

A Library of Mixed-Integer and Continuous Nonlinear Programming Instances

Home // Instances // Documentation // Download // Statistics


Instance tanksize

We discuss a tank design problem for a multi product plant, in which the optimal cycle time and the optimal campaign size are unknown. A mixed integer nonlinear programming formulation is presented, where non-convexities are due to the tank investment cost, storage cost, campaign setup cost and variable production rates. The objective of the optimization model is to minimize the sum of the production cost per ton per product produced. A continuous-time mathematical programming formulation for the problem is implemented with a fixed number of event points.
Formats ams gms mod nl osil py
Primal Bounds (infeas ≤ 1e-08)
1.26864375 p1 ( gdx sol )
(infeas: 1e-13)
Other points (infeas > 1e-08)  
Dual Bounds
1.26864370 (ANTIGONE)
1.26864375 (BARON)
1.26864375 (COUENNE)
1.26864372 (LINDO)
1.26864373 (SCIP)
0.00000000 (SHOT)
References Rebennack, Steffen, Kallrath, Josef, and Pardalos, Panos M, Optimal Storage Design for a Multi-Product Plant: A Non-Convex MINLP Formulation, Computers and Chemical Engineering, 35:2, 2011, 255-271.
Source GAMS Model Library model tanksize
Application Tank Size Design
Added to library 28 Feb 2014
Problem type MBNLP
#Variables 47
#Binary Variables 9
#Integer Variables 0
#Nonlinear Variables 27
#Nonlinear Binary Variables 9
#Nonlinear Integer Variables 0
Objective Sense min
Objective type linear
Objective curvature linear
#Nonzeros in Objective 1
#Nonlinear Nonzeros in Objective 0
#Constraints 74
#Linear Constraints 53
#Quadratic Constraints 20
#Polynomial Constraints 0
#Signomial Constraints 1
#General Nonlinear Constraints 0
Operands in Gen. Nonlin. Functions  
Constraints curvature indefinite
#Nonzeros in Jacobian 291
#Nonlinear Nonzeros in Jacobian 63
#Nonzeros in (Upper-Left) Hessian of Lagrangian 97
#Nonzeros in Diagonal of Hessian of Lagrangian 3
#Blocks in Hessian of Lagrangian 7
Minimal blocksize in Hessian of Lagrangian 1
Maximal blocksize in Hessian of Lagrangian 7
Average blocksize in Hessian of Lagrangian 3.857143
#Semicontinuities 0
#Nonlinear Semicontinuities 0
#SOS type 1 0
#SOS type 2 0
Minimal coefficient 5.1590e-02
Maximal coefficient 5.0000e+01
Infeasibility of initial point 53.53
Sparsity Jacobian Sparsity of Objective Gradient and Jacobian
Sparsity Hessian of Lagrangian Sparsity of Hessian of Lagrangian

$offlisting
*  
*  Equation counts
*      Total        E        G        L        N        X        C        B
*         74       23       27       24        0        0        0        0
*  
*  Variable counts
*                   x        b        i      s1s      s2s       sc       si
*      Total     cont   binary  integer     sos1     sos2    scont     sint
*         47       38        9        0        0        0        0        0
*  FX      5
*  
*  Nonzero counts
*      Total    const       NL      DLL
*        291      228       63        0
*
*  Solve m using MINLP minimizing objvar;


Variables  x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19
          ,x20,x21,x22,x23,x24,x25,x26,x27,x28,x29,x30,x31,x32,x33,x34,x35,x36
          ,x37,b38,b39,b40,b41,b42,b43,b44,b45,b46,objvar;

Positive Variables  x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x25,x26,x27,x28,x29
          ,x30,x31,x32,x33,x34,x35,x36,x37;

Binary Variables  b38,b39,b40,b41,b42,b43,b44,b45,b46;

Equations  e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15,e16,e17,e18,e19
          ,e20,e21,e22,e23,e24,e25,e26,e27,e28,e29,e30,e31,e32,e33,e34,e35,e36
          ,e37,e38,e39,e40,e41,e42,e43,e44,e45,e46,e47,e48,e49,e50,e51,e52,e53
          ,e54,e55,e56,e57,e58,e59,e60,e61,e62,e63,e64,e65,e66,e67,e68,e69,e70
          ,e71,e72,e73,e74;


e1..    x1 + x2 + x3 - x37 + 0.4*b38 + 0.4*b39 + 0.4*b40 + 0.2*b41 + 0.2*b42
      + 0.2*b43 + 0.1*b44 + 0.1*b45 + 0.1*b46 =E= 0;

e2..    b38 + b41 + b44 =L= 1;

e3..    b39 + b42 + b45 =L= 1;

e4..    b40 + b43 + b46 =L= 1;

e5..    11.4794520547945*x1 - x4 - x13 + x14 + 4.59178082191781*b38
      + 2.2958904109589*b41 + 1.14794520547945*b44 =E= 0;

e6..    11.4794520547945*x2 - x5 - x14 + x15 + 4.59178082191781*b39
      + 2.2958904109589*b42 + 1.14794520547945*b45 =E= 0;

e7..    11.4794520547945*x3 - x6 + x13 - x15 + 4.59178082191781*b40
      + 2.2958904109589*b43 + 1.14794520547945*b46 =E= 0;

e8..    9.56712328767123*x1 - x7 - x16 + x17 + 3.82684931506849*b38
      + 1.91342465753425*b41 + 0.956712328767123*b44 =E= 0;

e9..    9.56712328767123*x2 - x8 - x17 + x18 + 3.82684931506849*b39
      + 1.91342465753425*b42 + 0.956712328767123*b45 =E= 0;

e10..    9.56712328767123*x3 - x9 + x16 - x18 + 3.82684931506849*b40
       + 1.91342465753425*b43 + 0.956712328767123*b46 =E= 0;

e11..    3.82739726027397*x1 - x10 - x19 + x20 + 1.53095890410959*b38
       + 0.765479452054795*b41 + 0.382739726027397*b44 =E= 0;

e12..    3.82739726027397*x2 - x11 - x20 + x21 + 1.53095890410959*b39
       + 0.765479452054795*b42 + 0.382739726027397*b45 =E= 0;

e13..    3.82739726027397*x3 - x12 + x19 - x21 + 1.53095890410959*b40
       + 0.765479452054795*b43 + 0.382739726027397*b46 =E= 0;

e14..    x13 - x22 =L= 0;

e15..    x14 - x22 =L= 0;

e16..    x15 - x22 =L= 0;

e17..    x16 - x23 =L= 0;

e18..    x17 - x23 =L= 0;

e19..    x18 - x23 =L= 0;

e20..    x19 - x24 =L= 0;

e21..    x20 - x24 =L= 0;

e22..    x21 - x24 =L= 0;

e23.. -50*x1*b38 + x4 =L= 0;

e24.. -50*x2*b39 + x5 =L= 0;

e25.. -50*x3*b40 + x6 =L= 0;

e26.. -50*x1*b41 + x7 =L= 0;

e27.. -50*x2*b42 + x8 =L= 0;

e28.. -50*x3*b43 + x9 =L= 0;

e29.. -50*x1*b44 + x10 =L= 0;

e30.. -50*x2*b45 + x11 =L= 0;

e31.. -50*x3*b46 + x12 =L= 0;

e32.. -15*x1*b38 + x4 =G= 0;

e33.. -15*x2*b39 + x5 =G= 0;

e34.. -15*x3*b40 + x6 =G= 0;

e35.. -15*x1*b41 + x7 =G= 0;

e36.. -15*x2*b42 + x8 =G= 0;

e37.. -15*x3*b43 + x9 =G= 0;

e38.. -7*x1*b44 + x10 =G= 0;

e39.. -7*x2*b45 + x11 =G= 0;

e40.. -7*x3*b46 + x12 =G= 0;

e41..    x1 - 40*b38 - 40*b41 - 40*b44 =L= 0;

e42..    x2 - 40*b39 - 40*b42 - 40*b45 =L= 0;

e43..    x3 - 40*b40 - 40*b43 - 40*b46 =L= 0;

e44..    x1 - b38 - b41 - b44 =G= 0;

e45..    x2 - b39 - b42 - b45 =G= 0;

e46..    x3 - b40 - b43 - b46 =G= 0;

e47..    x35 - 10*b38 - 10*b39 - 10*b40 - 20*b41 - 20*b42 - 20*b43 - 30*b44
       - 30*b45 - 30*b46 =E= 0;

e48.. -0.3271*(sqrt(x22) + sqrt(x23) + sqrt(x24)) + x34 =E= 0;

e49.. -(0.0515901369863014*x25*(x1 + 0.4*b38 + 0.2*b41 + 0.1*b44) + 
      0.0515901369863014*x26*(x2 + 0.4*b39 + 0.2*b42 + 0.1*b45) + 
      0.0515901369863014*x27*(x3 + 0.4*b40 + 0.2*b43 + 0.1*b46) + 
      0.0528586301369863*x28*(x1 + 0.4*b38 + 0.2*b41 + 0.1*b44) + 
      0.0528586301369863*x29*(x2 + 0.4*b39 + 0.2*b42 + 0.1*b45) + 
      0.0528586301369863*x30*(x3 + 0.4*b40 + 0.2*b43 + 0.1*b46) + 
      0.0541268493150685*x31*(x1 + 0.4*b38 + 0.2*b41 + 0.1*b44) + 
      0.0541268493150685*x32*(x2 + 0.4*b39 + 0.2*b42 + 0.1*b45) + 
      0.0541268493150685*x33*(x3 + 0.4*b40 + 0.2*b43 + 0.1*b46)) + x36 =E= 0;

e50..  - 0.5*x13 - 0.5*x14 + x25 =E= -643;

e51..  - 0.5*x14 - 0.5*x15 + x26 =E= -643;

e52..  - 0.5*x13 - 0.5*x15 + x27 =E= -643;

e53..  - 0.5*x16 - 0.5*x17 + x28 =E= -536;

e54..  - 0.5*x17 - 0.5*x18 + x29 =E= -536;

e55..  - 0.5*x16 - 0.5*x18 + x30 =E= -536;

e56..  - 0.5*x19 - 0.5*x20 + x31 =E= -214;

e57..  - 0.5*x20 - 0.5*x21 + x32 =E= -214;

e58..  - 0.5*x19 - 0.5*x21 + x33 =E= -214;

e59.. (24.8739726027397*objvar - x34)*x37 - x35 - x36 =E= 0;

e60..  - x1 + 40*b38 + 40*b41 + 40*b44 =G= 0;

e61..  - x2 + 40*b39 + 40*b42 + 40*b45 =G= 0;

e62..  - x3 + 40*b40 + 40*b43 + 40*b46 =G= 0;

e63..  - b38 - b39 =G= -1;

e64..  - b39 - b40 =G= -1;

e65..  - b40 =G= -1;

e66..  - b41 - b42 =G= -1;

e67..  - b42 - b43 =G= -1;

e68..  - b43 =G= -1;

e69..  - b44 - b45 =G= -1;

e70..  - b45 - b46 =G= -1;

e71..  - b46 =G= -1;

e72..    b38 - b39 + b41 - b42 + b44 - b45 =G= 0;

e73..    b39 - b40 + b42 - b43 + b45 - b46 =G= 0;

e74..    b40 + b43 + b46 =G= 0;

* set non-default bounds
x13.fx = 643;
x14.lo = 643; x14.up = 4018.36;
x15.lo = 643; x15.up = 4018.36;
x16.lo = 536; x16.up = 3348.63;
x17.lo = 536; x17.up = 3348.63;
x18.lo = 536; x18.up = 3348.63;
x19.lo = 214; x19.up = 1339.45;
x20.lo = 214; x20.up = 1339.45;
x21.lo = 214; x21.up = 1339.45;
x22.lo = 643; x22.up = 4018.36;
x23.lo = 536; x23.up = 3348.63;
x24.lo = 214; x24.up = 1339.45;
b38.fx = 1;
b39.fx = 0;
b41.fx = 0;
b44.fx = 0;

* set non-default levels
b40.l = 0.550375356;
b42.l = 0.292212117;
b43.l = 0.224052867;
b45.l = 0.856270347;
b46.l = 0.067113723;

Model m / all /;

m.limrow=0; m.limcol=0;
m.tolproj=0.0;

$if NOT '%gams.u1%' == '' $include '%gams.u1%'

$if not set MINLP $set MINLP MINLP
Solve m using %MINLP% minimizing objvar;


Last updated: 2024-03-25 Git hash: 1dae024f
Imprint / Privacy Policy / License: CC-BY 4.0