RatiosLinear constraints are of the form: a1 x1 + a2 x2 + a3 x3 + ... >= minimum a1 x1 + a2 x2 + a3 x3 + ... <= maximum Where minimum and maximum are constants. lp_solve can only handle these kind of Linear equations. However sometimes there are tricks to convert an equation that seems non-Linear at first sight to a Linear equation. One of these is ratio's: a11 x1 + a12 x2 + a13 x3 + ... <= minimum On condition that a21 x1 + a22 x2 + a23 x3 + ... is positive, this is equal to: a11 x1 + a12 x2 + a13 x3 + ... <= minimum * (a21 x1 + a22 x2 +
a23 x3 + ...) If the denominator is always negative, then it can be converted to: a11 x1 + a12 x2 + a13 x3 + ... >= minimum * (a21 x1 + a22 x2 + a23 x3 + ...) Let's continue with the case that the denominator is positive, then the equation is also equal to: a11 x1 + a12 x2 + a13 x3 + ... - minimum * (a21 x1 + a22 x2 + a23 x3 + ...) <= 0 Or (a11 - minimum * a21) x1 + (a12 - minimum * a22) x2 + (a13 - minimum * a23) x3 + ... <= 0 And there we have again a Linear equation. The same can be done for a maximum or equality of course. Don't forget that there is one assumption: the denominator is positive or negative. If it can be both, then this trick cannot be used. One example of this is for example that it is required that two variables must have a ration of 1/2. For example: x1 = 1/2 With the formula above, this gives: x1 - 0.5 x2 = 0 Adding this equation will result in the fact that x2 will be two times larger than x1. Again in the assumption that x2 stays positive. Oh, and what if the denominator is zero? Division by zero is undefined and cannot give a real value. In the above example with two variables, if x2 is zero, then x1 is also forced to be zero. That is the side effect by converting the non-Linear equation to a Linear equation. |