1

I am solving a maximization binary programming problem (binary programming is the same as integer programming but the solution is a vector of 0's and 1's). I would like to find the best 10 solutions. I don't mean the best 10 solutions where all 10 objective function values are necessarily equal -- but rather: i want the first solution to be the optimal solution with the given constraints; i want the second solution to be optimal, if the first solution is ruled out; the third solution must be optimal if the first and second solution are ruled out, and so on.

I am using the lpSolve package in R, which gives only the single best solution. so i have written a script which attempts to iteratively find the best k solutions as follows:

for (j going from 1 to k){
  (1) given the set of constraints, find the best solution, and record it
  (2) add a new constraint (such that the solution found in (1) is invalid) to the set of constraints
}

my script repeats (1) and (2) k times and reports the k solutions as well as the value of the objective function for each of the k solutions.

Now, here is my problem: by my understanding, for a maximization problem, the j-th solution must always have an objective value that is less than or equal to the (j-1)-th solution (right?), that is the objective values must be monotonically decreasing because the j-th solution and the (j-1)-th solution satisfy all the same constraints, except that the j-th solution must satisfy one additional constraint that the (j-1)-th solution does not necessarily satisfy.

however, this is not the case with my script. there is definitely a downward trend but the objective values are NOT monotonically decreasing. below is a graph of objective values vs. k:

enter image description here

I would like to know: is the problem with lpSolve? is there a problem with my script? should the objective function values even be monotonically decreasing or is my understanding skewed?

UPDATE: i managed to replicate the described procedure in the other lpSolve interface for R, lpSolveAPI and got a monotonically decreasing graph as expected. so i think lpSolve is problematic.

user282002
  • 11
  • 2
  • So you managed to get the monotonically decreasing behaviour that you expected through one API to lpSolve, and not the other. That suggests to me that there is either a problem with one of the APIs or how you implemented your procedure with one of the APIs, not that there is a problem with lpSolve itself. – TimChippingtonDerrick Apr 12 '17 at 07:13

0 Answers0