[Scip] SCIP_ConsData in constraint handler using C++

Stefan Heinz heinz at zib.de
Tue Jun 19 12:58:36 MEST 2012


Hi Grit,

On 06/18/12 17:23, Grit Claßen wrote:
> Hello,
>
> I am implementing a constraint handler for branching constraints in a 
> Branch-and-Price framework. To store some information on the 
> constraints, I would like to define a specific SCIP_ConsData. 
> Following the examples (bin packing or graph coloring), the 
> SCIP_ConsData could be defined like this:
>
> struct SCIP_ConsData
> {
>     int                   itemid1;           /**< item id one */
>     int                   itemid2;           /**< item id two */
>     CONSTYPE              type;               /**< stores whether the 
> items have to be in the SAME or DIFFER packing */
>     int                   npropagatedvars;    /**< number of variables 
> that existed, the last time, the related node was
>                                                *   propagated, used to 
> determine whether the constraint should be
>                                                *   repropagated*/
>     int                   npropagations;      /**< stores the number 
> propagations runs of this constraint */
>     unsigned int          propagated:1;       /**< is constraint 
> already propagated? */
>     SCIP_NODE*            node;               /**< the node in the 
> B&B-tree at which the cons is sticking */
> };
>
>
> However, as I am using C++ this overload of "typedef struct 
> SCIP_ConsData SCIP_CONSDATA" does not work, i.e., I cannot use 
> SCIP_CONSDATA instead of SCIP_ConsData when implementing the callback 
> functions of the constraint handler. The only way to handle constraint 
> data, I can think of, is to use some maps (e.g. constraint to 
> constraint data etc.). Is there a less cumbersome way?
Since you are using the C++ classes, the "objects" are just (private) 
members of you constraint handler class. Which could look like the 
following pricer class:
http://scip.zib.de/doc/examples/VRP/pricer__vrp_8h_source.html


BTW: You can also use the C plugins combined with C++ stuff (ike 
std::vector). The only thing you have to do, is to compile all the stuff 
with "g++" instead of "gcc".

Best Stefan
>
> Thanks,
> Grit
> -- 
>
> Dipl.-Comp.Math. Grit Claßen
>
> UMIC Research Centre and Lehrstuhl II für Mathematik
> RWTH Aachen University
> 52056 Aachen
> Germany
>
> phone: +49 241 80 20753 or +49 241 80 94999
> http://www.math2.rwth-aachen.de
> http://www.isek.rwth-aachen.de
>
>
>
> _______________________________________________
> Scip mailing list
> Scip at zib.de
> http://listserv.zib.de/mailman/listinfo/scip




More information about the Scip mailing list