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
Primal Bounds
89.08584000 p1 ( gdx sol )
(infeas: 1e-12)
Dual Bounds
89.08583999 (COUENNE)
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
Infeasibility of initial point 1.798e+04
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
*         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: 2018-09-14 Git hash: ac5a5314
Imprint / Privacy Policy