I have yet to solve the problem because of the time it takes. (My longest
run yet is about 5.5 hours before I lost patience and tried something else.)
I am now using brute force and have allocated the problem to a 533Mhz, 128MB
ram machine until the problem is solved.
I would however prefer a more elegant solution and wonder if there is any
way of forcing the LP solution closer to the IP solution through improved
model structure.
Anyone with any ideas or who would be interested in looking at the problem?
Wayne Duff-Riddell
Department of Civil Engineering
University of Stellenbosch
South Africa
e-mail: ti...@intekom.co.za
30 20 40 35 25 15 20 15 | y z
=============================
1 1 1 1 1 1 1 1 | 200 100
1 1 1 1 0 0 0 0 | 125 75
1 1 0 0 1 1 0 0 | 90 80
1 0 1 0 1 0 1 0 | 115 50
The optimum solution for this would be:
30 20 0 25 20 5 0 0 | x z
=============================
1 1 1 1 1 1 1 1 | 100 100
1 1 1 1 0 0 0 0 | 75 75
1 1 0 0 1 1 0 0 | 75 80
1 0 1 0 1 0 1 0 | 50 50
Note that the objective is not Maximize A*n under the restriction A*n<=z and
that the n_j are required to be integer.
Currently I use a modified simplex method to solve this, but I'm not
satisfied because I suppose that there must be a better algorithm for this
problem, which uses the special problem structure (similar to MODI-Method
for Transportian problem or Hungarian Method for Assignment problem). The
main problem is that the memory requirement increases too much (a problem
with I+1 properties needs 4 times the memory of a problem with I properties
in the simplex tableau).
Could anybody give me a hint where to find something about this in the
literature (classification or algorithm)?
Lutz Tautenhahn
lutz.ta...@wirtschaft.tu-chemnitz.de
www.tu-chemnitz.de/~luta/
30 20 40 35 25 15 20 15 | y z
=============================
1 1 1 1 1 1 1 1 | 200 100
1 1 1 1 0 0 0 0 | 125 75
1 1 0 0 1 1 0 0 | 90 80
1 0 1 0 1 0 1 0 | 115 50
The optimum solution for this would be:
30 20 0 25 20 5 0 0 | x z
=============================
1 1 1 1 1 1 1 1 | 100 100
1 1 1 1 0 0 0 0 | 75 75
1 1 0 0 1 1 0 0 | 75 80
1 0 1 0 1 0 1 0 | 50 50
Note that the objective is not Maximize A*n under the restriction A*n<=z and
that the n_j are required to be integer.
Currently I use a modified simplex method to solve this, but I'm not
satisfied because I suppose that there must be a better algorithm for this
problem, which uses the special problem structure (similar to MODI-Method
for Transportian problem or Hungarian Method for Assignement problem). The
hence you have _two_ objective functions:
you want to have a small N _and_ a small deviation ||Ay-z||
you could do that by introducing zero-one variables
y_i in {0,1} i=1,..,N (*)
f1(y,eps)=M=\sum_{i=1}^N y_i first objective function
f2(y,eps)=eps
-eps*ones <= Ay-z <= eps*ones, (**)
where ones is a vector of all ones of length I.
minimize a scalarization
theta*f1(y,eps)+f2(y,eps)
subject to the constraints (*) and (**) and increase theta from zero to some
large value. for theta=zero you get the best possible fit possible at all
and you can see then how much loss you may tolerate. with better knowledge
of the problem you surely can do better with this scalarization.
for zero-one LP's there are several possibilities,
see e.g.
http://plato.la.asu.edu/guide.html
and also the other links given there.
hope that helps
peter