Scippy

SCIP

Solving Constraint Integer Programs

gastrans.c File Reference

Detailed Description

Simple Gas Transportation Model.

Author
Stefan Vigerske

This example shows how to setup nonlinear constraints with signpower-expression when using SCIP as callable library. The example implements a model for the distribution of gas through a network of pipelines, which 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.

The model is taken from the GAMS model library: https://www.gams.com/latest/gamslib_ml/libhtml/gamslib_gastrans.html

Original model source:

D. de Wolf and Y. Smeers
The Gas Transmission Problem Solved by and Extension of the Simplex Algorithm
Management Science 46, 11 (2000), 1454-1465

Definition in file gastrans.c.

#include <stdio.h>
#include <math.h>
#include "scip/scip.h"
#include "scip/scipdefplugins.h"

Go to the source code of this file.

Data Structures

struct  NodeData
 
struct  ArcData
 

Macros

#define nnodes   20
 
#define narcs   24
 
#define infinity   1e+20
 

Typedefs

typedef struct NodeData NodeData
 
typedef struct ArcData ArcData
 

Functions

static SCIP_RETCODE setupProblem (SCIP *scip)
 
static SCIP_RETCODE runGastrans (void)
 
int main (int argc, char **argv)
 

Variables

static const NodeData nodedata []
 
static const ArcData arcdata []
 
static const SCIP_Real gastemp = 281.15
 
static const SCIP_Real rugosity = 0.05
 
static const SCIP_Real density = 0.616
 
static const SCIP_Real compressibility = 0.8
 

Macro Definition Documentation

◆ nnodes

#define nnodes   20

number of nodes (towns)

Definition at line 74 of file gastrans.c.

◆ narcs

#define narcs   24

number of arcs

Definition at line 77 of file gastrans.c.

◆ infinity

#define infinity   1e+20

value we use to represent infinity

Definition at line 80 of file gastrans.c.

Typedef Documentation

◆ NodeData

typedef struct NodeData NodeData

node data structure

◆ ArcData

typedef struct ArcData ArcData

arc data structure

Function Documentation

◆ setupProblem()

◆ runGastrans()

static SCIP_RETCODE runGastrans ( void  )
static

runs gas transportation example

Definition at line 331 of file gastrans.c.

References FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPcreate(), SCIPfree(), SCIPincludeDefaultPlugins(), SCIPinfoMessage(), SCIPpresolve(), SCIPprintOrigProblem(), SCIPsolve(), and setupProblem().

Referenced by main().

◆ main()

int main ( int  argc,
char **  argv 
)

main method starting SCIP

Parameters
argcnumber of arguments from the shell
argvarray of shell arguments

Definition at line 374 of file gastrans.c.

References runGastrans(), SCIP_OKAY, and SCIPprintError().

Variable Documentation

◆ nodedata

const NodeData nodedata[]
static
Initial value:
=
{
{"Anderlues", 0.0, 1.2, 0.0, 66.2, 0.0 },
{"Antwerpen", -infinity, -4.034, 30.0, 80.0, 0.0 },
{"Arlon", -infinity, -0.222, 0.0, 66.2, 0.0 },
{"Berneau", 0.0, 0.0, 0.0, 66.2, 0.0 },
{"Blaregnies", -infinity, -15.616, 50.0, 66.2, 0.0 },
{"Brugge", -infinity, -3.918, 30.0, 80.0, 0.0 },
{"Dudzele", 0.0, 8.4, 0.0, 77.0, 2.28 },
{"Gent", -infinity, -5.256, 30.0, 80.0, 0.0 },
{"Liege", -infinity, -6.385, 30.0, 66.2, 0.0 },
{"Loenhout", 0.0, 4.8, 0.0, 77.0, 2.28 },
{"Mons", -infinity, -6.848, 0.0, 66.2, 0.0 },
{"Namur", -infinity, -2.120, 0.0, 66.2, 0.0 },
{"Petange", -infinity, -1.919, 25.0, 66.2, 0.0 },
{"Peronnes", 0.0, 0.96, 0.0, 66.2, 1.68 },
{"Sinsin", 0.0, 0.0, 0.0, 63.0, 0.0 },
{"Voeren", 20.344, 22.012, 50.0, 66.2, 1.68 },
{"Wanze", 0.0, 0.0, 0.0, 66.2, 0.0 },
{"Warnand", 0.0, 0.0, 0.0, 66.2, 0.0 },
{"Zeebrugge", 8.87, 11.594, 0.0, 77.0, 2.28 },
{"Zomergem", 0.0, 0.0, 0.0, 80.0, 0.0 }
}
#define infinity
Definition: gastrans.c:80

