Hi,
I have two questions.
I was going through the SimplexTableau.java code, tried to understand every
line
of it. In the dropPhase1Objective() method I was puzzled a little bit, maybe
you
can explain.
You are dropping positive cost non-artificial variables, which means that some
original decision variable may be dropped in the process. However, that
decision
variable may be
still there in the main objective Z and the constraints. Or is it now
substituted by a basic artificial variable?
Also, according to the getSolution() code, I see that the dropped variable will
be assumed to have zero value. Again, I don't quite understand how that is
going
to work.
I would understand if in dropPhase1Objective() you would examine the positive
cost of the variable regarding the main Z objective, but you do it for the
phase1 W objective (row # 0):
// positive cost non-artificial variables
for (int i = getNumObjectiveFunctions(); i < getArtificialVariableOffset();
i++)
{
if (MathUtils.compareTo(tableau.getEntry(0, i), 0, epsilon) > 0) {
columnsToDrop.add(i);
}
}
Another question. I actually need to solve the quadratic optimization, which is
done by modified simplex method. This is why I was studying the code. Are there
any plans to add it in the apache.commons.math?
I saw a few free implementations, but each of them uses there own libraries for
basic matrix/vector math, and I would really prefer to stick with apache. So I
was thinking of doing it myself based on your current code.
Thanks,
Leonid