[Dip] Differences between GAP examples
Florian Fontan
dev at florian-fontan.fr
Wed Jun 12 16:14:24 EDT 2019
Indeed! I didn't think to look there.
I managed to compile the GAP example. I tested on instance a05100. This
instance is solved optimally by a naive implementation in CBC in 0.005s.
The optimal value is 1698 which is actually also the upper bound from
the linear relaxation. When I try the GAP implementation given as
example in Dip on this instance (./decomp_gap --param gap.parm)
* with doPriceCut = 1, doCut = 0, doDirect = 0: the lower bound found
is 1556, no feasible solution is found and the algorithm doesn't
terminate after at least several minutes
* with doPriceCut = 0, doCut = 1, doDirect = 0 or doDirect = 1: the
algorithm terminates very quickly, returning a best lower bound and
a best upper bound of 1693. I think it may be the solution of the
problem with the capacity constraints removed.
Is this the expected behavior?
Florian
Le 11/06/2019 à 22:34, Matthew Galati a écrit :
> The Makefile gives some hints... one case using the built-in MILP
> solver, one case uses a KP solver.
>
> #PC: oracle for KP solve is Pisinger, BranchEnforceInMaster
> OBJS += GAP_DecompApp. at OBJEXT@
> CFLAGS = -DVERSION1
>
> #TODO: BranchEnforceInSubProb using GAP_DecompApp2 or by option
>
> # CPM/PC: built-in MILP solver, dense model build
> # BranchEnforceInMaster or BranchEnforceInSubProb by option
> #OBJS += GAP_DecompApp3. at OBJEXT@
> #CFLAGS += -DVERSION3
>
> # CPM/PC: built-in MILP solver, sparse model build
> # BranchEnforceInMaster or BranchEnforceInSubProb by option
> #OBJS += GAP_DecompApp4. at OBJEXT@
> #CFLAGS += -DVERSION4
>
>
> On Tue, Jun 11, 2019 at 3:41 PM Florian Fontan <dev at florian-fontan.fr
> <mailto:dev at florian-fontan.fr>> wrote:
>
> Dear Dip community,
>
> I am trying to get familiar with Dip and understand how it works.
> Could
> someone tell me the differences between the multiple DecompApp
> implementation examples for the Generalized Assignment Problem?
> https://github.com/coin-or/Dip/tree/master/Dip/examples/GAP
>
> For example, in GAP_DecompApp.cpp, I noticed that the
> setModelRelax call
> passes NULL as first argument:
>
> setModelRelax(NULL, modelName, i);
>
> whereas in GAP_DecompApp3.cpp, an other model is defined:
>
> status = createModelPartKP(modelRelax, i);
> modelName = "KP" + UtilIntToStr(i);
> setModelRelax(modelRelax, modelName, i);
>
> What does that mean? I haven't found any documentation about it
>
> Florian
> _______________________________________________
> Dip mailing list
> Dip at list.coin-or.org <mailto:Dip at list.coin-or.org>
> https://list.coin-or.org/mailman/listinfo/dip
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/dip/attachments/20190612/506744b8/attachment.html>
More information about the Dip
mailing list