20 std::shared_ptr<ProblemGenerationLog::ProblemGenerationLogger> logger)
24 Problem *problem,
const std::vector<ActiveLink> &active_links,
25 const std::map<linkId, ColumnsToChange> &p_ntc_columns,
26 const std::map<linkId, ColumnsToChange> &p_direct_cost_columns,
27 const std::map<linkId, ColumnsToChange> &p_indirect_cost_columns);
29 unsigned int get_candidate_col_id(
const std::string &cand_name)
const;
30 bool has_candidate_col_id(
const std::string &cand_name)
const;
32 :
public LogUtils::XpansionError<std::runtime_error> {
33 using LogUtils::XpansionError<std::runtime_error>::XpansionError;
38 const std::vector<ActiveLink> &active_links,
39 const std::map<linkId, ColumnsToChange> &p_ntc_columns,
40 const std::map<linkId, ColumnsToChange> &p_direct_cost_columns,
41 const std::map<linkId, ColumnsToChange> &p_indirect_cost_columns);
43 void remove_bounds_for(
const std::vector<int> &col_ids)
const;
45 void change_upper_bounds_to_pos_inf(
const std::vector<int> &col_id)
const;
47 void change_lower_bounds_to_neg_inf(
const std::vector<int> &col_id)
const;
49 void add_new_columns(
const std::vector<Candidate> &candidates);
51 void add_new_ntc_constraints(
52 const std::vector<ActiveLink> &active_links,
53 const std::map<linkId, ColumnsToChange> &p_ntc_columns);
55 void add_new_direct_cost_constraints(
56 const std::vector<ActiveLink> &active_links,
57 const std::map<linkId, ColumnsToChange> &p_cost_columns);
59 void add_new_indirect_cost_constraints(
60 const std::vector<ActiveLink> &active_links,
61 const std::map<linkId, ColumnsToChange> &p_cost_columns);
64 std::map<std::string, unsigned int> _candidate_col_id;
65 unsigned int _n_cols_at_start = 0;
67 void add_direct_profile_column_constraint(std::vector<double> &dmatval,
68 std::vector<int> &colind,
69 std::vector<char> &rowtype,
70 std::vector<double> &rhs,
71 std::vector<int> &rstart,
75 void add_indirect_profile_ntc_column_constraint(std::vector<double> &dmatval,
76 std::vector<int> &colind,
77 std::vector<char> &rowtype,
78 std::vector<double> &rhs,
79 std::vector<int> &rstart,
82 void add_indirect_cost_column_constraint(std::vector<double> &dmatval,
83 std::vector<int> &colind,
84 std::vector<char> &rowtype,
85 std::vector<double> &rhs,
86 std::vector<int> &rstart,
89 bool candidateContributionDirectIsNotNull(
const ColumnToChange &column,
90 unsigned int chronicle_to_use,
92 unsigned int chronicleToUse(
const ActiveLink &link)
const;
93 std::vector<Candidate> candidates_with_not_null_profile(
94 const std::vector<ActiveLink> &active_links,
95 const std::set<int> &time_steps)
const;
97 bool candidateContributionIndirectIsNotNull(
const ColumnToChange &column,
98 unsigned int chronicle_to_use,
100 std::shared_ptr<ProblemGenerationLog::ProblemGenerationLogger> logger_;