Incorect result in Gnumeric solver



  I already posted messages to Jody and Jukka-Pekka, but now
after I compiled Gnumeric sources, our problem can be formulated
more clearly.
 
Consider this simple problem in .lp - format (for lp_solve):

max: x1 + x2 -1;
     2*x1 + x2 <= 3;
     x1 + 2*x2 <= 3;

By means of lp_solve we get the right answer:

Value of objective function: 1

Actual values of the variables:
x1                              1
x2                              1

----------------------------------------------------------

See attachment for Gnumeric sheet of the above model.  

Having compiled Gnumeric 1.4.3 solver with DEBUG_SOLVER=1,
we can see that the problem is altered in a strange way:

max: x1 + x2;
     (2+1)*x1 + x2   <= 3;
     (1+1)*x1 + 2*x2 <= 3;

giving completely incorrect solution: (0.75, 0.75).
The spreadsheet cells fool us that the constraints are not
satisfied (because the original coefficients are used 
in evaluation of constraints). But solver message tell us,
we have found the optimal solution... 

In theory, objective function can be reduced to dot product c x,
but we should not take this for granted, especially if we "generate"
linear subproblems as parts of bigger computations.

I am convinced that Gnumeric solver developers can quickly identify
the source of problems. No solution is better than wrong solution...
Or, temporarily, the "affine" form of objective function may be
disabled (not a good idea, I think)?

                                    Mike
      

Attachment: ErrSolver.gnumeric
Description: application/gnumeric



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]