+ All Categories
Home > Documents > Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob...

Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob...

Date post: 03-Jul-2020
Category:
Upload: others
View: 3 times
Download: 0 times
Share this document with a friend
39
Using the OPTMODEL Procedure in SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR
Transcript
Page 1: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Using the OPTMODEL Procedure inSAS/OR to Solve Complex Problems

Rob Pratt, Senior R&D Manager, SAS/OR

Page 2: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Outline

1 Recent Features in PROC OPTMODEL

2 Graph Partitioning with Connectivity Constraints

2 / 36

Page 3: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Recent Features in PROC OPTMODEL

SUBMIT Block

Access the full SAS system without exiting OPTMODEL

Build novel dynamic algorithms using statistics, matrix manipulation,visualization, interaction, etc.

Syntax:

proc optmodel;...submit [arguments] [/ options];

[arbitrary SAS code]endsubmit;...

quit;

3 / 36

Page 4: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Recent Features in PROC OPTMODEL

Network Algorithms

PROC OPTNET: specialized procedurePROC OPTMODEL access using:

I SUBMIT blockI SOLVE WITH NETWORK (new in SAS/OR 13.1)

Connected components

Biconnected components andarticulation points

Maximal cliques

Cycles

Transitive closure

Linear assignment problem

Shortest path problem

Minimum-cost network flowproblem

Minimum spanning tree problem

Minimum cut problem

Traveling salesman problem

4 / 36

Page 5: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Recent Features in PROC OPTMODEL

Constraint Programming Solver

PROC CLP: specialized procedurePROC OPTMODEL access using:

I SUBMIT blockI SOLVE WITH CLP (new in SAS/OR 13.2)

Supported features and predicatesI Multiple solutionsI Strict inequalities (<, >) and disequality (6D)I ALLDIFFI ELEMENTI GCCI LEXICOI PACKI REIFY

5 / 36

Page 6: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Recent Features in PROC OPTMODEL

COFOR Loop

Uses multiple threads to execute SOLVE statements in parallel acrossiterations of loop

Syntax for serial FOR loop:

for {i in ISET} do;...solve ...;...

end;

Syntax for parallel COFOR loop:

cofor {i in ISET} do;...solve ...;...

end;

6 / 36

Page 7: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

Problem Description

Given undirected graph, node weights, positive integer k, targett 2 Œ`; u�

Partition node set into k subsets, each with total weight within Œ`; u�

Usual objective: minimize sum of edge weights between parts ofpartitionOur objective: find most “balanced” partition

I Minimize total absolute deviation of subset weight from target (L1 norm)I Minimize maximum absolute deviation of subset weight from target (L1

norm)

Connectivity constraints: each of the k resulting induced subgraphsmust be connected

7 / 36

Page 8: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

Motivation

Dennis E. Shasha, Doctor Ecco’s Cyberpuzzles (2002)I Political districting

Advanced Analytics and Optimization Services consulting engagementI Assigning service workers to customer regions

INFORMS OR Exchange posting (Jan. 2013)www.or-exchange.com/questions/7248/graph-partitioning-with-connectivity-constraints

I Forestry

8 / 36

Page 9: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

Map from Shasha (2002)

9 / 36

Page 10: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

Map Represented as Graph

10 / 36

Page 11: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

Node Weights (Populations)

11 / 36

Page 12: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

Feasible Solution for 14 Clusters, Bounds 12000˙ 100

12 / 36

Page 13: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

Solution Approaches

Compact MILP formulation with IsCapital[i] binary variables andnonnegative flow variables

Row generation, dynamically excluding disconnected subsets

Column generation, dynamically generating connected subsets

Column generation, statically generating all possible connected subsets

13 / 36

Page 14: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

Solution Approaches

Compact MILP formulation with IsCapital[i] binary variables andnonnegative flow variables

Row generation, dynamically excluding disconnected subsets

Column generation, dynamically generating connected subsets

Column generation, statically generating all possible connected subsets

13 / 36

Page 15: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

OPTMODEL Code: MILP Solver

Master MILP problem: Given all feasible subsets, solve cardinalityconstrained set partitioning problem

1 /* master problem: partition nodes into connected subsets,2 minimizing deviation from target */3 /* UseSubset[s] = 1 if subset s is used, 0 otherwise */4 var UseSubset {SUBSETS} binary;56 /* L_1 norm */7 num subset_population {s in SUBSETS} = sum {i in NODES_s[s]} p[i];8 num subset_deviation {s in SUBSETS} = abs(subset_population[s] - target);9 min Objective1 = sum {s in SUBSETS} subset_deviation[s] * UseSubset[s];

