[Coin-discuss] How to cut off "optimal" solution in CBC

Ted Ralphs tkralphs at lehigh.edu
Wed Aug 24 19:27:50 EDT 2005


Lou Hafer wrote:
> Ted writes (commenting on Mike's earlier post)
> 
> 
>>As Mike pointed out, there is no way for the solver to continue if the
>>current solution is integral and not feasible unless the user either
>>generates a cut or implements a special branching rule for this case.
> 
> 
> 	Perhaps I'm missing something obvious, but I don't agree with this.  The
> standard action on discovering a solution is to stash it away and retrieve a new
> node from the live set (i.e., to continue).  Deciding to discard the incumbent,
> the new solution, or both, can be an independent decision.  If the criteria for
> rejection amounts to something like `not aesthetically pleasing', that may not
> be possible to capture in a cut, but it's possible that the next solution the
> solver discovers may have that better look.  I agree that the user will likely
> want to do something beyond letting the solver stumble on blindly through the
> search tree.

Hmmm, I'm not sure I see exactly what you are getting at, but let me try 
to clear up the point I was trying to make. I think there are two 
different issues here that are getting mingled in the discussion. The 
first issue is the mechanism by which the solver actually determines 
whether it has a "solution." You mention a "standard action on 
discovering a solution," but a basic assumption of SYMPHONY (and the 
assumption of the other solvers Mike mentioned) is that the solver has 
no way of knowing when it has a solution. The user must either implement 
their own method for determining the feasibility of an integer solution, 
or tell SYMPHONY that satisfying integrality restrictions is enough, 
i.e., the initial constraints constitute a valid formulation for the 
problem. If the user declares an integral solution infeasible, but does 
not generate a cut or give the solver a way to branch (besides the 
default of branching on variables, which isn't possible with an integer 
solution), then the solver cannot continue the solution process (at 
least not if the user wants a provably optimal solution). In this case, 
SYMPHONY's default action is to punt. I suppose it could continue 
anyway, with a warning that one of the search tree nodes had an 
undetermined status....anyway, this is the situation I was referring to 
in my previous post.

On the other hand, I think you are referring to the possibility that the 
user might want to "reject" a solution that has been declared feasible 
and could in fact be optimal with respect to the current objective, in 
the hope of finding an alternative optimum that is "better" according to 
some criterion. This is in fact a necessary technique in the case of 
solving multi-criteria problems, where the solver must be able to find, 
among all alternative optima with respect to one objective, the one tat 
is best with respect to a second objective. SYMPHONY has this capability 
as well, but even in this case, I think there has to be a systematic way 
for the solver to continue the search. Allowing the user to simply 
declare a solution "undesirable," without providing a secondary 
objective or some other way of continuing that the solver understands 
seems strange to me. It could turn out later that the solution that was 
rejected was actually the best one (even taking into account the 
secondary objective). I suppose you could adopt the policy that is up to 
the user to track the rejected solutions, in case they are needed later, 
but the end result might be that the solver can only declare the optimal 
value in the end and not return a solution. I guess there are a number 
of ways you could go with this and no one of them is correct. Hope this 
long-winded explanation clears things up :).

Cheers,

Ted


-- 
Dr. Ted Ralphs
Assistant Professor
Industrial and Systems Engineering
Lehigh University
(610)758-4784
tkralphs at lehigh.edu
www.lehigh.edu/~tkr2



More information about the Coin-discuss mailing list