Network Flow and Delay
/****************************************************************/
/* S A S S A M P L E L I B R A R Y */
/* */
/* NAME: IMNLPEX2 */
/* TITLE: Network Flow and Delay */
/* PRODUCT: IML */
/* SYSTEM: ALL */
/* KEYS: */
/* PROCS: IML */
/* DATA: */
/* */
/* SUPPORT: saswmh UPDATE: frwick 5/2015 */
/* REF: Technical Report Examples */
/* MISC: */
/* */
/****************************************************************/
proc iml;
start MAXFLOW(x);
f = x[3] + x[4];
return(f);
finish MAXFLOW;
/* constraints: lower and upper traffic limits; */
/* what flows into an intersection must flow out */
con = { 0. 0. 0. 0. 0. . . ,
10. 30. 10. 30. 10. . . ,
0. 1. -1. 0. -1. 0. 0. ,
1. 0. 1. -1. 0. 0. 0. ,
1. 1. 0. -1. -1. 0. 0. };
x = j(1,5, 1.);
optn = {1 2};
ods select ParameterEstimates#2;
CALL NLPCG(xres,rc,"MAXFLOW",x,optn,con);
title 'Minimize Total Delay in Network';
proc iml;
start MINDEL(x);
t12 = 5. + .1 * x[1] / (1. - x[1] / 10.);
t13 = x[2] / (1. - x[2] / 30.);
t32 = 1. + x[3] / (1. - x[3] / 10.);
t24 = x[4] / (1. - x[4] / 30.);
t34 = 5. + .1 * x[5] / (1. - x[5] / 10.);
f = t12*x[1] + t13*x[2] + t32*x[3] + t24*x[4] + t34*x[5];
return(f);
finish MINDEL;
con = { 0. 0. 0. 0. 0. . . ,
10. 30. 10. 30. 10. . . ,
0. 1. -1. 0. -1. 0. 0. ,
1. 0. 1. -1. 0. 0. 0. ,
0. 0. 0. 1. 1. 0. 5. };
x = j(1,5, 1.);
optn = {0 3};
call nlpnrr(xres,rc,"MINDEL",x,optn,con);