2

Do you know if there's a way to change some constraints in an already solved Cplex constraint optimization problem, and solve it again but with the result being as close as possible to the previous solution.

Example:

Tasks are assigned to different resources. Resource 1 has tasks A, B & C, Resource 2 has tasks D, E & F.

When I add Resource 3, I want the new assignment to be something like:

R1 = A & B
R2 = D & E
R3 = C & F

But Cplex will probably return something like:

R1: F & E
R2: A & B 
R3: C & D

Or any other possible combination that could be completely different to the initial solution.

I think this problem is called Dynamic Constraint Satisfaction Problem.

I've been doing a lot of research but it doesn't look like there's an easy way to do it. Looks like I'll have to do my own implementation (which is ok). In that case, how do you propose I should approach the problem?

Thanks

Michael W
  • 690
  • 1
  • 9
  • 22
Leandro
  • 31
  • 1
  • 5

1 Answers1

2

The class of these problems is more generally referred to as as assignment problem in Operations Research.

Very simply, we assign tasks to resources under certain constraints. The objective function (goal) is minimize the cost of such assignments. One set of constraints ensures that every job is assigned to a resource.

You can certainly use CPLEX (or any LP solver) to get the solution. Assignment problems in particular are "easier" in that you don't even need to invoke Simplex. A method known as the Hungarian Method will yield the optimal solution.

Specifically, in your case, since you want to retain most of the existing solution, you can assign costs or weights to give incentives to certain assignments. For example, in your problem, if you make the cost of assigning A & B to R1 very low, the final solution will have that unless there is a compelling need to change that assignment.

Here's one reference for the Assignment Problem.

Also look up The Hungarian Method in Wikipedia which has a very accessible section called layman's explanation. Once you do that, you can also read up on Sensitivity Analysis in CPLEX, wherein you use the so-called "warm-start" to use previously generated solutions.

Ram Narasimhan
  • 22,341
  • 5
  • 49
  • 55
  • Thanks a lot! That was really helpful. I'm doing some research and when I'm done I'll share the solution. – Leandro Jan 16 '12 at 13:14