data of nodes

Definition at line 83 of file gastrans.c.

Referenced by addBranchingComplementaritiesSOS1(), analyzeConflictOverload(), checkConComponentsVarbound(), checkOverloadViaThetaTree(), collectThetaSubtree(), computeEnergyContribution(), deleteLambdaLeaf(), detectVarboundSOS1(), findResponsibleLambdaLeafTraceEnergy(), findResponsibleLambdaLeafTraceEnvelop(), freeConflictgraph(), freeImplGraphSOS1(), generateBoundInequalityFromSOS1Nodes(), getBoundConsFromVertices(), inferboundsEdgeFinding(), initConflictgraph(), initImplGraphSOS1(), insertThetanode(), moveNodeToLambda(), nodeGetSolvalVarboundLbSOS1(), nodeGetSolvalVarboundUbSOS1(), passConComponentVarbound(), propVariableNonzero(), SCIPnodeGetVarSOS1(), sepaImplBoundCutsSOS1(), setupProblem(), traceLambdaEnergy(), traceLambdaEnvelop(), traceThetaEnvelop(), updateEnvelope(), and updateKeyOnTrace().

◆ arcdata

const ArcData arcdata[]
static
Initial value:
=
{
{ 18, 6, 890.0, 4.0, FALSE },
{ 18, 6, 890.0, 4.0, FALSE },
{ 6, 5, 890.0, 6.0, FALSE },
{ 6, 5, 890.0, 6.0, FALSE },
{ 5, 19, 890.0, 26.0, FALSE },
{ 9, 1, 590.1, 43.0, FALSE },
{ 1, 7, 590.1, 29.0, FALSE },
{ 7, 19, 590.1, 19.0, FALSE },
{ 19, 13, 890.0, 55.0, FALSE },
{ 15, 3, 890.0, 5.0, TRUE },
{ 15, 3, 395.0, 5.0, TRUE },
{ 3, 8, 890.0, 20.0, FALSE },
{ 3, 8, 395.0, 20.0, FALSE },
{ 8, 17, 890.0, 25.0, FALSE },
{ 8, 17, 395.0, 25.0, FALSE },
{ 17, 11, 890.0, 42.0, FALSE },
{ 11, 0, 890.0, 40.0, FALSE },
{ 0, 13, 890.0, 5.0, FALSE },
{ 13, 10, 890.0, 10.0, FALSE },
{ 10, 4, 890.0, 25.0, FALSE },
{ 17, 16, 395.5, 10.5, FALSE },
{ 16, 14, 315.5, 26.0, TRUE },
{ 14, 2, 315.5, 98.0, FALSE },
{ 2, 12, 315.5, 6.0, FALSE }
}
#define TRUE
Definition: def.h:93
#define FALSE
Definition: def.h:94

data of arcs

Definition at line 109 of file gastrans.c.

Referenced by setupProblem().

◆ gastemp

const SCIP_Real gastemp = 281.15
static

gas temperatur (K)

Definition at line 139 of file gastrans.c.

Referenced by setupProblem().

◆ rugosity

const SCIP_Real rugosity = 0.05
static

absolute rugosity (mm)

Definition at line 142 of file gastrans.c.

Referenced by setupProblem().

◆ density

const SCIP_Real density = 0.616
static

density of gas relative to air

Definition at line 145 of file gastrans.c.

Referenced by scoring(), setupProblem(), and tcliquegraphConstructCliqueTable().

◆ compressibility

const SCIP_Real compressibility = 0.8
static

compressibility factor

Definition at line 148 of file gastrans.c.

Referenced by setupProblem().