1011 /* each node belongs to exactly one subset */12 con Partition {i in NODES}:13 sum {s in SUBSETS: i in NODES_s[s]} UseSubset[s] = 1;1415 /* use exactly the allowed number of subsets */16 con Cardinality:17 sum {s in SUBSETS} UseSubset[s] = num_clusters;1819 problem Master include20 UseSubset Objective1 Partition Cardinality;

14 / 36

Page 16: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

Static Column Generation

1 Generate all possible connected subsets with weights close enough totarget

1 Relax connectivity and find all possible subsets2 Postprocess to filter out disconnected subsets

2 Solve cardinality constrained set partitioning master problem

15 / 36

Page 17: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

Static Column Generation

1 Generate all possible connected subsets with weights close enough totarget

1 Relax connectivity and find all possible subsets2 Postprocess to filter out disconnected subsets

2 Solve cardinality constrained set partitioning master problem

15 / 36

Page 18: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

Static Column Generation

1 Generate all possible connected subsets with weights close enough totarget

1 Relax connectivity and find all possible subsets2 Postprocess to filter out disconnected subsets

2 Solve cardinality constrained set partitioning master problem

15 / 36

Page 19: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

Features Used in PROC OPTMODEL

MILP solver to compute maximum subset size for each node (COFORloop)

Network solver (all-pairs shortest path) to generate valid cuts thatencourage connectivity

Constraint programming solver to generate subsets (multiple solutions)

Network solver (connected components) to check connectivity (COFORloop)

MILP solver to solve set partitioning problem

16 / 36

Page 20: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

Column Generation Subproblem

Given node populations pi and target population range Œ`; u�

Find all connected node subsets close to target population

Binary variable xi indicates whether node i appears in subset

` �P

i2N

pixi � u

Connectivity hard to impose directly, so relax (but do not ignore)

17 / 36

Page 21: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

Valid Cuts for Nodes Too Far Apart

mi : max # nodes among feasible subsets that contain node i

If shortest path distance dij � min.mi ; mj / then xi C xj � 1

18 / 36

Page 22: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

OPTMODEL Code: MILP Solver

1 /* maxnodes[i] = max number of nodes among feasible subsets that contain node i */2 num maxnodes {NODES};34 /* UseNode[i] = 1 if node i is used, 0 otherwise */5 var UseNode {NODES} binary;67 max NumUsed = sum {i in NODES} UseNode[i];89 con PopulationBounds:

10 target - deviation_ub11 <= sum {i in NODES} p[i] * UseNode[i]12 <= target + deviation_ub;1314 problem MaxNumUsed include15 UseNode NumUsed PopulationBounds;16 use problem MaxNumUsed;1718 put ’Finding max number of nodes among feasible subsets that contain node i...’;19 cofor {i in NODES} do;20 put i=;21 fix UseNode[i] = 1;22 solve with MILP / loglevel=0 logfreq=0;23 maxnodes[i] = round(NumUsed.sol);24 unfix UseNode;25 end;

19 / 36

Page 23: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

OPTMODEL Code: Network Solver

1 /* distance[i,j] = shortest path distance (number of edges) from i to j */2 num distance {NODES, NODES};3 /* num one {EDGES} = 1; */4 put ’Finding all-pairs shortest path distances...’;5 solve with NETWORK /6 links = (include=EDGES /*weight=one*/)7 shortpath8 out = (spweights=distance);

20 / 36

Page 24: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

Valid Cuts for Small-Population Nodes

If xi D 1 and pi < ` then xj D 1 for some neighbor j of i

xi �P

j 2Nixj

21 / 36

Page 25: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

Valid Cuts for Pairs of Small-Population Nodes

If xi D xj D 1 and pi C pj < ` then xk D 1 for some neighbor k inmoat around fi; j g

xi C xj � 1 �P

