3#ifndef _BCP_PROBLEM_CORE_H
4#define _BCP_PROBLEM_CORE_H
18class BCP_indexed_pricing_list;
BCP_storage_t
This enumerative constant describes how to store certain data for a search tree node.
@ BCP_Storage_WrtCore
The data stored is with respect to the original description of the base problem (as was given by the ...
This class describes the message buffer used for all processes of BCP.
Core cuts are the cuts that always stay in the LP formulation.
This class is just a collection of pointers to cuts with a number of methods to manipulate these cuts...
This class is the internal representation of a branching object.
An object of type BCP_lp_relax holds the description of an lp relaxation.
This class describes changes in the core of the problem.
BCP_problem_core_change(BCP_storage_t storage, BCP_problem_core_change &ocore, BCP_problem_core_change &ncore)
Create a core change describing the changes from old_bc</node> to new_bc.
void swap(BCP_problem_core_change &other)
Swap the contents of the current core change with that of other.
void update(const BCP_problem_core_change &expl_core, const BCP_problem_core_change &core_change)
Update the current change according to core_change.
void ensure_explicit(const BCP_problem_core_change &expl_core)
If the current storage is not already explicit then replace it with an explicit description of the co...
void pack(BCP_buffer &buf) const
Pack the core change into the buffer.
BCP_vec< int > var_pos
The positions of the core variables (in the vars member of \URL[BCP_problem_core]{BCP_problem_core....
BCP_storage_t storage() const
Return the storage type.
BCP_vec< BCP_obj_change > var_ch
The new lb/ub/status triplet for each variable for which any of those three have changed.
BCP_problem_core_change(BCP_storage_t store=BCP_Storage_WrtCore)
This constructor creates a core change with the given storage.
size_t cutnum() const
Return the number of changed cuts (the length of the array cut_ch).
BCP_vec< int > cut_pos
The positions of the core cuts (in the cuts member of \URL[BCP_problem_core]{BCP_problem_core....
BCP_storage_t _storage
Describes how the change is stored.
BCP_problem_core_change & operator=(const BCP_problem_core &core)
Set the core change description to be an explicit description (in the form of a change) of the given ...
BCP_vec< BCP_obj_change > cut_ch
The new lb/ub/status triplet for each cut for which any of those three have changed.
int pack_size() const
Return the buffer size needed to pack the data in the core change.
void make_wrtcore_if_shorter(const BCP_problem_core_change &orig_core)
Replace the current explicitly stored core change with one stored with respect to the explicitly stor...
void unpack(BCP_buffer &buf)
Unpack the core change data from the buffer.
size_t varnum() const
Return the number of changed variables (the length of the array var_ch).
~BCP_problem_core_change()
The destructor deletes all data members.
BCP_problem_core_change(int bvarnum, BCP_var_set &vars, int bcutnum, BCP_cut_set &cuts)
This constructor creates an Explicit core change description.
This class describes the core of the MIP problem, the variables/cuts in it as well as the matrix corr...
size_t cutnum() const
Return the number of cuts in the core.
BCP_problem_core(BCP_vec< BCP_var_core * > &v, BCP_vec< BCP_cut_core * > &c, BCP_lp_relax *&m)
This constructor "takes over" the arguments.
void unpack(BCP_buffer &buf)
Unpack the contents of the core description from the buffer.
void pack(BCP_buffer &buf) const
Pack the contents of the core description into the buffer.
BCP_vec< BCP_cut_core * > cuts
A vector of pointers to the cuts in the core of the problem.
BCP_problem_core()
The default constructor creates an empty core description: no variables/cuts and an empty matrix.
BCP_vec< BCP_var_core * > vars
A vector of pointers to the variables in the core of the problem.
size_t varnum() const
Return the number of variables in the core.
~BCP_problem_core()
The desctructor deletes all data members.
BCP_lp_relax * matrix
A pointer to the constraint matrix corresponding to the core variables and cuts.
Core variables are the variables that always stay in the LP formulation.
This class is just a collection of pointers to variables with a number of methods to manipulate these...
The class BCP_vec serves the same purpose as the vector class in the standard template library.
size_t size() const
Return the current number of entries.
void swap(BCP_vec< T > &x)
Exchange the contents of the object with that of x.