%OP%PL70
%OP%PS1
%OP%TM0
%OP%HM0
%OP%FM0
%OP%BM0
%OP%LM8
%OP%DE8+66+6=80
%CO:A,11,67%PROGRAMME "LINPROG"                                    15.2.1989

This programme solves the primal and dual problems of the standard 
linear programming model. See any good business or mathematical 
book on optimisation theory for further details. In business 
terms, LP maximises the profit or minimises the cost of an 
operation (the c's) by computing the optimum level of activities 
(the x's), subject to a series of material or human constraints 
(the b's).

Cost function     : max or min c1.x1+c2.x2+..........+cn.xn

Constraints matrix: a11.x1+a12.x2+a13.x3.......+a1n.xn<=,>= or=b1
                    a21.x1+a22.x2+a23.x3.......+a2n.xn<=,>= or=b2
                    .............................................
                    am1.x1+am2.x2+am3.x3.......+amn.xn<=,>= or=bm

Normally, the x's >=0, but in this programme some or all may be 
allowed to move freely over positive and negative values.

%H1%Input%H1%
First, maximisation or minimisation should be specified. This is 
followed by the number of constraints m (rows) and by the number 
of variables n (activities, columns). Then, individual variables 
can be declared "restricted"(default),i.e.>=0,or "unrestricted", 
i.e. positive or negative.

The cost coefficients, the c's, follow one by one; then the 
right-hand side constraints, e.g. the type (LE for <=, EQ for =,
GE for >=) and the b's.

The matrix of the a's must then be filled up in any order and only 
for the non-zero elements by specifying the corresponding indices.

%H1%Output%H1%
The optimal value of the cost function is followed by the optimal 
values of the n variables and the m values of the slacks 
(difference between the right-hand and left-hand side). With the 
help of the dual solution, the m "marginal costs" have also been 
calculated: they show by how much the optimum value would change 
if the constraining right-hand side(the b's) would individually be 
increased by one unit. Finally, the dual solution has also been 
used to calculate the "reduced costs", a value which shows for 
variables not part of the optimal solution by how much its cost 
coefficient should be increased to bring it in the optimal 
solution (everything else being equal)

%H1%Notes%H1%
In input and output, on the left-hand side of the screen, are 
shown the matrix indices of the first number on this line; this 
to help in reading numbers of large or long matrices. 

In statement 20 of the listing are set the maximum number of rows 
and colums; these values can of course be changed. 

At most points, to leave values unchanged or to skip, press the 
keys 0 or ENTER. 

A more extensive writeup can be obtained from the author.

Author: Bruno Pellaud
        Santisstrasse 22
        8123 Ebmatingen, Switzerland
%CO:B,11,56%%CO:C,11,45%%CO:D,11,34%%CO:E,11,23%%CO:F,11,12%