The NETDRAW Procedure |
This example uses a typical problem in network flow optimization to
illustrate how you can use PROC NETDRAW to draw a network
by specifying completely all the node positions. Consider a simple
two-period production inventory problem with one manufacturing plant
(PLANT),
two warehouses (DEPOT1 and DEPOT2), and one customer (CUST). In each
period, the customer can receive goods directly from the plant or from
the two warehouses. The goods produced at the plant can be used to
satisfy directly some or all of the customer's demands or can
be shipped to a warehouse. Some of the goods can
also be carried over to the next period
as inventory at the plant. The problem is
to determine the minimum cost of satisfying the customer's
demands; in particular, how much of the customer's demands
in each period is to be satisfied from the inventory at the
two warehouses or from the plant,
and also how much of the production is to be carried over as inventory
at the plant? This problem can be solved using PROC NETFLOW; the
details are not discussed here.
Let PLANT_i
represent the production at the plant in
period i
, DEPOT1_i
represent the inventory at
DEPOT1 in period i
, DEPOT2_i
represent the
inventory at DEPOT2 in period i
, and
CUST_i
represent the customer's demand in period
i
(i
=1, 2). These variables can be
thought of
as nodes in a network with the following data representing the
COST and CAPACITY of the arcs connecting them:
FROM TO COST CAPACITY PLANT_1 CUST_1 10 75 PLANT_1 DEPOT1_1 7 75 PLANT_1 DEPOT2_1 8 75 DEPOT1_1 CUST_1 3 20 DEPOT2_1 CUST_1 2 10 PLANT_1 PLANT_2 2 100 DEPOT1_1 DEPOT1_2 1 100 DEPOT2_1 DEPOT2_2 1 100 PLANT_2 CUST_2 10 75 PLANT_2 DEPOT1_2 7 75 PLANT_2 DEPOT2_2 8 75 DEPOT1_2 CUST_2 3 20 DEPOT2_2 CUST_2 2 10 CUST_1 . . . CUST_2 . . .
Suppose that you want to use PROC NETDRAW to draw the network corresponding to the preceding network flow problem and suppose also that you require the nodes to be placed in specific positions. The following program saves the network information along with the required node coordinates in the Network data set ARCS and invokes PROC NETDRAW to draw the network diagram shown in Output 7.14.1. The Network data set also contains a variable named _pattern, which specifies that pattern statement 1 be used for nodes relating to period 1 and pattern statement 2 be used for those relating to period 2.
data arcs; input from $ to $ _x_ _y_ _pattern; datalines; PLANT_1 CUST_1 1 5 1 PLANT_1 DEPOT1_1 1 5 1 PLANT_1 DEPOT2_1 1 5 1 DEPOT1_1 CUST_1 2 6 1 DEPOT2_1 CUST_1 2 4 1 PLANT_1 PLANT_2 1 5 1 DEPOT1_1 DEPOT1_2 2 6 1 DEPOT2_1 DEPOT2_2 2 4 1 PLANT_2 CUST_2 4 2 2 PLANT_2 DEPOT1_2 4 2 2 PLANT_2 DEPOT2_2 4 2 2 DEPOT1_2 CUST_2 5 3 2 DEPOT2_2 CUST_2 5 1 2 CUST_1 . 3 5 1 CUST_2 . 6 2 2 ; pattern1 v=s c=green; pattern2 v=s c=red; title c=blue 'Distribution Network'; proc netdraw data=arcs graphics out=netout; actnet / act=from succ=to separatearcs ybetween = 4 centerid ctext = white carcs = blue htext=2 pcompress; run;
Note: This network diagram can also be drawn by using suitably defined ZONE and ALIGN variables.
Copyright © 2008 by SAS Institute Inc., Cary, NC, USA. All rights reserved.