All Examples From INPOINT (For Consecutive Runs)
/***************************************************************/
/* S A S S A M P L E L I B R A R Y */
/* */
/* NAME: INTPOINT */
/* TITLE: All Examples From INPOINT (For Consecutive Runs) */
/* PRODUCT: OR */
/* SYSTEM: ALL */
/* KEYS: OR */
/* PROCS: INTPOINT */
/* DATA: */
/* */
/* SUPPORT: UPDATE: */
/* REF: */
/* MISC: Contains the code for all INTPOINT examples using */
/* data sets created consecutively, as opposed to */
/* being defined in each run. This is how the */
/* examples in the chapter are presented. */
/***************************************************************/
/***************************************************************/
/* */
/* Test: INT0A -- */
/* Getting Started: NPSC Problems */
/* Info: 'Getting Started: NPSC Problems' example from */
/* Introduction to INTPOINT chapter */
/* */
/***************************************************************/
title 'Oil Industry Example';
title3 'Setting Up Nodedata = Noded For Proc Intpoint';
data noded;
input _node_&$15. _sd_;
datalines;
middle east 100
u.s.a. 80
servstn1 gas -95
servstn1 diesel -30
servstn2 gas -40
servstn2 diesel -15
;
title3 'Setting Up Arcdata = Arcd1 For Proc Intpoint';
data arcd1;
input _from_&$11. _to_&$15. _cost_ _capac_ _lo_ _name_ $;
datalines;
middle east refinery 1 63 95 20 m_e_ref1
middle east refinery 2 81 80 10 m_e_ref2
u.s.a. refinery 1 55 . . .
u.s.a. refinery 2 49 . . .
refinery 1 r1 200 175 50 thruput1
refinery 2 r2 220 100 35 thruput2
r1 ref1 gas . 140 . r1_gas
r1 ref1 diesel . 75 . .
r2 ref2 gas . 100 . r2_gas
r2 ref2 diesel . 75 . .
ref1 gas servstn1 gas 15 70 . .
ref1 gas servstn2 gas 22 60 . .
ref1 diesel servstn1 diesel 18 . . .
ref1 diesel servstn2 diesel 17 . . .
ref2 gas servstn1 gas 17 35 5 .
ref2 gas servstn2 gas 31 . . .
ref2 diesel servstn1 diesel 36 . . .
ref2 diesel servstn2 diesel 23 . . .
;
title3 'Setting Up Condata = Cond1 For Proc Intpoint';
data cond1;
input m_e_ref1 m_e_ref2 thruput1 r1_gas thruput2 r2_gas
_type_ $ _rhs_;
datalines;
-2 . 1 . . . >= -15
. -2 . . 1 . GE -15
. . -3 4 . . EQ 0
. . . . -3 4 = 0
;
title3 'Optimization Proc Intpoint';
proc intpoint
bytes=1000000
nodedata=noded /* the supply and demand data */
arcdata=arcd1 /* the arc descriptions */
condata=cond1 /* the side constraints */
conout=solution; /* the solution data set */
run;
title3 'Optimum';
proc print data=solution;
var _from_ _to_ _cost_ _capac_ _lo_ _name_
_supply_ _demand_ _flow_ _fcost_;
sum _fcost_;
run;
/***************************************************************/
/* */
/* Test: INT0B -- */
/* Getting Started: LP Problems */
/* Info: 'Getting Started: LP Problems' example from */
/* Introduction to INTPOINT chapter */
/* */
/***************************************************************/
title 'Linear Programming Example';
title3 'Setting Up Condata = dcon1 For Proc Intpoint';
data dcon1;
input _id_ $14.
a_light a_heavy brega naphthal naphthai
heatingo jet_1 jet_2
_type_ $ _rhs_;
datalines;
profit -175 -165 -205 0 0 0 300 300 max .
naphtha_l_conv .035 .030 .045 -1 0 0 0 0 eq 0
naphtha_i_conv .100 .075 .135 0 -1 0 0 0 eq 0
heating_o_conv .390 .300 .430 0 0 -1 0 0 eq 0
recipe_1 0 0 0 0 .3 .7 -1 0 eq 0
recipe_2 0 0 0 .2 0 .8 0 -1 eq 0
available 110 165 80 . . . . . upperbd .
;
title3 'Optimization Proc Intpoint';
proc intpoint
bytes=1000000
condata=dcon1
conout=solutn1;
run;
title3 'LP Optimum';
proc print data=solutn1;
var _name_ _objfn_ _upperbd _lowerbd _value_ _fcost_;
sum _fcost_;
run;
title3 'Setting Up Condata = scon2 For Proc Intpoint';
data scon2;
input _type_ $ @10 _col_ $13. @24 _row_ $16. _coef_;
datalines;
max . profit .
eq . napha_l_conv .
eq . napha_i_conv .
eq . heating_oil_conv .
eq . recipe_1 .
eq . recipe_2 .
upperbd . available .
. a_light profit -175
. a_light napha_l_conv .035
. a_light napha_i_conv .100
. a_light heating_oil_conv .390
. a_light available 110
. a_heavy profit -165
. a_heavy napha_l_conv .030
. a_heavy napha_i_conv .075
. a_heavy heating_oil_conv .300
. a_heavy available 165
. brega profit -205
. brega napha_l_conv .045
. brega napha_i_conv .135
. brega heating_oil_conv .430
. brega available 80
. naphthal napha_l_conv -1
. naphthal recipe_2 .2
. naphthai napha_i_conv -1
. naphthai recipe_1 .3
. heatingo heating_oil_conv -1
. heatingo recipe_1 .7
. heatingo recipe_2 .8
. jet_1 profit 300
. jet_1 recipe_1 -1
. jet_2 profit 300
. jet_2 recipe_2 -1
;
title3 'Optimization Proc Intpoint';
proc intpoint
bytes=1000000
sparsecondata
condata=scon2
conout=solutn2;
run;
title3 'LP Optimum';
proc print data=solutn2;
var _name_ _objfn_ _upperbd _lowerbd _value_ _fcost_;
sum _fcost_;
run;
title3 'Alternate Formulations for the LP Problem';
data vars3;
input _name_ $ profit available;
datalines;
a_heavy -165 165
a_light -175 110
brega -205 80
heatingo 0 .
jet_1 300 .
jet_2 300 .
naphthai 0 .
naphthal 0 .
;
data dcon3;
input _id_ $14.
a_light a_heavy brega naphthal naphthai
heatingo jet_1 jet_2
_type_ $ _rhs_;
datalines;
naphtha_l_conv .035 .030 .045 -1 0 0 0 0 eq 0
naphtha_i_conv .100 .075 .135 0 -1 0 0 0 eq 0
heating_o_conv .390 .300 .430 0 0 -1 0 0 eq 0
recipe_1 0 0 0 0 .3 .7 -1 0 eq 0
recipe_2 0 0 0 .2 0 .8 0 -1 eq 0
;
proc intpoint
maximize /* ***** necessary ***** */
bytes=1000000
arcdata=vars3
condata=dcon3
conout=solutn3;
objfn profit;
upperbd available;
run;
title3 'LP Optimum';
proc print data=solutn3;
var _name_ profit available _lowerbd _value_ _fcost_;
sum _fcost_;
run;
data vars4;
input _name_ $ profit available;
datalines;
a_heavy -165 165
a_light -175 110
brega -205 80
jet_1 300 .
jet_2 300 .
;
data dcon4;
input _id_ $14.
a_light a_heavy brega naphthal naphthai
heatingo jet_1 jet_2;
datalines;
naphtha_l_conv .035 .030 .045 -1 0 0 0 0
naphtha_i_conv .100 .075 .135 0 -1 0 0 0
heating_o_conv .390 .300 .430 0 0 -1 0 0
recipe_1 0 0 0 0 .3 .7 -1 0
recipe_2 0 0 0 .2 0 .8 0 -1
;
proc intpoint
bytes=100000
maximize defcontype=eq
arcdata=vars3
condata=dcon4
conout=solutn4;
objfn profit;
upperbd available;
run;
title3 'LP Optimum';
proc print data=solutn4;
var _name_ profit available _lowerbd _value_ _fcost_;
sum _fcost_;
run;
data scon5;
input _type_ $ @10 _col_ $13. @24 _row_ $16. _coef_;
datalines;
eq . napha_l_conv .
eq . napha_i_conv .
eq . heating_oil_conv .
eq . recipe_1 .
eq . recipe_2 .
. a_light napha_l_conv .035
. a_light napha_i_conv .100
. a_light heating_oil_conv .390
. a_heavy napha_l_conv .030
. a_heavy napha_i_conv .075
. a_heavy heating_oil_conv .300
. brega napha_l_conv .045
. brega napha_i_conv .135
. brega heating_oil_conv .430
. naphthal napha_l_conv -1
. naphthal recipe_2 .2
. naphthai napha_i_conv -1
. naphthai recipe_1 .3
. heatingo heating_oil_conv -1
. heatingo recipe_1 .7
. heatingo recipe_2 .8
. jet_1 recipe_1 -1
. jet_2 recipe_2 -1
;
proc intpoint
bytes=1000000
maximize
sparsecondata
arcdata=vars3 /* or arcdata=vars4 */
condata=scon5
conout=solutn5;
objfn profit;
upperbd available;
run;
title3 'LP Optimum';
proc print data=solutn5;
var _name_ profit available _lowerbd _value_ _fcost_;
sum _fcost_;
run;
data scon6;
input _col_ $ _row_&$16. _coef_;
datalines;
a_light napha_l_conv .035
a_light napha_i_conv .100
a_light heating_oil_conv .390
a_heavy napha_l_conv .030
a_heavy napha_i_conv .075
a_heavy heating_oil_conv .300
brega napha_l_conv .045
brega napha_i_conv .135
brega heating_oil_conv .430
naphthal napha_l_conv -1
naphthal recipe_2 .2
naphthai napha_i_conv -1
naphthai recipe_1 .3
heatingo heating_oil_conv -1
heatingo recipe_1 .7
heatingo recipe_2 .8
jet_1 recipe_1 -1
jet_2 recipe_2 -1
;
proc intpoint
bytes=100000
maximize
defcontype=eq
sparsecondata
arcdata=vars4 /* or arcdata=vars3 */
condata=scon6
conout=solutn6;
objfn profit;
upperbd available;
run;
title3 'LP Optimum';
proc print data=solutn6;
var _name_ profit available _lowerbd _value_ _fcost_;
sum _fcost_;
run;
/****************************************************************/
/* */
/* Test: INT0C -- */
/* Missing S Supply and Missing D Demand Values */
/* Info: 'Missing S Supply and Missing D Demand Values' */
/* example from Details section of INTPOINT chapter */
/* */
/****************************************************************/
title 'Oil Industry Example';
title3 'Crude Oil can come from anywhere';
/* Uses ARCD1 and COND1 from INT0A. */
data miss_s;
missing S;
input _node_&$15. _sd_;
datalines;
middle east S
u.s.a. S
servstn1 gas -95
servstn1 diesel -30
servstn2 gas -40
servstn2 diesel -15
;
proc intpoint
bytes=100000
nodedata=miss_s /* the supply (missing S) and */
/* demand data */
arcdata=arcd1 /* the arc descriptions */
condata=cond1 /* the side constraints */
conout=solution; /* the solution data set */
run;
proc print;
var _from_ _to_ _cost_ _capac_ _lo_ _flow_ _fcost_;
sum _fcost_;
run;
data miss_s_x;
missing S;
input _node_&$15. _sd_;
datalines;
middle east 1
u.s.a. 1
servstn1 gas -95
servstn1 diesel -30
servstn2 gas -40
servstn2 diesel -15
;
proc intpoint
bytes=100000
thrunet
nodedata=miss_s_x /* No supply (missing S) */
arcdata=arcd1 /* the arc descriptions */
condata=cond1 /* the side constraints */
conout=solution; /* the solution data set */
run;
proc print;
var _from_ _to_ _cost_ _capac_ _lo_ _flow_ _fcost_;
sum _fcost_;
run;
/****************************************************************/
/* */
/* Test: INT1 -- */
/* Production, Inventory, Distribution Problem */
/* Info: Example 1 from INTPOINT chapter */
/* */
/****************************************************************/
title 'Production Planning/Inventory/Distribution';
title2 'Minimum Cost Flow problem';
data node0;
input _node_ $ _supdem_ ;
datalines;
fact1_1 1000
fact2_1 850
fact1_2 1000
fact2_2 1500
shop1_1 -900
shop2_1 -900
shop1_2 -900
shop2_2 -1450
;
data arc0;
input _tail_ $ _head_ $ _cost_ _capac_ _lo_ diagonal factory
key_id $10. mth_made $ _name_&$17. ;
datalines;
fact1_1 f1_mar_1 127.9 500 50 19 1 production March prod f1 19 mar
fact1_1 f1_apr_1 78.6 600 50 19 1 production April prod f1 19 apl
fact1_1 f1_may_1 95.1 400 50 19 1 production May .
f1_mar_1 f1_apr_1 15 50 . 19 1 storage March .
f1_apr_1 f1_may_1 12 50 . 19 1 storage April .
f1_apr_1 f1_mar_1 28 20 . 19 1 backorder April back f1 19 apl
f1_may_1 f1_apr_1 28 20 . 19 1 backorder May back f1 19 may
f1_mar_1 f2_mar_1 11 . . 19 . f1_to_2 March .
f1_apr_1 f2_apr_1 11 . . 19 . f1_to_2 April .
f1_may_1 f2_may_1 16 . . 19 . f1_to_2 May .
f1_mar_1 shop1_1 -327.65 250 . 19 1 sales March .
f1_apr_1 shop1_1 -300 250 . 19 1 sales April .
f1_may_1 shop1_1 -285 250 . 19 1 sales May .
f1_mar_1 shop2_1 -362.74 250 . 19 1 sales March .
f1_apr_1 shop2_1 -300 250 . 19 1 sales April .
f1_may_1 shop2_1 -245 250 . 19 1 sales May .
fact2_1 f2_mar_1 88.0 450 35 19 2 production March prod f2 19 mar
fact2_1 f2_apr_1 62.4 480 35 19 2 production April prod f2 19 apl
fact2_1 f2_may_1 133.8 250 35 19 2 production May .
f2_mar_1 f2_apr_1 18 30 . 19 2 storage March .
f2_apr_1 f2_may_1 20 30 . 19 2 storage April .
f2_apr_1 f2_mar_1 17 15 . 19 2 backorder April back f2 19 apl
f2_may_1 f2_apr_1 25 15 . 19 2 backorder May back f2 19 may
f2_mar_1 f1_mar_1 10 40 . 19 . f2_to_1 March .
f2_apr_1 f1_apr_1 11 40 . 19 . f2_to_1 April .
f2_may_1 f1_may_1 13 40 . 19 . f2_to_1 May .
f2_mar_1 shop1_1 -297.4 250 . 19 2 sales March .
f2_apr_1 shop1_1 -290 250 . 19 2 sales April .
f2_may_1 shop1_1 -292 250 . 19 2 sales May .
f2_mar_1 shop2_1 -272.7 250 . 19 2 sales March .
f2_apr_1 shop2_1 -312 250 . 19 2 sales April .
f2_may_1 shop2_1 -299 250 . 19 2 sales May .
fact1_2 f1_mar_2 217.9 400 40 25 1 production March prod f1 25 mar
fact1_2 f1_apr_2 174.5 550 50 25 1 production April prod f1 25 apl
fact1_2 f1_may_2 133.3 350 40 25 1 production May .
f1_mar_2 f1_apr_2 20 40 . 25 1 storage March .
f1_apr_2 f1_may_2 18 40 . 25 1 storage April .
f1_apr_2 f1_mar_2 32 30 . 25 1 backorder April back f1 25 apl
f1_may_2 f1_apr_2 41 15 . 25 1 backorder May back f1 25 may
f1_mar_2 f2_mar_2 23 . . 25 . f1_to_2 March .
f1_apr_2 f2_apr_2 23 . . 25 . f1_to_2 April .
f1_may_2 f2_may_2 26 . . 25 . f1_to_2 May .
f1_mar_2 shop1_2 -559.76 . . 25 1 sales March .
f1_apr_2 shop1_2 -524.28 . . 25 1 sales April .
f1_may_2 shop1_2 -475.02 . . 25 1 sales May .
f1_mar_2 shop2_2 -623.89 . . 25 1 sales March .
f1_apr_2 shop2_2 -549.68 . . 25 1 sales April .
f1_may_2 shop2_2 -460.00 . . 25 1 sales May .
fact2_2 f2_mar_2 182.0 650 35 25 2 production March prod f2 25 mar
fact2_2 f2_apr_2 196.7 680 35 25 2 production April prod f2 25 apl
fact2_2 f2_may_2 201.4 550 35 25 2 production May .
f2_mar_2 f2_apr_2 28 50 . 25 2 storage March .
f2_apr_2 f2_may_2 38 50 . 25 2 storage April .
f2_apr_2 f2_mar_2 31 15 . 25 2 backorder April back f2 25 apl
f2_may_2 f2_apr_2 54 15 . 25 2 backorder May back f2 25 may
f2_mar_2 f1_mar_2 20 25 . 25 . f2_to_1 March .
f2_apr_2 f1_apr_2 21 25 . 25 . f2_to_1 April .
f2_may_2 f1_may_2 43 25 . 25 . f2_to_1 May .
f2_mar_2 shop1_2 -567.83 500 . 25 2 sales March .
f2_apr_2 shop1_2 -542.19 500 . 25 2 sales April .
f2_may_2 shop1_2 -461.56 500 . 25 2 sales May .
f2_mar_2 shop2_2 -542.83 500 . 25 2 sales March .
f2_apr_2 shop2_2 -559.19 500 . 25 2 sales April .
f2_may_2 shop2_2 -489.06 500 . 25 2 sales May .
;
proc intpoint
bytes=1000000
printlevel2=2
nodedata=node0
arcdata=arc0
conout=arc1;
run;
proc print data=arc1;
var _tail_ _head_ _cost_ _capac_ _lo_ _flow_ _fcost_
diagonal factory key_id mth_made;
sum _fcost_;
run;
/****************************************************************/
/* */
/* Test: INT2 -- */
/* Altering Arc Data */
/* Info: Example 2 from INTPOINT chapter */
/* */
/****************************************************************/
title 'Production Planning/Inventory/Distribution';
title2 'Minimum Cost Flow problem- Altered arc data';
/* Uses NODE0 (defined in INT1) and ARC1 (created in INT1). */
data arc2;
set arc1;
oldcost=_cost_;
oldfc=_fcost_;
oldflow=_flow_;
if key_id='backorder'
then _cost_=_cost_*1.2;
else if _tail_='f2_may_2' then _cost_=_cost_-30;
if key_id='production' & mth_made='May' then
if diagonal=19 then _cost_=_cost_-5;
else _cost_=_cost_-20;
proc intpoint
bytes=100000
printlevel2=2
nodedata=node0
arcdata=arc2
conout=arc3;
run;
proc print data=arc3;
var _tail_ _head_ _capac_ _lo_ _supply_ _demand_ _name_
_cost_ _flow_ _fcost_ oldcost oldflow oldfc
diagonal factory key_id mth_made;
/* to get this variable order */
sum oldfc _fcost_;
run;
/****************************************************************/
/* */
/* Test: INT3 -- */
/* Adding Side Constraints */
/* MISC: Example 3 from INTPOINT chapter */
/* */
/****************************************************************/
title 'Production Planning/Inventory/Distribution';
title2 'Adding Side Constraints';
/* Uses NODE0 (defined in INT1) and ARC3 (created in INT2). */
data con3;
input _column_ &$14. _row_ &$15. _coef_ ;
datalines;
prod f1 19 mar FACT1 MAR GIZMO 3
prod f1 25 mar FACT1 MAR GIZMO 4
CHIP/BO LIMIT FACT1 MAR GIZMO 2600
prod f2 19 mar FACT2 MAR GIZMO 3
prod f2 25 mar FACT2 MAR GIZMO 4
CHIP/BO LIMIT FACT2 MAR GIZMO 3750
prod f1 19 apl FACT1 APL GIZMO 3
prod f1 25 apl FACT1 APL GIZMO 4
CHIP/BO LIMIT FACT1 APL GIZMO 2600
prod f2 19 apl FACT2 APL GIZMO 3
prod f2 25 apl FACT2 APL GIZMO 4
CHIP/BO LIMIT FACT2 APL GIZMO 3750
back f1 19 apl TOTAL BACKORDER 1
back f1 25 apl TOTAL BACKORDER 1
back f2 19 apl TOTAL BACKORDER 1
back f2 25 apl TOTAL BACKORDER 1
back f1 19 may TOTAL BACKORDER 1
back f1 25 may TOTAL BACKORDER 1
back f2 19 may TOTAL BACKORDER 1
back f2 25 may TOTAL BACKORDER 1
CHIP/BO LIMIT TOTAL BACKORDER 50
;
proc intpoint
bytes=1000000
printlevel2=2
nodedata=node0 arcdata=arc3
condata=con3 sparsecondata rhsobs='CHIP/BO LIMIT'
conout=arc4;
id diagonal factory key_id mth_made;
run;
proc print data=arc4;
var _tail_ _head_ _cost_ _capac_ _lo_
_flow_ _fcost_;
/* to get this variable order */
sum _fcost_;
run;
/****************************************************************/
/* */
/* Test: INT4 -- */
/* Using Constraints/More Alteration to Arc Data */
/* Info: Example 4 from INTPOINT chapter */
/* */
/****************************************************************/
title 'Production Planning/Inventory/Distribution';
title2 'Using Constraints and Altering arc data';
/* Uses NODE0 (defined in INT1), CON3 (defined in INT3),
and ARC4 (created in INT3). */
data new_arc4;
set arc4;
oldcost=_cost_;
oldflow=_flow_;
oldfc=_fcost_;
if _tail_='f1_may_2'
& (_head_='shop1_2' | _head_='shop2_2')
then _cost_=_cost_-40;
proc intpoint
bytes=1000000
printlevel2=2
arcdata=new_arc4 nodedata=node0
condata=con3 sparsecondata rhsobs='CHIP/BO LIMIT'
conout=arc5;
run;
proc print data=arc5;
var _tail_ _head_ _cost_ _capac_ _lo_
_supply_ _demand_ _name_ _flow_ _fcost_ oldflow oldfc;
/* to get this variable order */
sum oldfc _fcost_;
run;
/****************************************************************/
/* */
/* Example: INT5 -- */
/* Nonarc Variables in the Side Constraints */
/* Info: Example 5 from INTPOINT chapter */
/* */
/****************************************************************/
title 'Production Planning/Inventory/Distribution';
title2 'Nonarc Variables in the Side Constraints';
/* Uses NODE0 (defined in INT1) and ARC5 (created in INT4). */
data con6;
input _column_ &$17. _row_ &$15. _coef_ ;
datalines;
prod f1 19 mar FACT1 MAR GIZMO 3
prod f1 25 mar FACT1 MAR GIZMO 4
f1 unused chips FACT1 MAR GIZMO 1
_RHS_ FACT1 MAR GIZMO 2615
prod f2 19 mar FACT2 MAR GIZMO 3
prod f2 25 mar FACT2 MAR GIZMO 4
f2 unused chips FACT2 MAR GIZMO 1
_RHS_ FACT2 MAR GIZMO 3750
prod f1 19 apl FACT1 APL GIZMO 3
prod f1 25 apl FACT1 APL GIZMO 4
f1 chips from mar FACT1 APL GIZMO -1
_RHS_ FACT1 APL GIZMO 2600
prod f2 19 apl FACT2 APL GIZMO 3
prod f2 25 apl FACT2 APL GIZMO 4
f2 chips from mar FACT2 APL GIZMO -1
_RHS_ FACT2 APL GIZMO 3750
f1 unused chips CHIP LEFTOVER 1
f2 unused chips CHIP LEFTOVER 1
f1 chips from mar CHIP LEFTOVER -1
f2 chips from mar CHIP LEFTOVER -1
_TYPE_ CHIP LEFTOVER 1
back f1 19 apl TOTAL BACKORDER 1
back f1 25 apl TOTAL BACKORDER 1
back f2 19 apl TOTAL BACKORDER 1
back f2 25 apl TOTAL BACKORDER 1
back f1 19 may TOTAL BACKORDER 1
back f1 25 may TOTAL BACKORDER 1
back f2 19 may TOTAL BACKORDER 1
back f2 25 may TOTAL BACKORDER 1
_TYPE_ TOTAL BACKORDER -1
_RHS_ TOTAL BACKORDER 50
;
data arc6;
set arc5;
drop oldcost oldfc oldflow _flow_ _fcost_;
data arc6_b;
input _name_ &$17. _cost_ _capac_ factory key_id$10. ;
datalines;
f1 unused chips . . 1 chips
f2 unused chips . . 2 chips
f1 chips from mar 1 150 1 chips
f2 chips from mar 1 150 2 chips
;
proc append force base=arc6 data=arc6_b;
proc intpoint
bytes=1000000
printlevel2=2
nodedata=node0 arcdata=arc6
condata=con6 defcontype=eq sparsecondata
conout=arc7;
run;
proc print data=arc7;
var _tail_ _head_ _name_ _cost_ _capac_ _lo_
_flow_ _fcost_;
sum _fcost_;
run;