[CHiPPS] Informations about CHiPPS

Ted Ralphs ted at lehigh.edu
Fri Feb 21 09:50:38 EST 2020


Hi guys,

Let me first ask you exactly what you are hoping for to make sure that this
is the right tool for you to be working with. Are you just trying to learn
about column generation? Is there some specific capability of Blis you are
hoping to exploit? How did you settle on Blis as your platform? Do you hope
to end up with a full-blown branch-cut-and-price algorithm? Are you set on
working in C++? There are many frameworks out there in which you could do
this kind of work and I want to make sure you shouldn't be using another
one.

Anyway, with all that said, I'm happy to try to help. I took a look at what
you're doing and it's impressive you figured out how to get as far as you
did! But it looks like what you have tried to do so far is to use Blis in a
way we didn't really imagine. The way we intended it to be used was that
the model data would be read from a file and the model then built in memory
from the data in the file. The function for reading in the file and
building the model is BlisModel::readInstance, which is called as part of
the constructor of the broker. If you wanted to build the model in memory
without reading a file, you could (I think) just replace the default
readInstance() method with what you are now doing in BlisMain.cpp. We
intended this to be done by creating a user model class derived from
BlisModel that over-rides the methods in BlisModel as needed).

You can't really directly call the methods of BlisModel as you are trying
to do (I guess you can, but this will not contribute in any way to solving
your problem and may corrupt internal data structures). As a user, you are
only meant to instantiate the broker (building the model as part of the
constructor) and then call broker.search (as in the original BlisMain). The
framework then executes a standard branch and bound. If you want to
customize that branch-and-bound, then you need to over-ride component
methods, such as cut generation, etc. This is all done by deriving the base
classes of Blis and over-riding the appropriate methods. You can see how
this is done by looking at the VRP example.

Does this make sense? I can try to explain further if you need more help.

Cheers,

Ted

On Tue, Feb 18, 2020 at 10:48 AM Pierre-Antoine LEFRANC <
p-antoine.lefranc at etu.isima.fr> wrote:

> Hello,
>
> Me and my partner are students in a french informatic school, and we are
> working on implementing the column generator algorithm in Blis module. In
> order to do so, we are trying to understand the branch-and-cut algorithm,
> already implemented.
>
> And yet, despite of several hours of reading, we have difficulty to
> understand how objects work or are linked, and eveything that must be
> initialized and how.
>
> As an exemple, we are trying to solve a little problem, created in hard in
> the BlisMain.cpp file, and using the function resolve() of a BlisModel. It
> doesn't work and we haven't seen yet from where it could come from. Maybe
> from the Solver. We tried to used the broker, but it seems we are using it
> the wrong way.
>
> So we would like to know if anyone have a more precise exemple than the
> one in the BlisMain.cpp ? An exemple that could show us wich objects use,
> how to initialize them, and how to resolve a linear problem in a basic way.
>
> We joined our exemple, written in the BlisMain.cpp.
>
> Best regards
> Letourmy Bastien
> Lefranc Pierre-Antoine
> _______________________________________________
> CHiPPS mailing list
> CHiPPS at list.coin-or.org
>
> https://urldefense.proofpoint.com/v2/url?u=https-3A__list.coin-2Dor.org_mailman_listinfo_chipps&d=DwICAg&c=Ngd-ta5yRYsqeUsEDgxhcqsYYY1Xs5ogLxWPA_2Wlc4&r=rnUB298ByR5BGgo6vv2b6g&m=2iJDAe0AaMCo3BwurhU6_np6BxGWu2GOo6V7D5zYDdE&s=u7vRCsOJv5qjF9JvekzBmI_OiKRvmSUTDHvnAGBlEn8&e=
>


-- 
Dr. Ted Ralphs
Professor, Industrial and Systems Engineering
Lehigh University
(610) 628-1280
ted 'at' lehigh 'dot' edu
coral.ie.lehigh.edu/~ted
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/chipps/attachments/20200221/57970dea/attachment.html>


More information about the CHiPPS mailing list