19 ProblemModifier(std::shared_ptr<ProblemGenerationLog::ProblemGenerationLogger> logger):
24 void changeProblem(
Problem* problem,
25 const std::vector<ActiveLink>& active_links,
26 const std::map<linkId, ColumnsToChange>& p_ntc_columns,
27 const std::map<linkId, ColumnsToChange>& p_direct_cost_columns,
28 const std::map<linkId, ColumnsToChange>& p_indirect_cost_columns);
30 unsigned int get_candidate_col_id(
const std::string& cand_name)
const;
31 bool has_candidate_col_id(
const std::string& cand_name)
const;
35 using LogUtils::XpansionError<std::runtime_error>::XpansionError;
39 void changeProblem(
const std::vector<ActiveLink>& active_links,
40 const std::map<linkId, ColumnsToChange>& p_ntc_columns,
41 const std::map<linkId, ColumnsToChange>& p_direct_cost_columns,
42 const std::map<linkId, ColumnsToChange>& p_indirect_cost_columns);
44 void remove_bounds_for(
const std::vector<int>& col_ids)
const;
46 void change_upper_bounds_to_pos_inf(
const std::vector<int>& col_id)
const;
48 void change_lower_bounds_to_neg_inf(
const std::vector<int>& col_id)
const;
50 void add_new_columns(
const std::vector<Candidate>& candidates);
52 void add_new_ntc_constraints(
const std::vector<ActiveLink>& active_links,
53 const std::map<linkId, ColumnsToChange>& p_ntc_columns);
55 void add_new_direct_cost_constraints(
const std::vector<ActiveLink>& active_links,
56 const std::map<linkId, ColumnsToChange>& p_cost_columns);
58 void add_new_indirect_cost_constraints(
const std::vector<ActiveLink>& active_links,
59 const std::map<linkId, ColumnsToChange>& p_cost_columns);
62 std::map<std::string, unsigned int> _candidate_col_id;
63 unsigned int _n_cols_at_start = 0;
65 void add_direct_profile_column_constraint(std::vector<double>& dmatval,
66 std::vector<int>& colind,
67 std::vector<char>& rowtype,
68 std::vector<double>& rhs,
69 std::vector<int>& rstart,
73 void add_indirect_profile_ntc_column_constraint(std::vector<double>& dmatval,
74 std::vector<int>& colind,
75 std::vector<char>& rowtype,
76 std::vector<double>& rhs,
77 std::vector<int>& rstart,
80 void add_indirect_cost_column_constraint(std::vector<double>& dmatval,
81 std::vector<int>& colind,
82 std::vector<char>& rowtype,
83 std::vector<double>& rhs,
84 std::vector<int>& rstart,
87 bool candidateContributionDirectIsNotNull(
const ColumnToChange& column,
88 unsigned int chronicle_to_use,
90 unsigned int chronicleToUse(
const ActiveLink& link)
const;
91 std::vector<Candidate> candidates_with_not_null_profile(
92 const std::vector<ActiveLink>& active_links,
93 const std::set<int>& time_steps)
const;
95 bool candidateContributionIndirectIsNotNull(
const ColumnToChange& column,
96 unsigned int chronicle_to_use,
98 std::shared_ptr<ProblemGenerationLog::ProblemGenerationLogger> logger_;