25 std::vector<ExchangeNode::Ptr>::iterator n_it;
26 std::map<Arc, std::vector<double>>::iterator c_it;
27 std::map<Arc, double>::iterator p_it;
28 std::vector<RequestGroup::Ptr>::iterator rg_it;
29 std::vector<ExchangeNodeGroup::Ptr>::iterator sg_it;
30 double min_cap, pref, coeff;
32 double max_coeff = std::numeric_limits<double>::min();
33 double min_unit_cap = std::numeric_limits<double>::max();
35 for (sg_it =
graph_->supply_groups().begin();
36 sg_it !=
graph_->supply_groups().end();
38 std::vector<ExchangeNode::Ptr>& nodes = (*sg_it)->nodes();
39 for (n_it = nodes.begin(); n_it != nodes.end(); ++n_it) {
41 std::map<Arc, std::vector<double>>::iterator c_it;
42 std::map<Arc, std::vector<double>>& caps = (*n_it)->unit_capacities;
43 for (c_it = caps.begin(); c_it != caps.end(); ++c_it) {
44 std::vector<double>& ucaps = c_it->second;
46 min_cap = *std::min_element(ucaps.begin(), ucaps.end());
47 if (min_cap < min_unit_cap) min_unit_cap = min_cap;
53 for (rg_it =
graph_->request_groups().begin();
54 rg_it !=
graph_->request_groups().end();
56 std::vector<ExchangeNode::Ptr>& nodes = (*rg_it)->nodes();
57 for (n_it = nodes.begin(); n_it != nodes.end(); ++n_it) {
59 std::map<Arc, std::vector<double>>::iterator c_it;
60 std::map<Arc, std::vector<double>>& caps = (*n_it)->unit_capacities;
61 for (c_it = caps.begin(); c_it != caps.end(); ++c_it) {
62 std::vector<double>& ucaps = c_it->second;
64 min_cap = *std::min_element(ucaps.begin(), ucaps.end());
65 if (min_cap < min_unit_cap) min_unit_cap = min_cap;
70 std::map<Arc, double>& prefs = (*n_it)->prefs;
71 for (p_it = prefs.begin(); p_it != prefs.end(); ++p_it) {
73 const Arc& a = p_it->first;
75 if (coeff > max_coeff) max_coeff = coeff;
80 return max_coeff / min_unit_cap * (1 + cost_factor);