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 abspower constraints in SCIP 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: http://www.gams.com/modlib/libhtml/gastrans.htm

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 65 of file gastrans.c.

Referenced by addBoundCutSepa(), addNodesInformation(), applyRepair(), buildsolgraph(), checkLeavesBelowIncumbent(), COLORprobGetComplementaryGraph(), COLORprobSetUpArrayOfCons(), compEdges(), compSubcliques(), computeBranchingPriorities(), computeDegConsTree(), computeMinDistance(), computeNewSols(), computeNextAdjacency(), computeSteinerTree(), computeSteinerTreeDijk(), computeSteinerTreeVnoi(), createClique(), createConsStoreGraphAtRoot(), createConstraints(), createDegreeConstraints(), createMIP(), createNewSol(), createVariables(), depthFirstSearch(), dualascent_init(), dualCostIsValid(), dualcostVarfixing(), ensureSuccessorsSize(), exprgraphMoveNode(), fillGraphByColoredCoefficients(), findCumulativeConss(), findDaRoots(), findPrecedenceConss(), findSubtour(), generateBoundInequalityFromSOS1Nodes(), getcloseterms(), getlecloseterms(), getNViolatedEdges(), getRSD(), globalrelabel(), graph_get2next(), graph_get3next(), graph_get4next(), graph_get4nextTTerms(), graph_get_csr(), graph_grid_create(), graph_init_history(), graph_mincut_exec(), graph_mincut_exit(), graph_obstgrid_create(), graph_pack(), graph_path_exec(), graph_path_execX(), graph_path_invroot(), graph_path_st(), graph_path_st_pcmw(), graph_path_st_pcmw_extend(), graph_path_st_pcmw_full(), graph_path_st_rmw(), graph_path_st_rpc(), graph_pc_2mw(), graph_pc_2org(), graph_pc_2pc(), graph_pc_2rmw(), graph_pc_2rpc(), graph_pc_2trans(), graph_pc_getRsap(), graph_pc_getSap(), graph_pc_getSapShift(), graph_sol_markPcancestors(), graph_sol_reroot(), graph_sol_valid(), graph_termsReachable(), graph_trail_arr(), graph_valid(), graph_voronoiMw(), graph_voronoiWithDist(), graph_voronoiWithRadius(), graph_voronoiWithRadiusMw(), greedyInitialColoring(), greedyStableSet(), hasUncoloredNode(), index2nodes(), initialise(), initReceivedSubproblem(), level0(), level0save(), nodes2index(), pertubateEdgeCosts(), presolveCons(), readCol(), reduce_ans(), reduce_ansAdv(), reduce_ansAdv2(), reduce_bd34(), reduce_bdr(), reduce_bound(), reduce_boundHop(), reduce_boundHopR(), reduce_boundHopRc(), reduce_boundMw(), reduce_boundPrune(), reduce_chain2(), reduce_check3Tree(), reduce_cnsAdv(), reduce_da(), reduce_daPcMw(), reduce_daSlackPrune(), reduce_daSlackPruneMw(), reduce_extendedEdge(), reduce_getSd(), reduce_getSdPcMw(), reduce_ledge(), reduce_nnp(), reduce_npv(), reduce_nts(), reduce_nv(), reduce_nvAdv(), reduce_rpt(), reduce_sd(), reduce_sdPc(), reduce_sdsp(), reduce_sdspSap(), reduce_simple(), reduce_simple_hc(), reduce_simple_mw(), reduce_simple_pc(), reduce_simple_sap(), reduce_sl(), reduceCheckEdge(), reduceHc(), reduceMw(), reduceNw(), reducePc(), reducePcMw(), reduceRedcostExtended(), reduceSap(), reduceSPG(), reduceStp(), reduceWithEdgeFixingBounds(), reduceWithNodeFixingBounds(), reduceWithNodeReplaceBounds(), reinitialise(), reopttreeGetNNodes(), runTabuCol(), scale_coords(), SCIP_DECL_BRANCHEXECLP(), SCIP_DECL_CONCSOLVEREXEC(), SCIP_DECL_CONSACTIVE(), SCIP_DECL_CONSPROP(), SCIP_DECL_CONSSEPALP(), SCIP_DECL_HEUREXEC(), SCIP_DECL_NODESELSELECT(), SCIP_DECL_PRICERFARKAS(), SCIP_DECL_PRICERREDCOST(), SCIP_DECL_READERREAD(), SCIP_DECL_READERWRITE(), SCIPaddNNodes(), SCIPbtPrintGml(), SCIPcreateProbColoring(), SCIPdigraphAddArc(), SCIPdigraphAddArcSafe(), SCIPdigraphComputeDirectedComponents(), SCIPdigraphCopy(), SCIPdigraphCreate(), SCIPdigraphGetNodeData(), SCIPdigraphGetNSuccessors(), SCIPdigraphGetSuccessors(), SCIPdigraphGetSuccessorsData(), SCIPdigraphResize(), SCIPdigraphSetNodeData(), SCIPdigraphSetNSuccessors(), SCIPnodeGetAncestorBranchingPath(), SCIPprintNodeRootPath(), SCIPprobdataCreate(), SCIPrealHashCode(), SCIPsolveCIP(), SCIPStpBranchruleInitNodeState(), SCIPStpDualAscent(), SCIPStpDualAscentPcMw(), SCIPStpHeurAscendPruneRun(), SCIPStpHeurLocalExtendPcMw(), SCIPStpHeurLocalRun(), SCIPStpHeurPruneRun(), SCIPStpHeurPruneUpdateSols(), SCIPStpHeurRecExclude(), SCIPStpHeurRecRun(), SCIPStpHeurSlackPruneRun(), SCIPStpHeurSlackPruneRunPcMw(), SCIPStpHeurTMBuildTree(), SCIPStpHeurTMBuildTreeDc(), SCIPStpHeurTMBuildTreePcMw(), SCIPStpHeurTMCompStarts(), SCIPStpHeurTMPrune(), SCIPStpHeurTMPrunePc(), SCIPStpHeurTMRun(), SCIPStpHeurTMRunLP(), SCIPtreeGetAvgLowerbound(), sddeltable(), selectBestNode(), selectBranchingVertexByDegree(), selectBranchingVertexByLp(), selectBranchingVertexByLp2Flow(), selectBranchingVertexBySol(), sep_2cut(), setNodeSolArray(), setupProblem(), setVnoiDistances(), sortGenVBounds(), sortNodes(), SYMcomputeSymmetryGenerators(), tarjan(), TCLIQUE_ISEDGE(), TCLIQUE_NEWSOL(), TCLIQUE_SELECTADJNODES(), tcliqueAddEdge(), tcliqueFlush(), tcliqueGetFirstAdjedge(), tcliqueGetLastAdjedge(), tcliquegraphConstructCliqueTable(), tcliqueMaxClique(), transitiveClosure(), treeNodesToQueue(), updateEdgeFixingBounds(), updateFixingBounds(), updateNodeFixingBounds(), updateNodeReplaceBounds(), updateSolNodeArray(), utdist(), wrapperRins(), and tsp::ReaderTSP::~ReaderTSP().

