MINLPLib
A Library of Mixed-Integer and Continuous Nonlinear Programming Instances
Home // Instances // Documentation // Download // Statistics
Instance kport20
This problem computes minimal cost solutions satisfying the demand of pre-given product portfolios. It determines the number and size of reactors and gives a schedule of how may batches of each product run on each reactor.
| Formatsⓘ | ams gms mod nl osil py |
| Primal Bounds (infeas ≤ 1e-08)ⓘ | |
| Other points (infeas > 1e-08)ⓘ | |
| Dual Boundsⓘ | 31.80929785 (ANTIGONE) 31.80929814 (BARON) 29.55441920 (COUENNE) 28.95689468 (LINDO) 31.80929819 (SCIP) 27.92226720 (SHOT) |
| Referencesⓘ | Kallrath, Josef, Exact Computation of Global Minima of a Nonconvex Portfolio Optimization Problem. Chapter 13 in Floudas, C A and Pardalos, Panos M, Eds, Frontiers in Global Optimization, Kluwer Academic Publishers, 2004, 237-254. |
| Sourceⓘ | first scenario of GAMS Model Library model kport |
| Applicationⓘ | Portfolio Optimization |
| Added to libraryⓘ | 28 Feb 2014 |
| Problem typeⓘ | MINLP |
| #Variablesⓘ | 101 |
| #Binary Variablesⓘ | 2 |
| #Integer Variablesⓘ | 38 |
| #Nonlinear Variablesⓘ | 78 |
| #Nonlinear Binary Variablesⓘ | 0 |
| #Nonlinear Integer Variablesⓘ | 38 |
| Objective Senseⓘ | min |
| Objective typeⓘ | linear |
| Objective curvatureⓘ | linear |
| #Nonzeros in Objectiveⓘ | 2 |
| #Nonlinear Nonzeros in Objectiveⓘ | 0 |
| #Constraintsⓘ | 27 |
| #Linear Constraintsⓘ | 7 |
| #Quadratic Constraintsⓘ | 0 |
| #Polynomial Constraintsⓘ | 19 |
| #Signomial Constraintsⓘ | 1 |
| #General Nonlinear Constraintsⓘ | 0 |
| Operands in Gen. Nonlin. Functionsⓘ | |
| Constraints curvatureⓘ | indefinite |
| #Nonzeros in Jacobianⓘ | 187 |
| #Nonlinear Nonzeros in Jacobianⓘ | 116 |
| #Nonzeros in (Upper-Left) Hessian of Lagrangianⓘ | 230 |
| #Nonzeros in Diagonal of Hessian of Lagrangianⓘ | 2 |
| #Blocks in Hessian of Lagrangianⓘ | 2 |
| Minimal blocksize in Hessian of Lagrangianⓘ | 39 |
| Maximal blocksize in Hessian of Lagrangianⓘ | 39 |
| Average blocksize in Hessian of Lagrangianⓘ | 39.0 |
| #Semicontinuitiesⓘ | 0 |
| #Nonlinear Semicontinuitiesⓘ | 0 |
| #SOS type 1ⓘ | 0 |
| #SOS type 2ⓘ | 0 |
| Minimal coefficientⓘ | 3.8462e-04 |
| Maximal coefficientⓘ | 2.5000e+02 |
| Infeasibility of initial pointⓘ | 176.1 |
| Sparsity Jacobianⓘ | ![]() |
| Sparsity Hessian of Lagrangianⓘ | ![]() |
$offlisting
*
* Equation counts
* Total E G L N X C B
* 28 22 2 4 0 0 0 0
*
* Variable counts
* x b i s1s s2s sc si
* Total cont binary integer sos1 sos2 scont sint
* 102 62 2 38 0 0 0 0
* FX 0
*
* Nonzero counts
* Total const NL DLL
* 190 74 116 0
*
* Solve m using MINLP minimizing objvar;
Variables objvar,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,x38,x39,x40,x41,x42,x43,x44,x45,x46,x47,x48,x49,x50,x51,x52
,x53,x54,x55,x56,x57,x58,x59,x60,x61,x62,b63,b64,i65,i66,i67,i68,i69
,i70,i71,i72,i73,i74,i75,i76,i77,i78,i79,i80,i81,i82,i83,i84,i85,i86
,i87,i88,i89,i90,i91,i92,i93,i94,i95,i96,i97,i98,i99,i100,i101,i102;
Positive Variables x44,x45,x46,x47,x48,x49,x50,x51,x52,x53,x54,x55,x56,x57
,x58,x59,x60,x61,x62;
Binary Variables b63,b64;
Integer Variables i65,i66,i67,i68,i69,i70,i71,i72,i73,i74,i75,i76,i77,i78,i79
,i80,i81,i82,i83,i84,i85,i86,i87,i88,i89,i90,i91,i92,i93,i94,i95,i96
,i97,i98,i99,i100,i101,i102;
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;
e1.. objvar - x2 - x3 =E= 0;
e2.. x3 - 2.45*b63 - 2.45*b64 =E= 0;
e3.. -(0.98488578017961*x42**0.5 + 0.98488578017961*x43**0.5) + x2 =E= 0;
e4.. - 168*b63 + 6*i65 + 6*i66 + 6*i67 + 6*i68 + 6*i69 + 6*i70 + 6*i71 + 6*i72
+ 6*i73 + 6*i74 + 6*i75 + 6*i76 + 6*i77 + 6*i78 + 6*i79 + 6*i80 + 6*i81
+ 6*i82 + 6*i83 =L= 0;
e5.. - 168*b64 + 6*i84 + 6*i85 + 6*i86 + 6*i87 + 6*i88 + 6*i89 + 6*i90 + 6*i91
+ 6*i92 + 6*i93 + 6*i94 + 6*i95 + 6*i96 + 6*i97 + 6*i98 + 6*i99 + 6*i100
+ 6*i101 + 6*i102 =L= 0;
e6.. -0.000384615384615385*(i65*x4*x42 + i84*x23*x43) + x44 =E= -1;
e7.. -0.000434782608695652*(i66*x5*x42 + i85*x24*x43) + x45 =E= -1;
e8.. -0.000588235294117647*(i67*x6*x42 + i86*x25*x43) + x46 =E= -1;
e9.. -0.00188679245283019*(i68*x7*x42 + i87*x26*x43) + x47 =E= -1;
e10.. -0.00188679245283019*(i69*x8*x42 + i88*x27*x43) + x48 =E= -1;
e11.. -0.00357142857142857*(i70*x9*x42 + i89*x28*x43) + x49 =E= -1;
e12.. -0.004*(i71*x10*x42 + i90*x29*x43) + x50 =E= -1;
e13.. -0.00434782608695652*(i72*x11*x42 + i91*x30*x43) + x51 =E= -1;
e14.. -0.00625*(i73*x12*x42 + i92*x31*x43) + x52 =E= -1;
e15.. -0.0111111111111111*(i74*x13*x42 + i93*x32*x43) + x53 =E= -1;
e16.. -0.0142857142857143*(i75*x14*x42 + i94*x33*x43) + x54 =E= -1;
e17.. -0.00256410256410256*(i76*x15*x42 + i95*x34*x43) + x55 =E= -1;
e18.. -0.004*(i77*x16*x42 + i96*x35*x43) + x56 =E= -1;
e19.. -0.00625*(i78*x17*x42 + i97*x36*x43) + x57 =E= -1;
e20.. -0.01*(i79*x18*x42 + i98*x37*x43) + x58 =E= -1;
e21.. -0.0142857142857143*(i80*x19*x42 + i99*x38*x43) + x59 =E= -1;
e22.. -0.02*(i81*x20*x42 + i100*x39*x43) + x60 =E= -1;
e23.. -0.02*(i82*x21*x42 + i101*x40*x43) + x61 =E= -1;
e24.. -0.02*(i83*x22*x42 + i102*x41*x43) + x62 =E= -1;
e25.. x42 - 102.14*b63 =G= 0;
e26.. x43 - 176.07*b64 =G= 0;
e27.. x42 - 250*b63 =L= 0;
e28.. x43 - 250*b64 =L= 0;
* set non-default bounds
x4.lo = 0.4; x4.up = 1;
x5.lo = 0.4; x5.up = 1;
x6.lo = 0.4; x6.up = 1;
x7.lo = 0.4; x7.up = 1;
x8.lo = 0.4; x8.up = 1;
x9.lo = 0.4; x9.up = 1;
x10.lo = 0.4; x10.up = 1;
x11.lo = 0.4; x11.up = 1;
x12.lo = 0.4; x12.up = 1;
x13.lo = 0.4; x13.up = 1;
x14.lo = 0.4; x14.up = 1;
x15.lo = 0.4; x15.up = 1;
x16.lo = 0.4; x16.up = 1;
x17.lo = 0.4; x17.up = 1;
x18.lo = 0.4; x18.up = 1;
x19.lo = 0.4; x19.up = 1;
x20.lo = 0.4; x20.up = 1;
x21.lo = 0.4; x21.up = 1;
x22.lo = 0.4; x22.up = 1;
x23.lo = 0.4; x23.up = 1;
x24.lo = 0.4; x24.up = 1;
x25.lo = 0.4; x25.up = 1;
x26.lo = 0.4; x26.up = 1;
x27.lo = 0.4; x27.up = 1;
x28.lo = 0.4; x28.up = 1;
x29.lo = 0.4; x29.up = 1;
x30.lo = 0.4; x30.up = 1;
x31.lo = 0.4; x31.up = 1;
x32.lo = 0.4; x32.up = 1;
x33.lo = 0.4; x33.up = 1;
x34.lo = 0.4; x34.up = 1;
x35.lo = 0.4; x35.up = 1;
x36.lo = 0.4; x36.up = 1;
x37.lo = 0.4; x37.up = 1;
x38.lo = 0.4; x38.up = 1;
x39.lo = 0.4; x39.up = 1;
x40.lo = 0.4; x40.up = 1;
x41.lo = 0.4; x41.up = 1;
x42.lo = 102.14;
x43.lo = 176.07;
x44.up = 1;
x45.up = 1;
x46.up = 1;
x47.up = 1;
x48.up = 1;
x49.up = 1;
x50.up = 1;
x51.up = 1;
x52.up = 1;
x53.up = 1;
x54.up = 1;
x55.up = 1;
x56.up = 1;
x57.up = 1;
x58.up = 1;
x59.up = 1;
x60.up = 1;
x61.up = 1;
x62.up = 1;
i65.up = 28;
i66.up = 28;
i67.up = 28;
i68.up = 25;
i69.up = 25;
i70.up = 13;
i71.up = 12;
i72.up = 11;
i73.up = 7;
i74.up = 4;
i75.up = 3;
i76.up = 19;
i77.up = 12;
i78.up = 7;
i79.up = 4;
i80.up = 3;
i81.up = 2;
i82.up = 2;
i83.up = 2;
i84.up = 28;
i85.up = 28;
i86.up = 28;
i87.up = 15;
i88.up = 15;
i89.up = 7;
i90.up = 7;
i91.up = 6;
i92.up = 4;
i93.up = 2;
i94.up = 1;
i95.up = 11;
i96.up = 7;
i97.up = 4;
i98.up = 2;
i99.up = 1;
i100.up = 1;
i101.up = 1;
i102.up = 1;
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: 2025-08-07 Git hash: e62cedfc

