Altering Arc Data (int2)
/****************************************************************/
/* S A S S A M P L E L I B R A R Y */
/* */
/* NAME: INT2 */
/* TITLE: Altering Arc Data (int2) */
/* PRODUCT: OR */
/* SYSTEM: ALL */
/* KEYS: OR */
/* PROCS: INTPOINT */
/* DATA: */
/* */
/* SUPPORT: UPDATE: */
/* REF: */
/* MISC: Example 2 from INTPOINT chapter */
/****************************************************************/
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 arc1;
input _tail_ $ _head_ $ _cost_ _capac_ _lo_ _FLOW_ _FCOST_
diagonal factory ;
datalines;
fact1_1 f1_apr_1 78.60 600 50 600.000 47160.00 19 1
f1_mar_1 f1_apr_1 15.00 50 . 0.000 0.00 19 1
f1_may_1 f1_apr_1 28.00 20 . 0.000 0.00 19 1
f2_apr_1 f1_apr_1 11.00 40 . 0.000 0.00 19 .
fact1_2 f1_apr_2 174.50 550 50 550.000 95975.00 25 1
f1_mar_2 f1_apr_2 20.00 40 . 0.000 0.00 25 1
f1_may_2 f1_apr_2 41.00 15 . 15.000 615.00 25 1
f2_apr_2 f1_apr_2 21.00 25 . 0.000 0.00 25 .
fact1_1 f1_mar_1 127.90 500 50 345.000 44125.49 19 1
f1_apr_1 f1_mar_1 28.00 20 . 20.000 560.00 19 1
f2_mar_1 f1_mar_1 10.00 40 . 40.000 400.00 19 .
fact1_2 f1_mar_2 217.90 400 40 400.000 87160.00 25 1
f1_apr_2 f1_mar_2 32.00 30 . 30.000 960.00 25 1
f2_mar_2 f1_mar_2 20.00 25 . 25.000 500.00 25 .
fact1_1 f1_may_1 95.10 400 50 50.000 4755.01 19 1
f1_apr_1 f1_may_1 12.00 50 . 50.000 600.00 19 1
f2_may_1 f1_may_1 13.00 40 . 0.000 0.00 19 .
fact1_2 f1_may_2 133.30 350 40 40.000 5332.00 25 1
f1_apr_2 f1_may_2 18.00 40 . 0.000 0.00 25 1
f2_may_2 f1_may_2 43.00 25 . 0.000 0.00 25 .
f1_apr_1 f2_apr_1 11.00 . . 30.000 330.00 19 .
fact2_1 f2_apr_1 62.40 480 35 480.000 29952.00 19 2
f2_mar_1 f2_apr_1 18.00 30 . 0.000 0.00 19 2
f2_may_1 f2_apr_1 25.00 15 . 0.000 0.00 19 2
f1_apr_2 f2_apr_2 23.00 . . 0.000 0.00 25 .
fact2_2 f2_apr_2 196.70 680 35 680.000 133756.00 25 2
f2_mar_2 f2_apr_2 28.00 50 . 0.000 0.00 25 2
f2_may_2 f2_apr_2 54.00 15 . 15.000 810.00 25 2
f1_mar_1 f2_mar_1 11.00 . . 0.000 0.00 19 .
fact2_1 f2_mar_1 88.00 450 35 290.000 25520.00 19 2
f2_apr_1 f2_mar_1 17.00 15 . 0.000 0.00 19 2
f1_mar_2 f2_mar_2 23.00 . . 0.000 0.00 25 .
fact2_2 f2_mar_2 182.00 650 35 645.000 117390.00 25 2
f2_apr_2 f2_mar_2 31.00 15 . 0.000 0.00 25 2
f1_may_1 f2_may_1 16.00 . . 100.000 1600.00 19 .
fact2_1 f2_may_1 133.80 250 35 35.000 4683.00 19 2
f2_apr_1 f2_may_1 20.00 30 . 15.000 300.00 19 2
f1_may_2 f2_may_2 26.00 . . 0.000 0.00 25 .
fact2_2 f2_may_2 201.40 550 35 35.000 7049.00 25 2
f2_apr_2 f2_may_2 38.00 50 . 0.000 0.00 25 2
f1_mar_1 shop1_1 -327.65 250 . 155.000 -50785.73 19 1
f1_apr_1 shop1_1 -300.00 250 . 250.000 -75000.00 19 1
f1_may_1 shop1_1 -285.00 250 . 0.000 0.00 19 1
f2_mar_1 shop1_1 -297.40 250 . 250.000 -74350.00 19 2
f2_apr_1 shop1_1 -290.00 250 . 245.000 -71050.02 19 2
f2_may_1 shop1_1 -292.00 250 . 0.000 0.00 19 2
f1_mar_2 shop1_2 -559.76 . . 0.000 0.00 25 1
f1_apr_2 shop1_2 -524.28 . . 0.000 0.00 25 1
f1_may_2 shop1_2 -475.02 . . 25.000 -11875.50 25 1
f2_mar_2 shop1_2 -567.83 500 . 500.000 -283915.00 25 2
f2_apr_2 shop1_2 -542.19 500 . 375.000 -203321.25 25 2
f2_may_2 shop1_2 -461.56 500 . 0.000 0.00 25 2
f1_mar_1 shop2_1 -362.74 250 . 250.000 -90685.00 19 1
f1_apr_1 shop2_1 -300.00 250 . 250.000 -75000.00 19 1
f1_may_1 shop2_1 -245.00 250 . 0.000 0.00 19 1
f2_mar_1 shop2_1 -272.70 250 . 0.000 0.00 19 2
f2_apr_1 shop2_1 -312.00 250 . 250.000 -78000.00 19 2
f2_may_1 shop2_1 -299.00 250 . 150.000 -44850.00 19 2
f1_mar_2 shop2_2 -623.89 . . 455.000 -283869.95 25 1
f1_apr_2 shop2_2 -549.68 . . 535.000 -294078.80 25 1
f1_may_2 shop2_2 -460.00 . . 0.000 0.00 25 1
f2_mar_2 shop2_2 -542.83 500 . 120.000 -65139.60 25 2
f2_apr_2 shop2_2 -559.19 500 . 320.000 -178940.80 25 2
f2_may_2 shop2_2 -489.06 500 . 20.000 -9781.20 25 2
;
data arc1a;
input key_id $10. mth_made $ _name_&$17.;
datalines;
production April prod f1 19 apl
storage March .
backorder May back f1 19 may
f2_to_1 April .
production April prod f1 25 apl
storage March .
backorder May back f1 25 may
f2_to_1 April .
production March prod f1 19 mar
backorder April back f1 19 apl
f2_to_1 March .
production March prod f1 25 mar
backorder April back f1 25 apl
f2_to_1 March .
production May .
storage April .
f2_to_1 May .
production May .
storage April .
f2_to_1 May .
f1_to_2 April .
production April prod f2 19 apl
storage March .
backorder May back f2 19 may
f1_to_2 April .
production April prod f2 25 apl
storage March .
backorder May back f2 25 may
f1_to_2 March .
production March prod f2 19 mar
backorder April back f2 19 apl
f1_to_2 March .
production March prod f2 25 mar
backorder April back f2 25 apl
f1_to_2 May .
production May .
storage April .
f1_to_2 May .
production May .
storage April .
sales March .
sales April .
sales May .
sales March .
sales April .
sales May .
sales March .
sales April .
sales May .
sales March .
sales April .
sales May .
sales March .
sales April .
sales May .
sales March .
sales April .
sales May .
sales March .
sales April .
sales May .
sales March .
sales April .
sales May .
;
data arc1;
merge arc1 arc1a;
title2 'Minimum Cost Flow problem- Altered Arc Data';
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;
run;
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;