MINLPLib
A Library of Mixed-Integer and Continuous Nonlinear Programming Instances
Home // Instances // Documentation // Download // Statistics
Instance gastransnlp
The problem of distributing gas through a network of pipelines is formulated as a cost minimization subject to nonlinear flow-pressure relations, material balances, and pressure bounds. The Belgian gas network is used as an example.
| Formatsⓘ | ams gms osil py |
| Primal Bounds (infeas ≤ 1e-08)ⓘ | |
| Other points (infeas > 1e-08)ⓘ | |
| Dual Boundsⓘ | 89.08583999 (COUENNE) 89.08583991 (LINDO) 89.08584000 (SCIP) |
| Referencesⓘ | de Wolf, Daniel and Smeers, Yves, The Gas Transmission Problem Solved by and Extension of the Simplex Algorithm, Management Science, 46:11, 2000, 1454-1465. |
| Sourceⓘ | GAMS Model Library model gastrans, straight-forward NLP formulation |
| Applicationⓘ | Gas Transmission |
| Added to libraryⓘ | 18 Aug 2014 |
| Problem typeⓘ | NLP |
| #Variablesⓘ | 64 |
| #Binary Variablesⓘ | 0 |
| #Integer Variablesⓘ | 0 |
| #Nonlinear Variablesⓘ | 24 |
| #Nonlinear Binary Variablesⓘ | 0 |
| #Nonlinear Integer Variablesⓘ | 0 |
| Objective Senseⓘ | min |
| Objective typeⓘ | linear |
| Objective curvatureⓘ | linear |
| #Nonzeros in Objectiveⓘ | 5 |
| #Nonlinear Nonzeros in Objectiveⓘ | 0 |
| #Constraintsⓘ | 44 |
| #Linear Constraintsⓘ | 20 |
| #Quadratic Constraintsⓘ | 3 |
| #Polynomial Constraintsⓘ | 0 |
| #Signomial Constraintsⓘ | 0 |
| #General Nonlinear Constraintsⓘ | 21 |
| Operands in Gen. Nonlin. Functionsⓘ | signpower |
| Constraints curvatureⓘ | indefinite |
| #Nonzeros in Jacobianⓘ | 140 |
| #Nonlinear Nonzeros in Jacobianⓘ | 24 |
| #Nonzeros in (Upper-Left) Hessian of Lagrangianⓘ | 24 |
| #Nonzeros in Diagonal of Hessian of Lagrangianⓘ | 24 |
| #Blocks in Hessian of Lagrangianⓘ | 24 |
| Minimal blocksize in Hessian of Lagrangianⓘ | 1 |
| Maximal blocksize in Hessian of Lagrangianⓘ | 1 |
| Average blocksize in Hessian of Lagrangianⓘ | 1.0 |
| #Semicontinuitiesⓘ | 0 |
| #Nonlinear Semicontinuitiesⓘ | 0 |
| #SOS type 1ⓘ | 0 |
| #SOS type 2ⓘ | 0 |
| Minimal coefficientⓘ | 1.6883e-03 |
| Maximal coefficientⓘ | 8.9908e+00 |
| Infeasibility of initial pointⓘ | 1.798e+04 |
| Sparsity Jacobianⓘ | ![]() |
| Sparsity Hessian of Lagrangianⓘ | ![]() |
$offlisting
*
* Equation counts
* Total E G L N X C B
* 45 42 3 0 0 0 0 0
*
* Variable counts
* x b i s1s s2s sc si
* Total cont binary integer sos1 sos2 scont sint
* 65 65 0 0 0 0 0 0
* FX 5
*
* Nonzero counts
* Total const NL DLL
* 146 122 24 0
*
* Solve m using NLP 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,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,x63,x64,objvar;
Positive Variables x10,x11,x22,x25,x31,x34,x38,x45,x47,x48,x51,x54,x55,x56
,x58,x59,x61,x62,x63,x64;
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;
e1.. - x17 + x18 - x25 =E= 0;
e2.. - x6 + x7 - x26 =E= 0;
e3.. - x23 + x24 - x27 =E= 0;
e4.. - x10 - x11 + x12 + x13 - x28 =E= 0;
e5.. - x20 - x29 =E= 0;
e6.. - x3 - x4 + x5 - x30 =E= 0;
e7.. - x1 - x2 + x3 + x4 - x31 =E= 0;
e8.. - x7 + x8 - x32 =E= 0;
e9.. - x12 - x13 + x14 + x15 - x33 =E= 0;
e10.. x6 - x34 =E= 0;
e11.. - x19 + x20 - x35 =E= 0;
e12.. - x16 + x17 - x36 =E= 0;
e13.. - x24 - x37 =E= 0;
e14.. - x9 - x18 + x19 - x38 =E= 0;
e15.. - x22 + x23 - x39 =E= 0;
e16.. x10 + x11 - x40 =E= 0;
e17.. - x21 + x22 - x41 =E= 0;
e18.. - x14 - x15 + x16 + x21 - x42 =E= 0;
e19.. x1 + x2 - x43 =E= 0;
e20.. - x5 - x8 + x9 - x44 =E= 0;
e21.. SignPower(x1,2) + 8.99076279639866*x51 - 8.99076279639866*x63 =E= 0;
e22.. SignPower(x2,2) + 8.99076279639866*x51 - 8.99076279639866*x63 =E= 0;
e23.. SignPower(x3,2) + 5.99384186426577*x50 - 5.99384186426577*x51 =E= 0;
e24.. SignPower(x4,2) + 5.99384186426577*x50 - 5.99384186426577*x51 =E= 0;
e25.. SignPower(x5,2) - 1.38319427636902*x50 + 1.38319427636902*x64 =E= 0;
e26.. SignPower(x6,2) + 0.0993769948466698*x46 - 0.0993769948466698*x54 =E= 0;
e27.. SignPower(x7,2) - 0.147352095807131*x46 + 0.147352095807131*x52 =E= 0;
e28.. SignPower(x8,2) - 0.224905830442463*x52 + 0.224905830442463*x64 =E= 0;
e29.. SignPower(x9,2) + 0.653873657919902*x58 - 0.653873657919902*x64 =E= 0;
e30.. SignPower(x12,2) - 1.79815255927973*x48 + 1.79815255927973*x53 =E= 0;
e31.. SignPower(x13,2) - 0.0265962529480588*x48 + 0.0265962529480588*x53 =E= 0;
e32.. SignPower(x14,2) - 1.43852204742379*x53 + 1.43852204742379*x62 =E= 0;
e33.. SignPower(x15,2) - 0.021277002358447*x53 + 0.021277002358447*x62 =E= 0;
e34.. SignPower(x16,2) + 0.856263123466539*x56 - 0.856263123466539*x62 =E= 0;
e35.. SignPower(x17,2) + 0.899076279639866*x45 - 0.899076279639866*x56 =E= 0;
e36.. SignPower(x18,2) - 7.19261023711893*x45 + 7.19261023711893*x58 =E= 0;
e37.. SignPower(x19,2) + 3.59630511855946*x55 - 3.59630511855946*x58 =E= 0;
e38.. SignPower(x20,2) + 1.43852204742379*x49 - 1.43852204742379*x55 =E= 0;
e39.. SignPower(x21,2) + 0.0509935163731392*x61 - 0.0509935163731392*x62 =E= 0;
e40.. SignPower(x23,2) + 0.0016882734118691*x47 - 0.0016882734118691*x59 =E= 0;
e41.. SignPower(x24,2) - 0.0275751323938619*x47 + 0.0275751323938619*x57 =E= 0;
e42.. -sqr(x10) + 7.19261023711893*x48 - 7.19261023711893*x60 =G= 0;
e43.. -sqr(x11) + 0.106385011792235*x48 - 0.106385011792235*x60 =G= 0;
e44.. -sqr(x22) + 0.0063634920908912*x59 - 0.0063634920908912*x61 =G= 0;
e45.. - 2.28*x31 - 2.28*x34 - 1.68*x38 - 1.68*x40 - 2.28*x43 + objvar =E= 0;
* set non-default bounds
x25.up = 1.2;
x26.up = -4.034;
x27.up = -0.222;
x28.fx = 0;
x29.up = -15.616;
x30.up = -3.918;
x31.up = 8.4;
x32.up = -5.256;
x33.up = -6.385;
x34.up = 4.8;
x35.up = -6.848;
x36.up = -2.12;
x37.up = -1.919;
x38.up = 0.96;
x39.fx = 0;
x40.lo = 20.344; x40.up = 22.012;
x41.fx = 0;
x42.fx = 0;
x43.lo = 8.87; x43.up = 11.594;
x44.fx = 0;
x45.up = 4382.44;
x46.lo = 900; x46.up = 6400;
x47.up = 4382.44;
x48.up = 4382.44;
x49.lo = 2500; x49.up = 4382.44;
x50.lo = 900; x50.up = 6400;
x51.up = 5929;
x52.lo = 900; x52.up = 6400;
x53.lo = 900; x53.up = 4382.44;
x54.up = 5929;
x55.up = 4382.44;
x56.up = 4382.44;
x57.lo = 625; x57.up = 4382.44;
x58.up = 4382.44;
x59.up = 3969;
x60.lo = 2500; x60.up = 4382.44;
x61.up = 4382.44;
x62.up = 4382.44;
x63.up = 5929;
x64.up = 6400;
* set non-default levels
x1.l = -0.656505736;
x2.l = 0.686533416;
x3.l = 0.100750712;
x4.l = -0.397724192;
x5.l = -0.415575766;
x6.l = -0.551894266;
x7.l = -0.300338992;
x8.l = 0.712540694;
x9.l = -0.865772554;
x10.l = 0.000421337999999993;
x11.l = 0.996235254;
x12.l = 0.157466756;
x13.l = 0.982266078;
x14.l = 0.524500934;
x15.l = -0.738615034;
x16.l = 0.279437518;
x17.l = -0.680964272;
x18.l = -0.499838934;
x19.l = 0.337857218;
x20.l = -0.129287238;
x21.l = -0.280599468;
x23.l = -0.73701682;
x24.l = -0.699796424;
Model m / all /;
m.limrow=0; m.limcol=0;
m.tolproj=0.0;
$if NOT '%gams.u1%' == '' $include '%gams.u1%'
$if not set NLP $set NLP NLP
Solve m using %NLP% minimizing objvar;
Last updated: 2025-08-07 Git hash: e62cedfc

