[Coin-discuss] Some questions on heuristic and cut writing style
Fabrizio Ferrandi
fabriziofer at hotmail.com
Fri Mar 25 02:09:50 EST 2005
I need some support to develop my own code that try to solve the scheduling
of the operations extracted from a behavioral description (High-level
synthesis of VLSI design). In particular, this "scheduling" try to
minimize
the number of control steps to which assign the operations given some
resource constraints. To solve this particular scheduling problem
several
heuristic approaches and also some exact approaches based on integer
linear
programming has been proposed. To validate the efficiency of my approach
I
implement also the ILP solution.
Ive considered several open source project but until now the most
interesting results come from the Cbc standalone solver.
To improve the performance of Cbc Ive wrote some specific heuristics
and
Ive also tried to define some global cuts.
The heuristic currently developed is quite different from those provided
with the COIN-OR distribution, since it does not use any linear solver
but a
different data structure. It is very fast and can exploit also some
information provided by Cbc. In fact, if the Cbc framework fixes some
variables then the heuristic can propose a solution that take into
account
such suggestion.
Now, I suppose that a partial solution, columns fixed by presolve, or by
standard cuts, or simply by the branch process, can be obtained using
the
function getColSolution provided by the OsiSolver.
Is it true?
Currently, Ive some source code that correctly work when no partial
solution is considered (the solution provided to the Cbc code has been
validated and accepted) but problems arise when I try to use the
getColSolution function.
Moreover, when a solution has been found by strong branching or by my
heuristic I can further fix the problem by setting to zero some columns.
By
browsing the code I see that the cut generator actually does not allow
this
type of operation. It allows the addition of column cuts but it seems to
me
that such cut are used only when constraints are violated. Actually
fixing
columns to zero should further reduce the number of variables used by
the
branch code.
Ive also seen that CglProbing is able to modify the matrix but this is
based on some ad-hoc code. Do you think that the right solution to my
problem is to mimic the CglProbing code?
After hard debugging Ive also seen a strange behavior. When a solution
is
provided by my heuristic the getColSolution function actually does not
return it but something of different. It could be the linear relaxation
but
Im not sure.
How can I get the best solution found until now inside the generateCuts
virtual function of the my user specified cut class?
I hope that my questions are clear enough. In any case I can provide
further
details.
Best Regards,
Fabrizio Ferrandi
_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today it's FREE!
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
More information about the Coin-discuss
mailing list