k2.Ni [Nj /nfi;j g xk

22 / 36

Page 26: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

Valid Cuts for Pairs of Small-Population Nodes

Can replace this cut with two stronger cuts

If (xi D 1 or xj D 1) and pi C pj < ` then xk D 1 for some neighbor k

in moat around fi; j g

xi �P

k2.Ni [Nj /nfi;j g

xk

xj �P

k2.Ni [Nj /nfi;j g

xk

23 / 36

Page 27: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

Valid Cuts for Sets with Small Population

More generally, if xi D 1 for some i 2 S � N such thatP

j 2S

pj < `

then xk D 1 for some neighbor k in moat around S

xi �P

k2.[j 2S Nj /nS

xk

Known as “ring inequalities” in the literature

24 / 36

Page 28: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

OPTMODEL Code: Constraint Programming Solver

1 set NODE_PAIRS = {i in NODES, j in NODES: i < j};23 /* cannot have two nodes i and j that are too far apart */4 con Conflict {<i,j> in NODE_PAIRS: distance[i,j] >= min(maxnodes[i],maxnodes[j])}:5 UseNode[i] + UseNode[j] <= 1;67 /* if UseNode[i] = 1 and p[i] < target - deviation_ub8 then UseNode[j] = 1 for some neighbor j of i */9 con Moat1 {i in NODES: p[i] < target - deviation_ub}:

10 UseNode[i] <= sum {j in NEIGHBORS[i]} UseNode[j];1112 /* if (UseNode[i] = 1 or UseNode[j] = 1) and p[i] + p[j] < target - deviation_ub13 then UseNode[k] = 1 for some neighbor k in moat around {i,j} */14 con Moat2_i {<i,j> in NODE_PAIRS: p[i] + p[j] < target - deviation_ub}:15 UseNode[i] <= sum {k in (NEIGHBORS[i] union NEIGHBORS[j]) diff {i,j}} UseNode[k];16 con Moat2_j {<i,j> in NODE_PAIRS: p[i] + p[j] < target - deviation_ub}:17 UseNode[j] <= sum {k in (NEIGHBORS[i] union NEIGHBORS[j]) diff {i,j}} UseNode[k];1819 problem Subproblem include20 UseNode PopulationBounds Conflict Moat1 Moat2_i Moat2_j;21 use problem Subproblem;2223 put ’Solving CLP subproblem...’;24 solve with CLP / findallsolns;25 /* use _NSOL_ and .sol[s] to access multiple solutions */26 SUBSETS = 1.._NSOL_;27 for {s in SUBSETS} NODES_s[s] = {i in NODES: UseNode[i].sol[s] > 0.5};

25 / 36

Page 29: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

Constraint Programming Solver Log

NOTE: Problem generation will use 4 threads.NOTE: The problem has 66 variables (0 free, 0 fixed).NOTE: The problem has 66 binary and 0 integer variables.NOTE: The problem has 5123 linear constraints (5122 LE, 0 EQ, 0 GE, 1 range).NOTE: The problem has 42926 linear constraint coefficients.NOTE: The problem has 0 nonlinear constraints (0 LE, 0 EQ, 0 GE, 0 range).NOTE: The experimental CLP solver is called.NOTE: All possible solutions have been found.NOTE: Number of solutions found = 4472.

CARD(SUBSETS)=4472

26 / 36

Page 30: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

OPTMODEL Code: Network Solver

1 /* check connectivity */2 set NODES_THIS;3 num component {NODES_THIS};4 set DISCONNECTED init {};5 cofor {s in SUBSETS} do;6 put s=;7 NODES_THIS = NODES_s[s];8 if card(NODES_THIS) <= 3 then continue; /* connected */9 solve with NETWORK /

10 links = (include=EDGES)11 subgraph = (nodes=NODES_THIS)12 concomp13 out = (concomp=component);14 if or {i in NODES_THIS} (component[i] > 1)15 then DISCONNECTED = DISCONNECTED union {s};16 end;17 SUBSETS = SUBSETS diff DISCONNECTED;

27 / 36

Page 31: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

Network Solver Log

s=1NOTE: The SUBGRAPH= option filtered 145 elements from ’EDGES.’NOTE: The number of nodes in the input graph is 4.NOTE: The number of links in the input graph is 3.NOTE: Processing connected components.NOTE: The graph has 1 connected component.NOTE: Processing connected components used 0.00 (cpu: 0.00) seconds....s=28NOTE: The SUBGRAPH= option filtered 144 elements from ’EDGES.’NOTE: The number of nodes in the input graph is 6.NOTE: The number of links in the input graph is 4.NOTE: Processing connected components.NOTE: The graph has 2 connected components.NOTE: Processing connected components used 0.00 (cpu: 0.00) seconds....s=4472NOTE: The SUBGRAPH= option filtered 144 elements from ’EDGES.’NOTE: The number of nodes in the input graph is 5.NOTE: The number of links in the input graph is 4.NOTE: Processing connected components.NOTE: The graph has 1 connected component.NOTE: Processing connected components used 0.00 (cpu: 0.00) seconds.

CARD(SUBSETS)=2771

28 / 36

Page 32: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

OPTMODEL Code: MILP Solver

1 /* master problem: partition nodes into connected subsets,2 minimizing deviation from target */3 /* UseSubset[s] = 1 if subset s is used, 0 otherwise */4 var UseSubset {SUBSETS} binary;56 /* L_1 norm */7 num subset_population {s in SUBSETS} = sum {i in NODES_s[s]} p[i];8 num subset_deviation {s in SUBSETS} = abs(subset_population[s] - target);9 min Objective1 = sum {s in SUBSETS} subset_deviation[s] * UseSubset[s];

1011 /* each node belongs to exactly one subset */12 con Partition {i in NODES}:13 sum {s in SUBSETS: i in NODES_s[s]} UseSubset[s] = 1;1415 /* use exactly the allowed number of subsets */16 con Cardinality:17 sum {s in SUBSETS} UseSubset[s] = num_clusters;1819 problem Master include20 UseSubset Objective1 Partition Cardinality;2122 ...2324 use problem Master;25 put ’Solving master problem, minimizing Objective1...’;26 solve;

29 / 36

Page 33: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

MILP Solver Log

NOTE: Problem generation will use 4 threads.NOTE: The problem has 2771 variables (0 free, 0 fixed).NOTE: The problem has 2771 binary and 0 integer variables.NOTE: The problem has 67 linear constraints (0 LE, 67 EQ, 0 GE, 0 range).NOTE: The problem has 17334 linear constraint coefficients.NOTE: The problem has 0 nonlinear constraints (0 LE, 0 EQ, 0 GE, 0 range).NOTE: The OPTMODEL presolver is disabled for linear problems.NOTE: The MILP presolver value AUTOMATIC is applied.NOTE: The MILP presolver removed 1092 variables and 0 constraints.NOTE: The MILP presolver removed 7089 constraint coefficients.NOTE: The MILP presolver modified 0 constraint coefficients.NOTE: The presolved problem has 1679 variables, 67 constraints, and 10245

constraint coefficients.NOTE: The MILP solver is called.

Node Active Sols BestInteger BestBound Gap Time0 1 0 . 96.3214286 . 1

...0 1 0 . 113.1320755 . 10 1 1 124.0000000 117.1666667 5.83% 2

NOTE: The MILP solver added 40 cuts with 2752 cut coefficients at the root.4 0 1 124.0000000 124.0000000 0.00% 2

NOTE: Optimal.NOTE: Objective = 124.

30 / 36

Page 34: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

Solution for 14 Clusters, Bounds 12000˙ 100, Objective1

31 / 36

Page 35: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

OPTMODEL Code: MILP Solver

1 /* L_infinity norm */2 var MaxDeviation >= 0;3 min Objective2 = MaxDeviation;4 con MaxDeviationDef {s in SUBSETS}:5 MaxDeviation >= subset_deviation[s] * UseSubset[s];67 put ’Solving master problem, minimizing Objective2...’;8 MaxDeviation = max {s in SUBSETS} (subset_deviation[s] * UseSubset[s].sol);9 solve with MILP / primalin;

32 / 36

Page 36: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

MILP Solver Log

NOTE: The problem has 2772 variables (0 free, 0 fixed).NOTE: The problem has 2771 binary and 0 integer variables.NOTE: The problem has 2838 linear constraints (0 LE, 67 EQ, 2771 GE, 0 range).NOTE: The problem has 22845 linear constraint coefficients.NOTE: The problem has 0 nonlinear constraints (0 LE, 0 EQ, 0 GE, 0 range).NOTE: The MILP presolver value AUTOMATIC is applied.NOTE: The MILP presolver removed 1092 variables and 1110 constraints.NOTE: The MILP presolver removed 9278 constraint coefficients.NOTE: The MILP presolver modified 0 constraint coefficients.NOTE: The presolved problem has 1680 variables, 1728 constraints, and 13567

constraint coefficients.NOTE: The MILP solver is called.

Node Active Sols BestInteger BestBound Gap Time0 1 1 37.0000000 5.8468795 532.82% 1

...0 1 1 37.0000000 26.0503748 42.03% 4

NOTE: The MILP solver added 89 cuts with 4657 cut coefficients at the root.3 1 2 36.0000000 29.0000000 24.14% 56 2 3 35.0000000 29.0000000 20.69% 57 1 5 35.0000000 29.0000000 20.69% 6

64 54 6 29.0000000 29.0000000 0.00% 7NOTE: Optimal.NOTE: Objective = 29.

33 / 36

Page 37: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

Solution for 14 Clusters, Bounds 12000˙ 100, Objective2

34 / 36

Page 38: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Graph Partitioning with Connectivity Constraints

Live Demo

OPTMODEL codeGraphPartitioningConnectivity.sas

35 / 36

Page 39: Using the OPTMODEL Procedure in SAS/OR to Solve Complex ... · SAS/OR to Solve Complex Problems Rob Pratt, Senior R&D Manager, SAS/OR. Outline 1 Recent Features in PROC OPTMODEL 2

Using the OPTMODEL Procedure in

SAS/OR to Solve Complex Problems


Recommended