Changes in / [618:b95898314e09:617:4137ef9aacc6] in lemon-main
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
lemon/network_simplex.h
r618 r612 1148 1148 // Run Circulation to check if a feasible solution exists 1149 1149 typedef ConstMap<Arc, Flow> ConstArcMap; 1150 ConstArcMap zero_arc_map(0), inf_arc_map(inf_cap);1151 1150 FlowNodeMap *csup = NULL; 1152 1151 bool local_csup = false; … … 1169 1168 } else { 1170 1169 Circulation<GR, FlowArcMap, ConstArcMap, FlowNodeMap> 1171 circ(_graph, *_plower, inf_arc_map, *csup);1170 circ(_graph, *_plower, ConstArcMap(inf_cap), *csup); 1172 1171 circ_result = circ.run(); 1173 1172 } … … 1175 1174 if (_pupper) { 1176 1175 Circulation<GR, ConstArcMap, FlowArcMap, FlowNodeMap> 1177 circ(_graph, zero_arc_map, *_pupper, *csup);1176 circ(_graph, ConstArcMap(0), *_pupper, *csup); 1178 1177 circ_result = circ.run(); 1179 1178 } else { 1180 1179 Circulation<GR, ConstArcMap, ConstArcMap, FlowNodeMap> 1181 circ(_graph, zero_arc_map, inf_arc_map, *csup);1180 circ(_graph, ConstArcMap(0), ConstArcMap(inf_cap), *csup); 1182 1181 circ_result = circ.run(); 1183 1182 } … … 1196 1195 } else { 1197 1196 Circulation<RevGraph, FlowArcMap, ConstArcMap, NegNodeMap> 1198 circ(rgraph, *_plower, inf_arc_map, neg_csup);1197 circ(rgraph, *_plower, ConstArcMap(inf_cap), neg_csup); 1199 1198 circ_result = circ.run(); 1200 1199 } … … 1202 1201 if (_pupper) { 1203 1202 Circulation<RevGraph, ConstArcMap, FlowArcMap, NegNodeMap> 1204 circ(rgraph, zero_arc_map, *_pupper, neg_csup);1203 circ(rgraph, ConstArcMap(0), *_pupper, neg_csup); 1205 1204 circ_result = circ.run(); 1206 1205 } else { 1207 1206 Circulation<RevGraph, ConstArcMap, ConstArcMap, NegNodeMap> 1208 circ(rgraph, zero_arc_map, inf_arc_map, neg_csup);1207 circ(rgraph, ConstArcMap(0), ConstArcMap(inf_cap), neg_csup); 1209 1208 circ_result = circ.run(); 1210 1209 } -
test/min_cost_flow_test.cc
r615 r609 234 234 typedef int Flow; 235 235 typedef int Cost; 236 typedef concepts::Digraph GR; 236 // TODO: This typedef should be enabled if the standard maps are 237 // reference maps in the graph concepts (See #190). 238 /**/ 239 //typedef concepts::Digraph GR; 240 typedef ListDigraph GR; 241 /**/ 237 242 checkConcept< McfClassConcept<GR, Flow, Cost>, 238 243 NetworkSimplex<GR, Flow, Cost> >(); -
tools/dimacs-solver.cc
r614 r611 94 94 template<class Value> 95 95 void solve_min(ArgParser &ap, std::istream &is, std::ostream &, 96 Value infty,DimacsDescriptor &desc)96 DimacsDescriptor &desc) 97 97 { 98 98 bool report = !ap.given("q"); … … 101 101 Digraph::NodeMap<Value> sup(g); 102 102 Timer ti; 103 104 ti.restart(); 105 readDimacsMin(is, g, lower, cap, cost, sup, infty, desc); 106 ti.stop(); 107 Value sum_sup = 0; 108 for (Digraph::NodeIt n(g); n != INVALID; ++n) { 109 sum_sup += sup[n]; 110 } 111 if (report) { 112 std::cerr << "Sum of supply values: " << sum_sup << "\n"; 113 if (sum_sup <= 0) 114 std::cerr << "GEQ supply contraints are used for NetworkSimplex\n\n"; 115 else 116 std::cerr << "LEQ supply contraints are used for NetworkSimplex\n\n"; 117 } 103 ti.restart(); 104 readDimacsMin(is, g, lower, cap, cost, sup, 0, desc); 118 105 if (report) std::cerr << "Read the file: " << ti << '\n'; 119 120 106 ti.restart(); 121 107 NetworkSimplex<Digraph, Value> ns(g); 122 108 ns.lowerMap(lower).capacityMap(cap).costMap(cost).supplyMap(sup); 123 if (sum_sup > 0) ns.problemType(ns.LEQ);124 109 if (report) std::cerr << "Setup NetworkSimplex class: " << ti << '\n'; 125 110 ti.restart(); 126 bool res = ns.run(); 127 if (report) { 128 std::cerr << "Run NetworkSimplex: " << ti << "\n\n"; 129 std::cerr << "Feasible flow: " << (res ? "found" : "not found") << '\n'; 130 if (res) std::cerr << "Min flow cost: " << ns.totalCost() << '\n'; 131 } 111 ns.run(); 112 if (report) std::cerr << "Run NetworkSimplex: " << ti << '\n'; 113 if (report) std::cerr << "\nMin flow cost: " << ns.totalCost() << '\n'; 132 114 } 133 115 … … 170 152 { 171 153 case DimacsDescriptor::MIN: 172 solve_min<Value>(ap,is,os, infty,desc);154 solve_min<Value>(ap,is,os,desc); 173 155 break; 174 156 case DimacsDescriptor::MAX:
Note: See TracChangeset
for help on using the changeset viewer.