◆ narcs

#define narcs   24

number of arcs

Definition at line 68 of file gastrans.c.

Referenced by addGLSCliques(), createMIP(), SCIPdigraphGetNArcs(), separateGLS(), and setupProblem().

◆ infinity

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 313 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 356 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:71

data of nodes

Definition at line 74 of file gastrans.c.

Referenced by addBranchingComplementaritiesSOS1(), analyzeConflictOverload(), checkConComponentsVarbound(), checkOverloadViaThetaTree(), collectThetaSubtree(), computeEnergyContribution(), deleteLambdaLeaf(), detectVarboundSOS1(), findResponsibleLambdaLeafTraceEnergy(), findResponsibleLambdaLeafTraceEnvelop(), freeConflictgraph(), freeNodedata(), generateBoundInequalityFromSOS1Nodes(), getBoundConsFromVertices(), inferboundsEdgeFinding(), initConflictgraph(), initImplGraphSOS1(), insertThetanode(), moveNodeToLambda(), nodeGetSolvalVarboundLbSOS1(), nodeGetSolvalVarboundUbSOS1(), passConComponentVarbound(), propVariableNonzero(), SCIPexprgraphGetSeparableTrees(), SCIPexprgraphGetSumTrees(), SCIPexprgraphGetSumTreesNSummands(), sepaImplBoundCutsSOS1(), traceLambdaEnergy(), traceLambdaEnvelop(), traceThetaEnvelop(), updateEnvelop(), 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 FALSE
Definition: def.h:72
#define TRUE
Definition: def.h:71

data of arcs

Definition at line 100 of file gastrans.c.

◆ gastemp

const SCIP_Real gastemp = 281.15
static

gas temperatur (K)

Definition at line 130 of file gastrans.c.

Referenced by setupProblem().

◆ rugosity

const SCIP_Real rugosity = 0.05
static

absolute rugosity (mm)

Definition at line 133 of file gastrans.c.

Referenced by setupProblem().

◆ density

const SCIP_Real density = 0.616
static

density of gas relative to air

Definition at line 136 of file gastrans.c.

Referenced by setupProblem(), and tcliquegraphConstructCliqueTable().

◆ compressibility

const SCIP_Real compressibility = 0.8
static

compressibility factor

Definition at line 139 of file gastrans.c.

Referenced by setupProblem().