Machine loading problems arise in a variety of applications. Consider a simple instance as described in Ahuja, Magnanti, and Orlin (1993). Assume you need to schedule the production of three products, , on four machines, . Suppose that machine 1 and machine 2 are each available for 40 hours and machine 3 and machine 4 are each available for 50 hours. Also, any of the machines can produce any product. The per-unit processing time and production cost for each product on each machine are indicated in Table 6.9.

Table 6.9: Processing Times and Production Costs

 M1 M2 M3 M4 P1 1 2 2 3 P2 2 3 2 1 P3 3 1 2 4

 M1 M2 M3 M4 P1 4 3 3 1 P2 0.5 2 0.5 3 P3 2 5 1 5

The problem is to satisfy the demands for the three products at minimum cost.

You can model this problem as a generalized network as shown in Output 6.13.1. The network has three product nodes with demands indicated by positive `supdem` values and four machine nodes with availabilities (in hours) indicated by negative `supdem` values. The multiplier on an arc between a machine and a product indicates the hours of machine capacity needed to produce one unit of the product.

You can create the input data sets with the following SAS code:

```data mlarcs;
input _from_ \$ _to_ \$ _cost_ _mult_;
datalines;
P1  M1   4   .
P1  M2   3   2
P1  M3   3   2
P1  M4   1   3
P2  M1  .5   2
P2  M2   2   3
P2  M3  .5   2
P2  M4   3   1
P3  M1   2   3
P3  M2   5   .
P3  M3   1   2
P3  M4  .5   4
;

data mlnodes;
input _node_ \$ _sd_;
datalines;
P1   10
P2   5
P3   10
M1  -40
M2  -40
M3  -50
M4  -50
;
```

You can solve the problem using the following call to PROC NETFLOW:

```title1 'The NETFLOW Procedure';
proc netflow
excess   = demand
arcdata  = mlarcs
nodedata = mlnodes
conout   = mlsol;
run;
```

The optimal solution, as displayed in Output 6.13.2, can be interpreted as follows:

• Product 1: 10 units on machine 4

• Product 2: 3 units on machine 1, and 2 units on machine 3

• Product 3: 5 units on machine 3, and 5 units on machine 4

 The NETFLOW Procedure

Obs _from_ _to_ _cost_ _CAPAC_ _LO_ _mult_ _SUPPLY_ _DEMAND_ _FLOW_ _FCOST_
1 P1 M1 4.0 99999999 0 1 10 40 0.00000 0.00000
2 P2 M1 0.5 99999999 0 2 5 40 3.67856 1.83928
3 P3 M1 2.0 99999999 0 3 10 40 0.00000 0.00000
4 P1 M2 3.0 99999999 0 2 10 40 0.00000 0.00000
5 P2 M2 2.0 99999999 0 3 5 40 0.00000 0.00000
6 P3 M2 5.0 99999999 0 1 10 40 0.00000 0.00000
7 P1 M3 3.0 99999999 0 2 10 50 0.00000 0.00000
8 P2 M3 0.5 99999999 0 2 5 50 1.32144 0.66072
9 P3 M3 1.0 99999999 0 2 10 50 5.00000 5.00000
10 P1 M4 1.0 99999999 0 3 10 50 10.0000 10.0000
11 P2 M4 3.0 99999999 0 1 5 50 0.00000 0.00000
12 P3 M4 0.5 99999999 0 4 10 50 5.00000 2.50000