171 for (
int i = var_set.
_change.
size() - 1; i >= 0; --i) {
172 added_vars[i]->change_lb_ub_st(var_set.
_change[i]);
200 for (
int i = cut_set.
_change.
size() - 1; i >= 0; --i) {
201 added_cuts[i]->change_lb_ub_st(cut_set.
_change[i]);
251 BCP_lp_unpack_active_node: parent's or node's warmstart is non-0.\n");
283 for (i = 0; i < cnt; ++i) {
289 for (i = 0; i < cnt; ++i) {
This class describes changes in the core of the problem.
BCP_warmstart * warmstart
this is always explicit, it's just that coding is simpler if we reuse the BCP_obj_set_change object ...
void unpack(BCP_user_pack *packer, const bool def, BCP_buffer &buf)
This class stores data about how an object set (set of vars or set of cuts) changes.
bool empty() const
Test if there are any entries in the object.
virtual void update(const BCP_warmstart *const change)=0
Update the current data with the one in the argument.
BCP_lp_node * node
Description he current search tree node.
void BCP_lp_unpack_active_node(BCP_lp_prob &p, BCP_buffer &buf)
BCP_buffer & unpack(T &value)
Unpack a single object of type T.
The data stored is with respect to the original description of the base problem (as was given by the ...
BCP_lp_parent * parent
Description of the parent of the current node.
static void BCP_lp_create_added_cuts(BCP_lp_prob &p, BCP_node_change &node_change)
char param(BCP_lp_par::chr_params key) const
Print out a message when the default version of an overridable method is executed.
static void BCP_lp_unpack_parent(BCP_lp_prob &p, BCP_buffer &buf, BCP_lp_node &node)
void update(const BCP_obj_set_change &objs_change)
Abstract base class that defines members common to all types of cuts.
BCP_node_storage_in_tm tm_storage
virtual BCP_user_data * unpack_user_data(BCP_buffer &buf)
Unpack an user data.
BCP_storage_t storage() const
Return the storage type.
size_t varnum() const
Return the number of changed variables (the length of the array var_ch).
BCP_obj_set_change cut_set
this is always explicit, it's just that coding is simpler if we reuse the BCP_obj_set_change object ...
void set_lb_ub_st(const BCP_vec< BCP_obj_change > &cc)
Set the lower/upper bound pairs and the stati of the first cc.
virtual BCP_warmstart * clone() const =0
Make a replica of the current warmstart information.
iterator begin()
Return an iterator to the beginning of the object.
void reserve(const size_t n)
Reallocate the object to make space for n entries.
BCP_vec< int > cut_pos
The positions of the core cuts (in the cuts member of [BCP_problem_core]{BCP_problem_core.html}) whose bounds and/or stati have changed.
static void BCP_lp_create_warmstart(BCP_lp_prob &p, BCP_node_change &node_change)
virtual BCP_warmstart * unpack_warmstart(BCP_buffer &buf, bool report_if_default=false)
Unpack warmstarting information.
size_t cutnum() const
Return the number of changed cuts (the length of the array cut_ch).
BCP_vec< BCP_cut_core * > cuts
A vector of pointers to the cuts in the core of the problem.
int index
this is always explicit, it's just that coding is simpler if we reuse the BCP_obj_set_change object ...
The data stored is an explicit listing of values.
size_t varnum() const
Return the number of variables in the core.
BCP_vec< int > var_pos
The positions of the core variables (in the vars member of [BCP_problem_core]{BCP_problem_core.html}) whose bounds and/or stati have changed.
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 core_change
BCP_warmstart * warmstart
BCP_obj_set_change cut_change
size_t cutnum() const
Return the number of cuts in the core.
static void BCP_lp_create_core(BCP_lp_prob &p, BCP_node_change &node_change)
BCP_obj_set_change var_set
this is always explicit, it's just that coding is simpler if we reuse the BCP_obj_set_change object ...
The data stored is with respect to the same kind of data in the parent of the search tree node...
BCP_problem_core_change core_as_change
this is always explicit, it's just that coding is simpler if we reuse the BCP_obj_set_change object ...
void unpack(BCP_buffer &buf)
Unpack the core change data from the buffer.
BCP_storage_t storage() const
Abstract base class that defines members common to all types of variables.
Currently there isn't any error handling in BCP.
BCP_storage_t core_change
size_t size() const
Return the current number of entries.
BCP_column_generation colgen
void unpack(BCP_buffer &buf)
This class describes the message buffer used for all processes of BCP.
void unchecked_push_back(const_reference x)
Append x to the end of the vector.
BCP_obj_set_change var_change
BCP_user_data * user_data
Data the user wants to pass along with the search tree node.
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...
BCP_warmstart * warmstart
static void BCP_lp_create_added_vars(BCP_lp_prob &p, BCP_node_change &node_change)
BCP_problem_core_change * core_as_change
static void BCP_lp_create_node(BCP_lp_prob &p, BCP_node_change &node_change)
BCP_vec< BCP_obj_change > _change
static void BCP_lp_set_core(BCP_lp_prob &p, BCP_lp_node &node, BCP_problem_core_change &core)
static void BCP_lp_modify_core(BCP_lp_node &node, BCP_problem_core_change &change)
BCP_vec< BCP_var_core * > vars
A vector of pointers to the variables in the core of the problem.
void set_lb_ub_st(const BCP_vec< BCP_obj_change > &vc)
Set the lower/upper bound pairs and the stati of the first cc.
BCP_vec< BCP_obj_change > cut_ch
The new lb/ub/status triplet for each cut for which any of those three have changed.
BCP_user_pack * packer
A class that holds the methods about how to pack things.