00001
00002
00003 #ifndef _MKC_VARGEN_H
00004 #define _MKC_VARGEN_H
00005
00006 #include <cstdio>
00007
00008 #include "BCP_vector.hpp"
00009
00010 class MKC_knapsack_set;
00011 class MKC_knapsack_fixing;
00012 class MKC_var;
00013 class BCP_var;
00014
00015 double
00016 MKC_compute_ks_upper_bound(const MKC_knapsack_set& kss,
00017 const MKC_knapsack_fixing* ks_fixings,
00018 BCP_vec<MKC_var*>* enumerated_ks,
00019 const int max_enumerated_size,
00020 const double* dual,
00021 const double rc_bound,
00022 const double exact_red_cost,
00023 const bool print_best_dj,
00024 const bool fall_back_to_exact);
00025
00026 void
00027 MKC_generate_variables(const MKC_knapsack_set& kss,
00028 const MKC_knapsack_fixing* ks_fixings,
00029 BCP_vec<MKC_var*>* enumerated_ks,
00030 const int max_enumerated_size,
00031 const double* dual,
00032 const double gap,
00033 BCP_vec<BCP_var*>& new_vars,
00034 const double rc_bound,
00035 const bool for_all_knapsack,
00036 const bool all_encountered_var,
00037 const bool print_best_dj,
00038 const bool fall_back_to_exact,
00039 const int index, const int iternum);
00040
00041 double
00042 MKC_generate_vars_one_ks(const int ks_num, const int ks_ind,
00043 MKC_knapsack& ks_orig,
00044 const MKC_knapsack_fixing& ksf,
00045 const double* dual,
00046 BCP_vec<BCP_var*>& new_vars,
00047 const double rc_bound,
00048 const int what_to_do,
00049 FILE* log);
00050
00051 void
00052 MKC_do_the_knapsack(const int clr[2],
00053 const MKC_knapsack_entry * sublist,
00054 const int sublist_size,
00055 const MKC_knapsack& ks,
00056 const MKC_knapsack_fixing& ksf,
00057 const int ks_ind,
00058 const int ks_num,
00059 double& cutoff,
00060 BCP_vec<BCP_var*>& new_vars,
00061 int* tmp_chosen,
00062 const int what_to_do);
00063
00064 void
00065 MKC_check_enumerated_variables(const MKC_knapsack_set& kss,
00066 BCP_vec<MKC_var*>* enumerated_ks,
00067 const int max_enumerated_size,
00068 const double* dual,
00069 const double gap, const double rc_bound,
00070 BCP_vec<MKC_var*>& new_vars,
00071 const bool print_best_dj);
00072
00073 #endif