├── Column_Generation_Algorithm ├── data │ ├── grid │ │ ├── format.pdf │ │ ├── grid1.dat │ │ ├── grid2.dat │ │ ├── grid3.dat │ │ ├── grid4.dat │ │ └── grid5.dat │ └── planar │ │ ├── format.pdf │ │ ├── planar30.dat │ │ └── planar50.dat ├── tiny-data │ ├── tiny.dat │ ├── model.lp │ ├── tiny_iter_1.lp │ ├── tiny_iter_2.lp │ └── tiny_iter_3.lp ├── spp.h ├── binheap.h ├── pathpool.h ├── pathflow_model.h ├── main.cpp ├── mcf_data.h └── solution.lp └── Column_Generation_Algorithm.xcodeproj ├── project.xcworkspace ├── contents.xcworkspacedata └── xcshareddata │ └── IDEWorkspaceChecks.plist ├── xcuserdata └── jingjinghuo.xcuserdatad │ ├── xcschemes │ └── xcschememanagement.plist │ └── xcdebugger │ └── Breakpoints_v2.xcbkptlist ├── xcshareddata └── xcschemes │ └── Column_Generation_Algorithm.xcscheme └── project.pbxproj /Column_Generation_Algorithm/data/grid/format.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iFocusing/Column_Generation_Algorithm/HEAD/Column_Generation_Algorithm/data/grid/format.pdf -------------------------------------------------------------------------------- /Column_Generation_Algorithm/data/planar/format.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iFocusing/Column_Generation_Algorithm/HEAD/Column_Generation_Algorithm/data/planar/format.pdf -------------------------------------------------------------------------------- /Column_Generation_Algorithm/tiny-data/tiny.dat: -------------------------------------------------------------------------------- 1 | tiny 2 | 4 3 | 6 4 | 2 5 | 1 2 6 4 6 | 2 1 1 4 7 | 1 3 2 5 8 | 3 2 1 2 9 | 3 4 2 2 10 | 2 4 3 3 11 | 12 | 1 4 3 13 | 2 3 3 -------------------------------------------------------------------------------- /Column_Generation_Algorithm.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Column_Generation_Algorithm.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Column_Generation_Algorithm/tiny-data/model.lp: -------------------------------------------------------------------------------- 1 | \ENCODING=ISO-8859-1 2 | \Problem name: IloCplex 3 | 4 | Minimize 5 | obj: 100000 p_1 + 100000 p_2 + 4 p_3 + 3 p_4 + 6 p_5 + 9 p_6 6 | Subject To 7 | c1: p_1 + p_3 + p_5 + p_6 = 3 8 | c2: p_2 + p_4 = 3 9 | c3: s_1 + p_6 = 4 10 | c4: s_2 + p_3 + p_4 + p_5 = 5 11 | c5: s_3 + p_4 = 4 12 | c6: s_4 + p_5 + p_6 = 3 13 | c7: s_5 + p_5 = 2 14 | c8: s_6 + p_3 = 2 15 | End 16 | -------------------------------------------------------------------------------- /Column_Generation_Algorithm/tiny-data/tiny_iter_1.lp: -------------------------------------------------------------------------------- 1 | \ENCODING=ISO-8859-1 2 | \Problem name: tiny 3 | 4 | Minimize 5 | obj: 100 x1 + 4 x2 + 100 x3 + 3 x4 6 | Subject To 7 | c1: <= 4 8 | c2: x2 + x4 <= 5 9 | c3: + x4 <= 4 10 | c4: <= 3 11 | c5: <= 2 12 | c6: x2 <= 2 13 | c7: x1 + x2 = 3 14 | c8: x3 + x4 = 3 15 | Bounds 16 | x1 >= 0 17 | x2 >= 0 18 | x3 >= 0 19 | x4 >= 0 20 | End 21 | -------------------------------------------------------------------------------- /Column_Generation_Algorithm.xcodeproj/xcuserdata/jingjinghuo.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Column_Generation_Algorithm.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 71C30A4C21CC164D00004F17 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Column_Generation_Algorithm/tiny-data/tiny_iter_2.lp: -------------------------------------------------------------------------------- 1 | \ENCODING=ISO-8859-1 2 | \Problem name: tiny 3 | 4 | Minimize 5 | obj: 100 x1 + 4 x2 + 100 x3 + 3 x4 + 6 x5 6 | Subject To 7 | c1: <= 4 8 | c2: x2 + x4 + x5 <= 5 9 | c3: + x4 <= 4 10 | c4: + x5 <= 3 11 | c5: + x5 <= 2 12 | c6: x2 <= 2 13 | c7: x1 + x2 + x5 = 3 14 | c8: x3 + x4 = 3 15 | Bounds 16 | x1 >= 0 17 | x2 >= 0 18 | x3 >= 0 19 | x4 >= 0 20 | x5 >= 0 21 | End 22 | -------------------------------------------------------------------------------- /Column_Generation_Algorithm/tiny-data/tiny_iter_3.lp: -------------------------------------------------------------------------------- 1 | \ENCODING=ISO-8859-1 2 | \Problem name: tiny 3 | 4 | Minimize 5 | obj: 100 x1 + 4 x2 + 100 x3 + 3 x4 + 6 x5 + 9 x6 6 | Subject To 7 | c1: x6 <= 4 8 | c2: x2 + x4 + x5 <= 5 9 | c3: + x4 <= 4 10 | c4: + x5 + x6 <= 3 11 | c5: + x5 <= 2 12 | c6: x2 <= 2 13 | c7: x1 + x2 + x5 + x6 = 3 14 | c8: x3 + x4 = 3 15 | Bounds 16 | x1 >= 0 17 | x2 >= 0 18 | x3 >= 0 19 | x4 >= 0 20 | x5 >= 0 21 | x6 >= 0 22 | End 23 | -------------------------------------------------------------------------------- /Column_Generation_Algorithm.xcodeproj/xcuserdata/jingjinghuo.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 8 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /Column_Generation_Algorithm.xcodeproj/xcshareddata/xcschemes/Column_Generation_Algorithm.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 55 | 57 | 63 | 64 | 65 | 66 | 67 | 68 | 74 | 76 | 82 | 83 | 84 | 85 | 87 | 88 | 91 | 92 | 93 | -------------------------------------------------------------------------------- /Column_Generation_Algorithm/spp.h: -------------------------------------------------------------------------------- 1 | #include "binheap.h" 2 | #include "mcf_data.h" 3 | #include 4 | #include "time.h" 5 | #include 6 | 7 | #pragma once 8 | 9 | // ***************************************************************************** 10 | // CLASS PROVIDING A 2-HEAP IMPLEMENTATION OF DIJKSTRA ALGORITHMS 11 | // See lecture slides 07_shrtpaths.pdf for a description of the algorithm 12 | // ***************************************************************************** 13 | 14 | class dijkstra { 15 | public: 16 | // a vector to store the node distance labels (denoted by d[] in the lecture slides) 17 | std::vector d; 18 | // a vector to store the predecessor labels (denoted by π[] in the lecture slides) 19 | std::vector pi; 20 | // Constructor just resizes the local vectors 21 | dijkstra(int nNodes) { 22 | d.resize(nNodes, INT_MAX); 23 | pi.resize(nNodes, 0); 24 | 25 | } 26 | 27 | void reset() { 28 | for(int i = 0; i < d.size(); i++){ 29 | d[i] = INT_MAX; 30 | pi[i] = 0; 31 | } 32 | } 33 | 34 | // finds a shortest path from root to sink node of a forward strar representation of a graph 35 | // At termination, the shortest path should be reconstructed by following backward the predecessor 36 | // labels starting from the desitination node. The predecessor label of the root node is always -1 37 | std::vector Dijkheap(int s, int dest, mcfdata mcf, mcfgraph g, binheap h, double &PP_total_time) { 38 | // s is start node 39 | // Node expansion: Use a forward star representation of G. This brings down the operation count for node expansion to O(m) 40 | // Node selection: Avoid scanning the entire T at each iteration by keeping it partially sorted using a heap 41 | // a vector to store the node that has permanent lable and add the start node into it; 42 | double time = 0; 43 | clock_t start, end; 44 | start = clock(); 45 | 46 | reset(); 47 | d[s] = 0; 48 | pi[s] = -1; 49 | h.Add(d, s); 50 | while(h.nheap != 0){ 51 | int v = h.Choose(d); 52 | for (int i = g.point[v]; i < g.point[v+1]; i++){ 53 | int dnew = d[v] + g.modifiedcost[i]; 54 | int j = g.head[i]; 55 | if(d[j] > dnew){ 56 | pi[j] = v; 57 | if(d[j] == INT_MAX){ 58 | d[j] = dnew; 59 | h.Add(d, j); 60 | }else{ 61 | d[j] = dnew; 62 | h.Decreased_Label(d, j); 63 | } 64 | } 65 | } 66 | } 67 | int pre = dest; 68 | std::vector path; 69 | path.push_back(dest); 70 | while(pi[pre]!=-1){ 71 | pre = pi[pre]; 72 | path.insert(path.begin(), pre); 73 | } 74 | // std::cout << "Print from spp.h" << std::endl; 75 | // std::cout << "start: " << s << " dest: " << dest << std::endl; 76 | 77 | // int i; 78 | // for (i = 0; i < path.size() - 1; i++){ 79 | // std::cout << path[i] << " -> "; 80 | // } 81 | // std::cout << path[i] << std::endl; 82 | end = clock(); 83 | time = double(end - start) / CLOCKS_PER_SEC; 84 | PP_total_time += time; 85 | return path; 86 | } 87 | 88 | double path_cost(mcfgraph g, std::vector nodepath){ 89 | double p_cost = 0; 90 | for(int i = 0; i < nodepath.size()-1; i++){ 91 | int arc = g.get_arc_id(nodepath[i], nodepath[i+1]); 92 | p_cost += g.modifiedcost[arc]; 93 | } 94 | return p_cost; 95 | } 96 | }; 97 | -------------------------------------------------------------------------------- /Column_Generation_Algorithm/binheap.h: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #pragma once 4 | 5 | // ***************************************************************************** 6 | // CLASS PROVIDING A 2-HEAP IMPLEMENTATION OF A PRIORITY QUEUE 7 | // See lecture slides shortestpaths.pdf for a pseudocode description of the heap 8 | // operations implemented below 9 | // ***************************************************************************** 10 | 11 | class binheap { 12 | public: 13 | int nheap; // Denoted |H| in the lecture slides: It is the current number of nodes in the heap 14 | int maxsize; // the maximum # of nodes that the heap can have 15 | std::vector key; // Denoted H[] in the lecture slides: key[i] is the element stored in the Heap node i 16 | std::vector pos; // Denoted P[] in the lecture slides: pos[i] is Heap node number of element i, 17 | // if element k is inside the heap node i then pos(k) = i 18 | 19 | // The Constructor: Just initializes and sizes the local data structs 20 | binheap(int maxsize) : maxsize(maxsize) { 21 | nheap = 0; 22 | maxsize = maxsize; 23 | key.resize(maxsize); 24 | pos.resize(maxsize); 25 | } 26 | // The function MoveUp(H,P,d,i) described in the lecture slides 27 | // Here, d[] is called label[] 28 | int Move_Up(std::vector &label, int i) { 29 | if (i < 1) return -1; 30 | int p = (int)((double)(i - 1) * 0.5); 31 | if (label[key[i]] < label[key[p]]) { 32 | int tmp = key[i]; 33 | key[i] = key[p]; 34 | key[p] = tmp; 35 | tmp = pos[key[i]]; 36 | pos[key[i]] = pos[key[p]]; 37 | pos[key[p]] = tmp; 38 | return p; 39 | } 40 | return -1; 41 | } 42 | // The function MoveDown(H,P,|H|,d,i) described in the lecture slides 43 | // Here, d[] is called label[] 44 | int Move_Down(std::vector &label, int i) { 45 | if (2 * i + 1 >= nheap) return nheap; 46 | int inew = i; 47 | if (label[key[2 * i + 1]] < label[key[inew]]) { 48 | inew = 2 * i + 1; 49 | } 50 | if (2 * i + 2 < nheap) { 51 | if (label[key[2 * i + 2]] < label[key[inew]]) { 52 | inew = 2 * i + 2; 53 | } 54 | } 55 | if (inew != i) { 56 | int tmp = key[i]; 57 | key[i] = key[inew]; 58 | key[inew] = tmp; 59 | tmp = pos[key[i]]; 60 | pos[key[i]] = pos[key[inew]]; 61 | pos[key[inew]] = tmp; 62 | return inew; 63 | } 64 | return nheap; 65 | } 66 | // The function HeapAdd(H,P,|H|,d,k) described in the lecture slides 67 | // Here, d[] is called label[] 68 | void Add(std::vector &label, int k) { 69 | if (nheap > maxsize) { 70 | // TO DO: Handle Heap overflow 71 | // NOW IT JUST WAITS FOR THE USER TO ACKNOWLEDGE AND TERMINATES 72 | std::cout << " Heap overflow: terminating program \n Press Enter to quit "; 73 | std::cin.get(); 74 | exit(0); 75 | } 76 | nheap = nheap + 1; 77 | key[nheap - 1] = k; 78 | pos[k] = nheap - 1; 79 | int i = nheap - 1; 80 | while (i > 0) { 81 | i = Move_Up(label, i); 82 | } 83 | } 84 | // The function ExtractMin(H,P,|H|,d) described in the lecture slides 85 | // Here, d[] is called label[] 86 | int Choose(std::vector &label) { 87 | if (nheap < 1) return -1; 88 | int j = key[0]; 89 | pos[j] = -1; 90 | key[0] = key[nheap - 1]; 91 | pos[key[nheap - 1]] = 0; 92 | nheap = nheap - 1; 93 | int i = 0; 94 | while (i < nheap - 1) { 95 | i = Move_Down(label, i); 96 | } 97 | return j; 98 | } 99 | 100 | // The function DecreasedLabel(H,P,|H|,d,k) described in the lecture slides 101 | // Here, d[] is called label[] 102 | void Decreased_Label(std::vector &label, int k) { 103 | int i = pos[k]; 104 | while (i > 0) { 105 | i = Move_Up(label, i); 106 | } 107 | } 108 | // The function IncreasedLabel(H,P,|H|,d,k) described in the lecture slides 109 | // Here, d[] is called label[] 110 | void Increased_Label(std::vector &label, int k) { 111 | int i = pos[k]; 112 | while (i < nheap - 1) { 113 | i = Move_Down(label, i); 114 | } 115 | } 116 | }; -------------------------------------------------------------------------------- /Column_Generation_Algorithm/pathpool.h: -------------------------------------------------------------------------------- 1 | #include "mcf_data.h" 2 | #include "binheap.h" 3 | #include "spp.h" 4 | 5 | #pragma once 6 | 7 | // ********************************************************************************************************************************************************** 8 | // A class that implements the path pool. Paths are represented as a sequence of ARCS and each arc is identified using its position in the forward ordering 9 | // that is, the arc id is the arc # in the forward star representation. All paths are stored contiguously in a vector pathseq[]. A vector pathini[p] 10 | // indicates the position in the vector pathseq[] of the first arc of path p (see lecture slides 09_ColGen_II.pdf) 11 | // ********************************************************************************************************************************************************** 12 | 13 | 14 | class mcfpaths { 15 | public: 16 | // A variable to store the number of paths in the pool 17 | int nPaths; 18 | // A variable to store the number of arcs in all paths stored in the pool 19 | int nArcs; 20 | std::vector pa_arcs; // the paths arcs 21 | std::vector po_path; // the position of each path's first arc 22 | std::vector co_path; // the paths costs 23 | std::vector nu_comm; // the number of the paths commodities 24 | // A variable to store the max number of paths that the pool can have 25 | int max_nPaths; 26 | // A variable to store the max number of arcs that the pool can have 27 | int max_nArcs; 28 | 29 | // Constructor: 30 | // takes in input the max number of paths and max number of arcs that the pool 31 | // will store to size the data structures 32 | mcfpaths(int maxpaths, int maxarcs) { 33 | nPaths = 0; 34 | nArcs = 0; 35 | max_nArcs = maxarcs; 36 | max_nPaths = maxpaths; 37 | pa_arcs.resize(max_nArcs); 38 | po_path.resize(max_nPaths); 39 | co_path.resize(max_nPaths); 40 | nu_comm.resize(max_nPaths); // this is strange? 41 | } 42 | 43 | // A function to Initialize the path pool. After calling reset there should be no paths in the pool 44 | void reset(void) { 45 | nPaths = 0; 46 | nArcs = 0; 47 | pa_arcs.clear(); 48 | po_path.clear(); 49 | co_path.clear(); 50 | nu_comm.clear(); 51 | } 52 | 53 | // A function to add to the pool a shortest path (computed with respect to the true arc costs) for each commodity. 54 | // needs in input an object providing heap functions, and a dijkstra object providing dijkstra's algorithm 55 | void init(mcfdata &mcf, mcfgraph &g, binheap &heap, dijkstra &djk, double &PP_total_time) { 56 | std::vector path; 57 | for (int i = 0; i < mcf.nComm; i++){ 58 | add_artificial_paths(mcf, g, i); 59 | } 60 | for (int i = 0; i < mcf.nComm; i++){ 61 | // std::cout << "For comm " << i << " finding the shortest path: (" << mcf.CommOri[i] << ", " << mcf.CommEnd[i] << "):" << std::endl; 62 | path = djk.Dijkheap(mcf.CommOri[i], mcf.CommEnd[i], mcf, g, heap, PP_total_time); 63 | add_nodepath(g, path, int(path.size()-1), i); 64 | } 65 | } 66 | 67 | // A function to add the 'virtual paths' to the path pool (see lecture slides 09_ColGen_II.pdf) 68 | void add_artificial_paths(mcfdata &mcf, mcfgraph &g, int comm) { 69 | std::vector path; 70 | add_nodepath(g, path, 0, comm); 71 | co_path[nPaths-1] = mcf.bigM; 72 | } 73 | 74 | //A function that takes in input the forward star g, a path (node sequence including both start & end node) 75 | // and the commodity for which the path has to be added. Adds the path to the path pool and 76 | // returns true is no errors occur. Returns false if the path cannot be stored. 77 | bool add_nodepath(mcfgraph &g, std::vector &nodepath, int pathsize, int comm) { 78 | if (nPaths > max_nPaths || nArcs + pathsize > max_nArcs){ 79 | return false; 80 | } 81 | po_path[nPaths] = nArcs; 82 | nu_comm[nPaths] = comm; 83 | co_path[nPaths] = 0; 84 | for(int i = 0; i < pathsize; i++){ 85 | int arc = g.get_arc_id(nodepath[i], nodepath[i+1]); 86 | pa_arcs[nArcs] = arc; 87 | nArcs++; 88 | co_path[nPaths] += g.cost[arc]; 89 | } 90 | nPaths++; 91 | po_path[nPaths] = nArcs; 92 | return true; 93 | } 94 | }; 95 | -------------------------------------------------------------------------------- /Column_Generation_Algorithm/data/grid/grid1.dat: -------------------------------------------------------------------------------- 1 | grid1 2 | 25 3 | 80 4 | 50 5 | 1 2 91 139 6 | 1 6 97 286 7 | 2 1 95 105 8 | 2 3 82 141 9 | 2 7 92 153 10 | 3 2 85 355 11 | 3 4 95 418 12 | 3 8 97 292 13 | 4 3 93 178 14 | 4 5 83 145 15 | 4 9 85 195 16 | 5 4 99 144 17 | 5 10 87 113 18 | 6 1 80 130 19 | 6 7 85 485 20 | 6 11 98 314 21 | 7 2 88 257 22 | 7 6 93 445 23 | 7 8 84 427 24 | 7 12 85 226 25 | 8 3 81 352 26 | 8 7 96 160 27 | 8 9 96 286 28 | 8 13 88 284 29 | 9 4 87 197 30 | 9 8 98 388 31 | 9 10 84 212 32 | 9 14 97 421 33 | 10 5 100 271 34 | 10 9 83 285 35 | 10 15 99 219 36 | 11 6 94 416 37 | 11 12 88 155 38 | 11 16 86 400 39 | 12 7 96 306 40 | 12 11 83 303 41 | 12 13 98 379 42 | 12 17 85 453 43 | 13 8 93 235 44 | 13 12 86 270 45 | 13 14 93 303 46 | 13 18 94 384 47 | 14 9 82 267 48 | 14 13 96 385 49 | 14 15 91 441 50 | 14 19 88 153 51 | 15 10 92 380 52 | 15 14 98 322 53 | 15 20 83 252 54 | 16 11 82 335 55 | 16 17 88 475 56 | 16 21 94 259 57 | 17 12 96 185 58 | 17 16 94 197 59 | 17 18 80 284 60 | 17 22 94 284 61 | 18 13 86 230 62 | 18 17 100 492 63 | 18 19 100 294 64 | 18 23 94 299 65 | 19 14 82 145 66 | 19 18 89 454 67 | 19 20 98 399 68 | 19 24 88 172 69 | 20 15 100 408 70 | 20 19 89 247 71 | 20 25 81 387 72 | 21 16 92 99 73 | 21 22 98 273 74 | 22 17 92 330 75 | 22 21 92 187 76 | 22 23 92 134 77 | 23 18 96 377 78 | 23 22 94 206 79 | 23 24 99 377 80 | 24 19 97 472 81 | 24 23 97 281 82 | 24 25 92 406 83 | 25 20 89 464 84 | 25 24 95 212 85 | 18 15 69 86 | 6 1 79 87 | 11 21 20 88 | 7 15 51 89 | 4 21 84 90 | 20 10 42 91 | 12 10 55 92 | 24 11 33 93 | 11 25 63 94 | 20 21 87 95 | 19 12 13 96 | 14 10 18 97 | 18 11 16 98 | 18 23 58 99 | 18 4 85 100 | 10 23 75 101 | 6 3 93 102 | 21 17 82 103 | 1 16 43 104 | 2 18 97 105 | 18 25 44 106 | 23 16 55 107 | 9 7 80 108 | 23 4 79 109 | 2 21 54 110 | 20 24 85 111 | 18 3 55 112 | 12 8 42 113 | 15 3 11 114 | 6 19 36 115 | 7 11 29 116 | 24 25 59 117 | 10 8 86 118 | 3 5 91 119 | 1 19 16 120 | 22 7 78 121 | 7 1 30 122 | 6 20 33 123 | 22 18 15 124 | 7 17 69 125 | 25 9 51 126 | 20 8 57 127 | 6 15 65 128 | 8 17 60 129 | 8 13 81 130 | 13 23 78 131 | 22 16 59 132 | 17 21 38 133 | 11 6 38 134 | 23 5 96 135 | -------------------------------------------------------------------------------- /Column_Generation_Algorithm/data/grid/grid2.dat: -------------------------------------------------------------------------------- 1 | grid2 2 | 25 3 | 80 4 | 100 5 | 1 2 91 235 6 | 1 6 97 382 7 | 2 1 95 201 8 | 2 3 82 237 9 | 2 7 92 249 10 | 3 2 85 451 11 | 3 4 95 514 12 | 3 8 97 388 13 | 4 3 93 274 14 | 4 5 83 241 15 | 4 9 85 291 16 | 5 4 99 240 17 | 5 10 87 209 18 | 6 1 80 226 19 | 6 7 85 581 20 | 6 11 98 410 21 | 7 2 88 353 22 | 7 6 93 541 23 | 7 8 84 523 24 | 7 12 85 322 25 | 8 3 81 448 26 | 8 7 96 256 27 | 8 9 96 382 28 | 8 13 88 380 29 | 9 4 87 293 30 | 9 8 98 484 31 | 9 10 84 308 32 | 9 14 97 517 33 | 10 5 100 367 34 | 10 9 83 381 35 | 10 15 99 315 36 | 11 6 94 512 37 | 11 12 88 251 38 | 11 16 86 496 39 | 12 7 96 402 40 | 12 11 83 399 41 | 12 13 98 475 42 | 12 17 85 549 43 | 13 8 93 331 44 | 13 12 86 366 45 | 13 14 93 399 46 | 13 18 94 480 47 | 14 9 82 363 48 | 14 13 96 481 49 | 14 15 91 537 50 | 14 19 88 249 51 | 15 10 92 476 52 | 15 14 98 418 53 | 15 20 83 348 54 | 16 11 82 431 55 | 16 17 88 571 56 | 16 21 94 355 57 | 17 12 96 281 58 | 17 16 94 293 59 | 17 18 80 380 60 | 17 22 94 380 61 | 18 13 86 326 62 | 18 17 100 588 63 | 18 19 100 390 64 | 18 23 94 395 65 | 19 14 82 241 66 | 19 18 89 550 67 | 19 20 98 495 68 | 19 24 88 268 69 | 20 15 100 504 70 | 20 19 89 343 71 | 20 25 81 483 72 | 21 16 92 195 73 | 21 22 98 369 74 | 22 17 92 426 75 | 22 21 92 283 76 | 22 23 92 230 77 | 23 18 96 473 78 | 23 22 94 302 79 | 23 24 99 473 80 | 24 19 97 568 81 | 24 23 97 377 82 | 24 25 92 502 83 | 25 20 89 560 84 | 25 24 95 308 85 | 18 15 69 86 | 6 1 79 87 | 11 21 20 88 | 7 15 51 89 | 4 21 84 90 | 20 10 42 91 | 12 10 55 92 | 24 11 33 93 | 11 25 63 94 | 20 21 87 95 | 19 12 13 96 | 14 10 18 97 | 18 11 16 98 | 18 23 58 99 | 18 4 85 100 | 10 23 75 101 | 6 3 93 102 | 21 17 82 103 | 1 16 43 104 | 2 18 97 105 | 18 25 44 106 | 23 16 55 107 | 9 7 80 108 | 23 4 79 109 | 2 21 54 110 | 20 24 85 111 | 18 3 55 112 | 12 8 42 113 | 15 3 11 114 | 6 19 36 115 | 7 11 29 116 | 24 25 59 117 | 10 8 86 118 | 3 5 91 119 | 1 19 16 120 | 22 7 78 121 | 7 1 30 122 | 6 20 33 123 | 22 18 15 124 | 7 17 69 125 | 25 9 51 126 | 20 8 57 127 | 6 15 65 128 | 8 17 60 129 | 8 13 81 130 | 13 23 78 131 | 22 16 59 132 | 17 21 38 133 | 11 6 38 134 | 23 5 96 135 | 5 3 34 136 | 5 22 37 137 | 13 7 100 138 | 6 23 92 139 | 10 2 83 140 | 7 18 83 141 | 17 15 84 142 | 16 14 38 143 | 14 3 12 144 | 13 11 28 145 | 3 22 63 146 | 16 15 92 147 | 1 7 52 148 | 5 4 83 149 | 4 6 17 150 | 11 13 57 151 | 9 10 60 152 | 9 12 22 153 | 4 15 95 154 | 25 16 59 155 | 21 14 80 156 | 12 9 40 157 | 9 2 72 158 | 2 12 75 159 | 18 5 47 160 | 21 12 91 161 | 15 19 17 162 | 14 4 11 163 | 19 22 16 164 | 10 16 45 165 | 25 1 95 166 | 23 13 57 167 | 13 24 74 168 | 17 24 85 169 | 6 16 43 170 | 8 18 16 171 | 7 8 100 172 | 6 9 49 173 | 18 8 11 174 | 14 25 20 175 | 5 25 39 176 | 14 23 91 177 | 1 18 60 178 | 4 16 74 179 | 17 8 70 180 | 23 3 15 181 | 3 25 29 182 | 14 13 48 183 | 11 1 52 184 | 19 7 96 185 | -------------------------------------------------------------------------------- /Column_Generation_Algorithm/pathflow_model.h: -------------------------------------------------------------------------------- 1 | #include "ilcplex/cplex.h" 2 | #include "ilcplex/ilocplex.h" 3 | #include "mcf_data.h" 4 | #include "pathpool.h" 5 | #include 6 | 7 | #pragma once 8 | 9 | /* *********************************************************************************************************************************** 10 | Define a class to store the data of the path-flow model (see also the similar code in CPLEX Tutorial for the arc-flow model) 11 | *********************************************************************************************************************************** */ 12 | 13 | class pathflowdata { 14 | public: 15 | 16 | // CPLEX model object 17 | IloModel model; 18 | // IloRangeArray arrays to store the capacity and demand constraint objects of the model 19 | IloRangeArray CapacityConstrains; 20 | IloRangeArray DemandConstrains; 21 | // IloNumVarArray Arrays to store the variable objects of the model 22 | IloNumVarArray PFlowVariables; 23 | // IloObjective object to model obj function of the model 24 | IloObjective obj; 25 | // variables to store objective value and solution time 26 | double bestobj; 27 | double soltime; 28 | 29 | // CPLEX array to store the dual vectors associated with demand constraints 30 | IloNumArray DemandDuals; 31 | // CPLEX array to store the dual vectors associated with capacity constraints 32 | IloNumArray CapacityDuals; 33 | // CPLEX array to store the flow variable values 34 | IloNumArray PFlowVariableValues; 35 | std::vector DemandConstrainsIndex; 36 | std::vector PFlowVariableIndex; 37 | /* *********************************************************************************************************************************** 38 | Constructor of pathflowdata 39 | *********************************************************************************************************************************** */ 40 | pathflowdata(const IloEnv env) { 41 | bestobj = 0; 42 | soltime = 0; 43 | // links the CPLEX model to the environment passed to the constructor 44 | model = (env); 45 | // links all CPLEX arrays to the environment passed to the constructor 46 | PFlowVariables = (env); 47 | CapacityConstrains = (env); 48 | DemandConstrains = (env); 49 | PFlowVariableValues = (env); 50 | DemandDuals = (env); 51 | CapacityDuals = (env); 52 | // defines the CPLEX objective function as a minimization objective for the CPLEX model 53 | obj = (IloMinimize(env)); 54 | // adds the objective to the model 55 | model.add(obj); 56 | } 57 | 58 | /* *********************************************************************************************************************************** 59 | A function that creates and adds to the model all the the (empty) constraints of the path-flow model 60 | *********************************************************************************************************************************** */ 61 | void add_constraints(mcfdata &mcf, mcfgraph &g, IloEnv &env) { 62 | char varname[100]; 63 | for(int k = 0; k < mcf.nComm; k++){ 64 | IloRange constraint(env, mcf.CommDem[k], mcf.CommDem[k], NULL); 65 | // add the constraint to the corresponding constraints array 66 | DemandConstrains.add(constraint); 67 | } 68 | // add the demand constraints to the model 69 | model.add(DemandConstrains); 70 | 71 | 72 | for (int a = 0; a < g.head.size(); a++) { 73 | IloRange constraint(env, g.capa[a], g.capa[a], NULL); 74 | // add the constraint to the corresponding constraints array 75 | CapacityConstrains.add(constraint); 76 | IloNumColumn col(env); 77 | col = CapacityConstrains[a](+1); 78 | 79 | IloNumVar var(col, 0, IloInfinity, ILOFLOAT); 80 | std::string strname = "s_" + std::to_string(a + 1); 81 | if (strname.size() < 100) { 82 | std::copy(strname.begin(), strname.end(), varname); 83 | varname[strname.size()] = '\0'; 84 | var.setName(varname); 85 | }else{ 86 | strname.resize(100); 87 | std::copy(strname.begin(), strname.end(), varname); 88 | varname[strname.size()] = '\0'; 89 | var.setName(varname); 90 | } 91 | 92 | // add the variable to the CPLEX variables array and to the model 93 | PFlowVariables.add(var); 94 | model.add(PFlowVariables[PFlowVariables.getSize() - 1]); 95 | } 96 | // add the capacity constraints to the model 97 | model.add(CapacityConstrains); 98 | 99 | } 100 | 101 | /* *********************************************************************************************************************************** 102 | A function that Takes in input two integers first and last and adds to the model the variables corresponding to the paths 103 | numbered first, first+1, ..., last that are memorized in the path pool 104 | *********************************************************************************************************************************** */ 105 | void add_paths(mcfdata &mcf, IloEnv &env, mcfpaths &pathpool, int first, int last) { 106 | char varname[100]; 107 | for(int i = first; i < last; i++){ 108 | // create a column modeling the path 109 | IloNumColumn col(model.getEnv()); 110 | col += obj(pathpool.co_path[i]); 111 | int start_arc = pathpool.po_path[i]; 112 | int end_arc = pathpool.po_path[i+1]; 113 | // for(int i =0; i< pathpool.pa_arcs.size(); i++){ 114 | // std::cout << pathpool.pa_arcs[i] << " "; 115 | // } 116 | 117 | for (int j = start_arc; j < end_arc; j++){ 118 | // std::cout << pathpool.pa_arcs[j] << " "; 119 | col += CapacityConstrains[pathpool.pa_arcs[j]](+1); 120 | } 121 | col += DemandConstrains[pathpool.nu_comm[i]](+1); 122 | std::string strname = "p_" + std::to_string(i+1); 123 | IloNumVar var(col, 0, IloInfinity, ILOFLOAT); 124 | 125 | if (strname.size() < 100) { 126 | std::copy(strname.begin(), strname.end(), varname); 127 | varname[strname.size()] = '\0'; 128 | var.setName(varname); 129 | }else{ 130 | strname.resize(100); 131 | std::copy(strname.begin(), strname.end(), varname); 132 | varname[strname.size()] = '\0'; 133 | var.setName(varname); 134 | } 135 | 136 | // add the variable to the CPLEX variables array and to the model 137 | PFlowVariables.add(var); 138 | model.add(PFlowVariables[PFlowVariables.getSize() - 1]); 139 | } 140 | } 141 | 142 | /* *********************************************************************************************************************************** 143 | Prints to screen and to file the last primal solution (flows) stored 144 | *********************************************************************************************************************************** */ 145 | void print_solution(const mcfdata mcf, int status) { 146 | // std::ofstream sol(mcf.ProbName + ".sol"); 147 | // if (sol.is_open()) sol.close(); 148 | std::cout << "pathflow.bestobj: " << std::setprecision(10) << bestobj << std::endl; 149 | // for (int i = 0; i < PFlowVariables.getSize(); i++) { 150 | // std::cout << PFlowVariables[i] << PFlowVariableValues[i] << " "; 151 | // } 152 | // std::cout << "" << std::endl; 153 | } 154 | 155 | /* *********************************************************************************************************************************** 156 | Prints to screen and to file the last dual solution (flows) stored 157 | *********************************************************************************************************************************** */ 158 | void print_duals(const mcfdata mcf, int status) { 159 | // std::ofstream sol(mcf.ProbName + ".dua"); 160 | // if (sol.is_open()) sol.close(); 161 | // std::cout << "CapacityDuals: " << CapacityDuals << std::endl; 162 | // std::cout << "DemandDuals: " << DemandDuals << std::endl; 163 | } 164 | 165 | }; 166 | -------------------------------------------------------------------------------- /Column_Generation_Algorithm/main.cpp: -------------------------------------------------------------------------------- 1 | /* *********************************************************************************************************************************** 2 | Computational Optimization in Logistics: Project 2 3 | *********************************************************************************************************************************** */ 4 | 5 | #pragma warning(disable : 4996) 6 | 7 | /* ********************************************************************************************************************************** 8 | Include the file mcf_data.h which provides the class for reading and storing the instance data. It also includes other files we need 9 | *********************************************************************************************************************************** */ 10 | #include "mcf_data.h" 11 | #include "pathflow_model.h" 12 | #include "spp.h" 13 | #include "pathpool.h" 14 | #include 15 | #include "time.h" 16 | #include 17 | /* ********************************************************************************************************************************** 18 | Include CPLEX header files 19 | *********************************************************************************************************************************** */ 20 | 21 | #include "ilcplex/cplex.h" 22 | #include "ilcplex/ilocplex.h" 23 | 24 | 25 | 26 | /* *********************************************************************************************************************************** 27 | CG algorithm: solves the path-flow model stored inside the object pathflow. Here I assume that: Dijkstra algorithm is available as 28 | a member function of class dijkstra, the pool of paths is stored by the object pathpool, the problem data is stored by the object mcf, 29 | the forward star is stored by an object g. Class binheap provides heap functions 30 | *********************************************************************************************************************************** */ 31 | 32 | bool cgsolve(mcfdata &mcf, IloEnv &env, IloCplex &solver, pathflowdata &pathflow, mcfgraph &g, mcfpaths &p_pool, binheap &h, dijkstra &djk, int &iter, double &CG_total_time, double &PP_total_time) { 33 | double epsilon = 0.000001; 34 | bool err = false; 35 | bool optimal = false; 36 | while(!optimal){ 37 | solver.exportModel("data/model.lp"); 38 | // solver.exportModel("tiny-data/model.lp"); 39 | iter++; 40 | IloNum tcpx1 = solver.getCplexTime(); 41 | bool feasible = solver.solve(); 42 | IloNum tcpx2 = solver.getCplexTime(); 43 | int status = solver.getCplexStatus(); 44 | pathflow.soltime = tcpx2 - tcpx1; 45 | std::cout << " CPLEX sol time" << pathflow.soltime << " sec." << std::endl; 46 | CG_total_time += pathflow.soltime; 47 | std::cout << " CPLEX sol status " << status << std::endl; 48 | // if a feasible solution is available 49 | if (feasible) { 50 | pathflow.bestobj = solver.getObjValue(); 51 | solver.getValues(pathflow.PFlowVariables, pathflow.PFlowVariableValues); 52 | solver.getDuals(pathflow.DemandDuals, pathflow.DemandConstrains); 53 | solver.getDuals(pathflow.CapacityDuals, pathflow.CapacityConstrains); 54 | pathflow.print_solution(mcf, status); 55 | pathflow.print_duals(mcf, status); 56 | }else{ 57 | std::cout << "dual not feasible!" << std::endl; 58 | err = false; 59 | } 60 | for (int i = 0; i < g.modifiedcost.size(); i++) { 61 | g.modifiedcost[i] = g.cost[i] - pathflow.CapacityDuals[i]; 62 | } 63 | optimal = true; 64 | for(int c = 0; c < mcf.nComm; c++){ 65 | std::vector path; 66 | path = djk.Dijkheap(mcf.CommOri[c], mcf.CommEnd[c], mcf, g, h, PP_total_time); 67 | double p_cost = djk.path_cost(g, path); 68 | 69 | if(p_cost < pathflow.DemandDuals[c] - epsilon){ 70 | optimal = false; 71 | int first = p_pool.nPaths; 72 | p_pool.add_nodepath(g, path, int(path.size()-1), c); 73 | int last = p_pool.nPaths; 74 | pathflow.add_paths(mcf, env, p_pool, first, last); 75 | } 76 | } 77 | IloCplex solver(pathflow.model); 78 | err = true; 79 | } 80 | return err; 81 | } 82 | /* *********************************************************************************************************************************** 83 | The main function is the entry point of our program 84 | *********************************************************************************************************************************** */ 85 | int main() { 86 | std::cout <<"Begin:"< 0){ 128 | error = true; 129 | mcf.bigM = mcf.bigM * 5; 130 | break; 131 | } 132 | } 133 | 134 | while (error){ 135 | // Get the solution x using function solver.getValues() and check if the virtual path variables have positive value. (first ncomm paths in pool) 136 | IloEnv env1; 137 | pathflowdata pathflow1(env1); 138 | pathflow = pathflow1; 139 | p_pool.reset(); 140 | int first = p_pool.nPaths; 141 | p_pool.init(mcf, g, h, djk, PP_total_time); 142 | int last = p_pool.nPaths; 143 | // add constraints and variables into the pathflow model; 144 | pathflow1.add_constraints(mcf, g, env1); 145 | pathflow1.add_paths(mcf, env1, p_pool, first, last); 146 | cgsolve(mcf, env1, solver, pathflow, g, p_pool, h, djk, iter, CG_total_time, PP_total_time); 147 | for (int i = n; i < n + mcf.nComm; i++){ 148 | if (pathflow1.PFlowVariableValues[i] > 0){ 149 | error = true; 150 | mcf.bigM = mcf.bigM * 5; 151 | break; 152 | } 153 | else{ 154 | error = false; 155 | } 156 | } 157 | } 158 | 159 | 160 | end = clock(); 161 | total_time = double(end - start) / CLOCKS_PER_SEC; 162 | std::cout << "1. Iteration number: "<< iter << "." << std::endl; 163 | std::cout << "2. The total number of columns: "<< pathflow.PFlowVariables.getSize() << "." << std::endl; 164 | std::cout << "3. The optimal cost obtained at the end(pathflow.bestobj): " << std::setprecision(10) << pathflow.bestobj << std::endl; 165 | std::cout << "4. The total time spent for solving the master problem over all iterations(CG_total_time): "<< CG_total_time << " sec." << std::endl; 166 | std::cout << "5. The total time spent for solving the pricing problem(PP_total_time): "<< std::setprecision(8) << PP_total_time << " sec." << std::endl; 167 | std::cout << "6. The total computing time: "<< total_time << " sec." << std::endl; 168 | // std::cin.get(); 169 | env.end(); 170 | return 0; 171 | } 172 | -------------------------------------------------------------------------------- /Column_Generation_Algorithm/mcf_data.h: -------------------------------------------------------------------------------- 1 | 2 | /* *********************************************************************************************************************************** 3 | Include files: Provide access to functions classes constants and macros defined in include files filename.h : 4 | use to include a file located in one of the locations specified by the compiler 5 | use "filename.h" to include a file located in the same directory of this file 6 | *********************************************************************************************************************************** */ 7 | 8 | #include // for file manipulation 9 | #include // for console input output 10 | #include // for strings manipulation 11 | #include // for using vectors (arrays with several built in functionalities) 12 | 13 | #pragma once 14 | 15 | /* *********************************************************************************************************************************** 16 | Define a class to read and store the instance data. We assume that the input file is formatted 17 | as follows: 18 | ------------------------------------------------- 19 | name_of_instance #_of_nodes #_of_arcs 20 | tail_node_of_arc_1 head_node_of_arc_1 unit_flow_cost_of_arc_1 capacity_of_arc_1 21 | tail_node_of_arc_2 head_node_of_arc_2 unit_flow_cost_of_arc_2 capacity_of_arc_2 22 | ... ... ... ... 23 | origin_node_of_commodity_1 destination_node_of_commodity_1 demand_of_commodity_1 24 | origin_node_of_commodity_2 destination_node_of_commodity_2 demand_of_commodity_2 25 | ... ... ... ... 26 | ------------------------------------------------- 27 | 28 | *********************************************************************************************************************************** */ 29 | 30 | class mcfdata { 31 | public: 32 | int nNode; // the # of nodes 33 | int nArcs; // the # of arcs 34 | int nComm; // the # of commodities 35 | double bigM; // a very big number, will be used as cost of the artificial 36 | // variables (virtual paths) in the CG algorithm 37 | 38 | std::vector ArcTail; // the tail vertex of each arc 39 | std::vector ArcHead; // the head vertex of each arc 40 | std::vector ArcCost; // the cost of each arc 41 | std::vector ArcCapa; // the capacity of each arc 42 | std::vector CommOri; // the starting vertex of each commodity 43 | std::vector CommEnd; // the terminal vertex of each commodity 44 | std::vector CommDem; // the demand of each commodity 45 | std::vector OutDegr; // the number of arcs outgoing from each vertex 46 | std::vector InDegre; // the number of arcs ingoing into each vertex 47 | 48 | std::string ProbName; // the name of the instance 49 | 50 | // Constructor function: must have same name as the class 51 | // Is called automatically to initialize a mcfdata object upon creation 52 | mcfdata() { 53 | nNode = 0; 54 | nArcs = 0; 55 | nComm = 0; 56 | bigM = 10000000; 57 | ProbName = ""; 58 | 59 | for (int i = 0; i> ProbName; 79 | input >> nNode >> nArcs >> nComm; 80 | 81 | // Dimension the vectors 82 | ArcTail.resize(nArcs); 83 | ArcHead.resize(nArcs); 84 | ArcCost.resize(nArcs); 85 | ArcCapa.resize(nArcs); 86 | 87 | CommOri.resize(nComm); 88 | CommEnd.resize(nComm); 89 | CommDem.resize(nComm); 90 | 91 | OutDegr.resize(nNode); 92 | InDegre.resize(nNode); 93 | 94 | // Read arc data 95 | for (int a = 0; a < nArcs; a++) { 96 | input >> ArcTail[a] >> ArcHead[a] >> ArcCost[a] >> ArcCapa[a]; 97 | ArcTail[a] --; 98 | ArcHead[a] --; 99 | OutDegr[ArcTail[a]] ++; 100 | InDegre[ArcHead[a]] ++; 101 | } 102 | 103 | // Read commodity data 104 | for (int k = 0; k < nComm; k++) { 105 | input >> CommOri[k] >> CommEnd[k] >> CommDem[k]; 106 | CommOri[k] --; 107 | CommEnd[k] --; 108 | } 109 | 110 | // Close the input file 111 | input.close(); 112 | } 113 | else { return false; } 114 | 115 | return true; 116 | } 117 | 118 | void print(){ 119 | std::cout << "MCF problem: " << ProbName << std::endl; 120 | std::cout << "nNode: " << nNode << std::endl; 121 | std::cout << "nArcs: " << nArcs << std::endl; 122 | std::cout << "nComm: " << nComm<< std::endl; 123 | std::cout << "bigM: " << bigM<< std::endl; 124 | } 125 | 126 | }; 127 | 128 | 129 | // ***************************************************************************** 130 | // CLASS FOR GRAPH REPRESENTATION OF THE MCF NETWORK 131 | // ***************************************************************************** 132 | 133 | class mcfgraph { 134 | public: 135 | int n; // number of nodes in the graph 136 | int m; // number of arcs in the graph 137 | 138 | // see lectures slides 06_netflows.pdf for a description of these vectors 139 | std::vector point; 140 | std::vector head; 141 | std::vector cost; 142 | std::vector capa; 143 | // the next vector will be useful for storing the arc modified costs to be used when solving 144 | // the pricing problem within the column generation algorithm 145 | std::vector modifiedcost; 146 | 147 | // the constructor just sizes the data structures 148 | // input to the constructor is the # of nodes n and # of arcs m 149 | mcfgraph(int n, int m) { 150 | cost.resize(m); 151 | head.resize(m); 152 | point.resize(n + 1); 153 | modifiedcost.resize(m); 154 | capa.resize(m); 155 | } 156 | 157 | // function that constructs the forward star representation of the input network 158 | // see lectures slides 06_netflows.pdf for a description of the procedure 159 | void fstar(mcfdata &mcf) { 160 | std::vector numf(mcf.nNode, 0); 161 | int a = -1; 162 | 163 | // Initialize the vector point and numf 164 | point[0] = 0; 165 | int i; 166 | for (i = 1; i < mcf.nNode; i++){ 167 | point[i] = point[i-1] + mcf.OutDegr[i-1]; 168 | } 169 | point[i] = mcf.nArcs; 170 | 171 | // Construct the forward star (fill vectors head, cost, and capa) 172 | for(int i = 0; i < mcf.nArcs; i++){ 173 | a = point[mcf.ArcTail[i]] + numf[mcf.ArcTail[i]]; 174 | head[a] = mcf.ArcHead[i]; 175 | cost[a] = mcf.ArcCost[i]; 176 | modifiedcost[a] = mcf.ArcCost[i]; 177 | capa[a] = mcf.ArcCapa[i]; 178 | numf[mcf.ArcTail[i]] = numf[mcf.ArcTail[i]] + 1; 179 | } 180 | } 181 | 182 | // function that given in input two nodes returns the corresponding arc # 183 | // with respect to the forward order. Returns - 1 if no such arc exists 184 | int get_arc_id(int i, int j) { 185 | //i is tail, j is head; 186 | int begin_point = point[i]; 187 | for (int k = 0; k <= point[i+1] - begin_point; k++){ 188 | if (head[begin_point+k] == j){ 189 | return begin_point+k; 190 | } 191 | } 192 | return -1; 193 | } 194 | }; 195 | -------------------------------------------------------------------------------- /Column_Generation_Algorithm/data/planar/planar30.dat: -------------------------------------------------------------------------------- 1 | planar30 2 | 30 3 | 150 4 | 92 5 | 1 14 9981 48 6 | 14 1 9981 48 7 | 1 16 11417 115 8 | 16 1 11417 115 9 | 1 22 20077 65 10 | 22 1 20077 65 11 | 1 26 8501 86 12 | 26 1 8501 86 13 | 2 12 52306 35 14 | 12 2 52306 35 15 | 2 16 9169 116 16 | 16 2 9169 116 17 | 2 19 118372 42 18 | 19 2 118372 42 19 | 2 21 6581 25 20 | 21 2 6581 25 21 | 2 26 10537 114 22 | 26 2 10537 114 23 | 3 17 6253 80 24 | 17 3 6253 80 25 | 3 19 56821 70 26 | 19 3 56821 70 27 | 3 22 33930 86 28 | 22 3 33930 86 29 | 3 24 29725 105 30 | 24 3 29725 105 31 | 3 25 37000 109 32 | 25 3 37000 109 33 | 3 30 41497 57 34 | 30 3 41497 57 35 | 4 11 88201 97 36 | 11 4 88201 97 37 | 4 15 7760 102 38 | 15 4 7760 102 39 | 4 18 8584 63 40 | 18 4 8584 63 41 | 4 23 51080 103 42 | 23 4 51080 103 43 | 4 27 14474 85 44 | 27 4 14474 85 45 | 4 28 36756 43 46 | 28 4 36756 43 47 | 5 7 1098 107 48 | 7 5 1098 107 49 | 5 10 12025 33 50 | 10 5 12025 33 51 | 5 13 13796 95 52 | 13 5 13796 95 53 | 5 23 48130 38 54 | 23 5 48130 38 55 | 5 25 13032 59 56 | 25 5 13032 59 57 | 5 27 44136 82 58 | 27 5 44136 82 59 | 5 30 4369 72 60 | 30 5 4369 72 61 | 6 7 9490 49 62 | 7 6 9490 49 63 | 6 8 6250 111 64 | 8 6 6250 111 65 | 6 10 7649 84 66 | 10 6 7649 84 67 | 6 28 15634 92 68 | 28 6 15634 92 69 | 6 30 19853 74 70 | 30 6 19853 74 71 | 7 10 7693 26 72 | 10 7 7693 26 73 | 7 30 5065 101 74 | 30 7 5065 101 75 | 8 14 43216 96 76 | 14 8 43216 96 77 | 8 20 33146 113 78 | 20 8 33146 113 79 | 8 28 23108 71 80 | 28 8 23108 71 81 | 8 29 27752 118 82 | 29 8 27752 118 83 | 8 30 44285 79 84 | 30 8 44285 79 85 | 9 11 25541 99 86 | 11 9 25541 99 87 | 9 20 1780 106 88 | 20 9 1780 106 89 | 9 29 6890 26 90 | 29 9 6890 26 91 | 10 13 61 102 92 | 13 10 61 102 93 | 10 28 5953 46 94 | 28 10 5953 46 95 | 11 20 16217 84 96 | 20 11 16217 84 97 | 11 28 52357 99 98 | 28 11 52357 99 99 | 12 14 107185 100 100 | 14 12 107185 100 101 | 12 21 24025 99 102 | 21 12 24025 99 103 | 13 27 20852 28 104 | 27 13 20852 28 105 | 13 28 4810 31 106 | 28 13 4810 31 107 | 14 16 15140 99 108 | 16 14 15140 99 109 | 14 21 44100 79 110 | 21 14 44100 79 111 | 14 22 49360 46 112 | 22 14 49360 46 113 | 14 29 51976 95 114 | 29 14 51976 95 115 | 14 30 73069 61 116 | 30 14 73069 61 117 | 15 18 680 29 118 | 18 15 680 29 119 | 15 27 3842 75 120 | 27 15 3842 75 121 | 15 28 12308 74 122 | 28 15 12308 74 123 | 16 21 14216 66 124 | 21 16 14216 66 125 | 16 26 1620 102 126 | 26 16 1620 102 127 | 17 25 12913 117 128 | 25 17 12913 117 129 | 17 30 21960 36 130 | 30 17 21960 36 131 | 18 27 1378 34 132 | 27 18 1378 34 133 | 19 22 31753 55 134 | 22 19 31753 55 135 | 19 24 33412 76 136 | 24 19 33412 76 137 | 19 26 77449 119 138 | 26 19 77449 119 139 | 20 28 60898 95 140 | 28 20 60898 95 141 | 20 29 9826 45 142 | 29 20 9826 45 143 | 22 26 46160 62 144 | 26 22 46160 62 145 | 22 30 33565 32 146 | 30 22 33565 32 147 | 23 25 35770 35 148 | 25 23 35770 35 149 | 23 27 16858 113 150 | 27 23 16858 113 151 | 25 30 19357 65 152 | 30 25 19357 65 153 | 27 28 19970 68 154 | 28 27 19970 68 155 | 1 6 4 156 | 1 18 10 157 | 2 22 4 158 | 2 24 4 159 | 2 27 9 160 | 3 5 8 161 | 3 17 9 162 | 4 5 9 163 | 4 14 4 164 | 4 18 10 165 | 4 21 9 166 | 5 2 8 167 | 5 16 10 168 | 5 26 11 169 | 6 19 9 170 | 6 22 9 171 | 6 30 11 172 | 7 6 11 173 | 7 13 6 174 | 7 14 7 175 | 8 7 11 176 | 8 9 5 177 | 8 10 4 178 | 8 16 4 179 | 8 22 8 180 | 8 25 7 181 | 8 26 4 182 | 9 1 4 183 | 9 20 7 184 | 9 26 9 185 | 9 30 6 186 | 11 4 8 187 | 11 6 11 188 | 11 9 9 189 | 11 16 4 190 | 11 21 7 191 | 11 22 11 192 | 11 25 6 193 | 11 27 5 194 | 12 7 11 195 | 13 7 7 196 | 13 14 8 197 | 13 16 6 198 | 14 3 6 199 | 14 8 6 200 | 14 9 10 201 | 14 15 6 202 | 14 19 6 203 | 14 22 10 204 | 14 30 8 205 | 15 24 7 206 | 16 2 8 207 | 16 5 7 208 | 16 11 9 209 | 16 13 9 210 | 16 15 8 211 | 17 2 11 212 | 17 5 8 213 | 17 10 10 214 | 18 3 4 215 | 18 11 5 216 | 18 21 5 217 | 19 7 4 218 | 19 28 8 219 | 20 6 4 220 | 20 12 8 221 | 20 13 11 222 | 21 11 10 223 | 21 17 5 224 | 22 15 4 225 | 23 9 8 226 | 23 20 11 227 | 23 22 7 228 | 23 28 7 229 | 24 14 9 230 | 24 29 11 231 | 25 7 6 232 | 25 12 4 233 | 25 26 11 234 | 26 5 5 235 | 26 12 11 236 | 27 16 11 237 | 27 26 9 238 | 27 28 6 239 | 28 3 11 240 | 28 8 9 241 | 29 3 5 242 | 29 5 6 243 | 29 19 10 244 | 29 24 8 245 | 30 1 7 246 | 30 7 11 247 | -------------------------------------------------------------------------------- /Column_Generation_Algorithm.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 50; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 71C30A5B21CC165B00004F17 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 71C30A5921CC165B00004F17 /* IOKit.framework */; }; 11 | 71C30A5F21CC167A00004F17 /* libconcert.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 71C30A5E21CC167A00004F17 /* libconcert.a */; }; 12 | 71C30A6321CC169100004F17 /* libilocplex.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 71C30A6021CC169100004F17 /* libilocplex.a */; }; 13 | 71C30A6421CC169100004F17 /* libcplex.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 71C30A6121CC169100004F17 /* libcplex.a */; }; 14 | 71C30A6521CC169100004F17 /* libcplexdistmip.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 71C30A6221CC169100004F17 /* libcplexdistmip.a */; }; 15 | 71FBBA0D21CC17E700AE6902 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 71FBBA0C21CC17E700AE6902 /* CoreFoundation.framework */; }; 16 | 71FBBA2821CC19D900AE6902 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 71FBBA2121CC19D900AE6902 /* main.cpp */; }; 17 | /* End PBXBuildFile section */ 18 | 19 | /* Begin PBXCopyFilesBuildPhase section */ 20 | 71C30A4B21CC164D00004F17 /* CopyFiles */ = { 21 | isa = PBXCopyFilesBuildPhase; 22 | buildActionMask = 2147483647; 23 | dstPath = /usr/share/man/man1/; 24 | dstSubfolderSpec = 0; 25 | files = ( 26 | ); 27 | runOnlyForDeploymentPostprocessing = 1; 28 | }; 29 | /* End PBXCopyFilesBuildPhase section */ 30 | 31 | /* Begin PBXFileReference section */ 32 | 719A287221CFC29300219DFA /* tiny-data */ = {isa = PBXFileReference; lastKnownFileType = folder; path = "tiny-data"; sourceTree = ""; }; 33 | 71C30A4D21CC164D00004F17 /* Column_Generation_Algorithm */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = Column_Generation_Algorithm; sourceTree = BUILT_PRODUCTS_DIR; }; 34 | 71C30A5821CC165B00004F17 /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; 35 | 71C30A5921CC165B00004F17 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; }; 36 | 71C30A5C21CC166A00004F17 /* static_pic */ = {isa = PBXFileReference; lastKnownFileType = folder; name = static_pic; path = "../../../../../Applications/CPLEX_Studio128/concert/lib/x86-64_osx/static_pic"; sourceTree = ""; }; 37 | 71C30A5E21CC167A00004F17 /* libconcert.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libconcert.a; path = "../../../../../Applications/CPLEX_Studio128/concert/lib/x86-64_osx/static_pic/libconcert.a"; sourceTree = ""; }; 38 | 71C30A6021CC169100004F17 /* libilocplex.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libilocplex.a; path = "../../../../../Applications/CPLEX_Studio128/cplex/lib/x86-64_osx/static_pic/libilocplex.a"; sourceTree = ""; }; 39 | 71C30A6121CC169100004F17 /* libcplex.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcplex.a; path = "../../../../../Applications/CPLEX_Studio128/cplex/lib/x86-64_osx/static_pic/libcplex.a"; sourceTree = ""; }; 40 | 71C30A6221CC169100004F17 /* libcplexdistmip.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcplexdistmip.a; path = "../../../../../Applications/CPLEX_Studio128/cplex/lib/x86-64_osx/static_pic/libcplexdistmip.a"; sourceTree = ""; }; 41 | 71FBBA0C21CC17E700AE6902 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; }; 42 | 71FBBA2121CC19D900AE6902 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; 43 | 71FBBA2221CC19D900AE6902 /* mcf_data.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = mcf_data.h; sourceTree = ""; }; 44 | 71FBBA2321CC19D900AE6902 /* spp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spp.h; sourceTree = ""; }; 45 | 71FBBA2421CC19D900AE6902 /* data */ = {isa = PBXFileReference; lastKnownFileType = folder; path = data; sourceTree = ""; }; 46 | 71FBBA2521CC19D900AE6902 /* pathpool.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = pathpool.h; sourceTree = ""; }; 47 | 71FBBA2621CC19D900AE6902 /* binheap.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = binheap.h; sourceTree = ""; }; 48 | 71FBBA2721CC19D900AE6902 /* pathflow_model.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = pathflow_model.h; sourceTree = ""; }; 49 | /* End PBXFileReference section */ 50 | 51 | /* Begin PBXFrameworksBuildPhase section */ 52 | 71C30A4A21CC164D00004F17 /* Frameworks */ = { 53 | isa = PBXFrameworksBuildPhase; 54 | buildActionMask = 2147483647; 55 | files = ( 56 | 71FBBA0D21CC17E700AE6902 /* CoreFoundation.framework in Frameworks */, 57 | 71C30A6321CC169100004F17 /* libilocplex.a in Frameworks */, 58 | 71C30A6421CC169100004F17 /* libcplex.a in Frameworks */, 59 | 71C30A6521CC169100004F17 /* libcplexdistmip.a in Frameworks */, 60 | 71C30A5F21CC167A00004F17 /* libconcert.a in Frameworks */, 61 | 71C30A5B21CC165B00004F17 /* IOKit.framework in Frameworks */, 62 | ); 63 | runOnlyForDeploymentPostprocessing = 0; 64 | }; 65 | /* End PBXFrameworksBuildPhase section */ 66 | 67 | /* Begin PBXGroup section */ 68 | 71C30A4421CC164D00004F17 = { 69 | isa = PBXGroup; 70 | children = ( 71 | 71C30A4F21CC164D00004F17 /* Column_Generation_Algorithm */, 72 | 71C30A4E21CC164D00004F17 /* Products */, 73 | 71C30A5721CC165B00004F17 /* Frameworks */, 74 | ); 75 | sourceTree = ""; 76 | }; 77 | 71C30A4E21CC164D00004F17 /* Products */ = { 78 | isa = PBXGroup; 79 | children = ( 80 | 71C30A4D21CC164D00004F17 /* Column_Generation_Algorithm */, 81 | ); 82 | name = Products; 83 | sourceTree = ""; 84 | }; 85 | 71C30A4F21CC164D00004F17 /* Column_Generation_Algorithm */ = { 86 | isa = PBXGroup; 87 | children = ( 88 | 71FBBA2621CC19D900AE6902 /* binheap.h */, 89 | 71FBBA2421CC19D900AE6902 /* data */, 90 | 71FBBA2221CC19D900AE6902 /* mcf_data.h */, 91 | 71FBBA2121CC19D900AE6902 /* main.cpp */, 92 | 719A287221CFC29300219DFA /* tiny-data */, 93 | 71FBBA2721CC19D900AE6902 /* pathflow_model.h */, 94 | 71FBBA2521CC19D900AE6902 /* pathpool.h */, 95 | 71FBBA2321CC19D900AE6902 /* spp.h */, 96 | ); 97 | path = Column_Generation_Algorithm; 98 | sourceTree = ""; 99 | }; 100 | 71C30A5721CC165B00004F17 /* Frameworks */ = { 101 | isa = PBXGroup; 102 | children = ( 103 | 71FBBA0C21CC17E700AE6902 /* CoreFoundation.framework */, 104 | 71C30A6121CC169100004F17 /* libcplex.a */, 105 | 71C30A6221CC169100004F17 /* libcplexdistmip.a */, 106 | 71C30A6021CC169100004F17 /* libilocplex.a */, 107 | 71C30A5E21CC167A00004F17 /* libconcert.a */, 108 | 71C30A5C21CC166A00004F17 /* static_pic */, 109 | 71C30A5821CC165B00004F17 /* CoreAudioKit.framework */, 110 | 71C30A5921CC165B00004F17 /* IOKit.framework */, 111 | ); 112 | name = Frameworks; 113 | sourceTree = ""; 114 | }; 115 | /* End PBXGroup section */ 116 | 117 | /* Begin PBXNativeTarget section */ 118 | 71C30A4C21CC164D00004F17 /* Column_Generation_Algorithm */ = { 119 | isa = PBXNativeTarget; 120 | buildConfigurationList = 71C30A5421CC164D00004F17 /* Build configuration list for PBXNativeTarget "Column_Generation_Algorithm" */; 121 | buildPhases = ( 122 | 71C30A4921CC164D00004F17 /* Sources */, 123 | 71C30A4A21CC164D00004F17 /* Frameworks */, 124 | 71C30A4B21CC164D00004F17 /* CopyFiles */, 125 | ); 126 | buildRules = ( 127 | ); 128 | dependencies = ( 129 | ); 130 | name = Column_Generation_Algorithm; 131 | productName = Column_Generation_Algorithm; 132 | productReference = 71C30A4D21CC164D00004F17 /* Column_Generation_Algorithm */; 133 | productType = "com.apple.product-type.tool"; 134 | }; 135 | /* End PBXNativeTarget section */ 136 | 137 | /* Begin PBXProject section */ 138 | 71C30A4521CC164D00004F17 /* Project object */ = { 139 | isa = PBXProject; 140 | attributes = { 141 | LastUpgradeCheck = 1010; 142 | ORGANIZATIONNAME = "Jingjing Huo"; 143 | TargetAttributes = { 144 | 71C30A4C21CC164D00004F17 = { 145 | CreatedOnToolsVersion = 10.1; 146 | }; 147 | }; 148 | }; 149 | buildConfigurationList = 71C30A4821CC164D00004F17 /* Build configuration list for PBXProject "Column_Generation_Algorithm" */; 150 | compatibilityVersion = "Xcode 9.3"; 151 | developmentRegion = en; 152 | hasScannedForEncodings = 0; 153 | knownRegions = ( 154 | en, 155 | ); 156 | mainGroup = 71C30A4421CC164D00004F17; 157 | productRefGroup = 71C30A4E21CC164D00004F17 /* Products */; 158 | projectDirPath = ""; 159 | projectRoot = ""; 160 | targets = ( 161 | 71C30A4C21CC164D00004F17 /* Column_Generation_Algorithm */, 162 | ); 163 | }; 164 | /* End PBXProject section */ 165 | 166 | /* Begin PBXSourcesBuildPhase section */ 167 | 71C30A4921CC164D00004F17 /* Sources */ = { 168 | isa = PBXSourcesBuildPhase; 169 | buildActionMask = 2147483647; 170 | files = ( 171 | 71FBBA2821CC19D900AE6902 /* main.cpp in Sources */, 172 | ); 173 | runOnlyForDeploymentPostprocessing = 0; 174 | }; 175 | /* End PBXSourcesBuildPhase section */ 176 | 177 | /* Begin XCBuildConfiguration section */ 178 | 71C30A5221CC164D00004F17 /* Debug */ = { 179 | isa = XCBuildConfiguration; 180 | buildSettings = { 181 | ALWAYS_SEARCH_USER_PATHS = NO; 182 | CLANG_ANALYZER_NONNULL = YES; 183 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 184 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 185 | CLANG_CXX_LIBRARY = "libc++"; 186 | CLANG_ENABLE_MODULES = YES; 187 | CLANG_ENABLE_OBJC_ARC = YES; 188 | CLANG_ENABLE_OBJC_WEAK = YES; 189 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 190 | CLANG_WARN_BOOL_CONVERSION = YES; 191 | CLANG_WARN_COMMA = YES; 192 | CLANG_WARN_CONSTANT_CONVERSION = YES; 193 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 194 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 195 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 196 | CLANG_WARN_EMPTY_BODY = YES; 197 | CLANG_WARN_ENUM_CONVERSION = YES; 198 | CLANG_WARN_INFINITE_RECURSION = YES; 199 | CLANG_WARN_INT_CONVERSION = YES; 200 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 201 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 202 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 203 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 204 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 205 | CLANG_WARN_STRICT_PROTOTYPES = YES; 206 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 207 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 208 | CLANG_WARN_UNREACHABLE_CODE = YES; 209 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 210 | CODE_SIGN_IDENTITY = "-"; 211 | COPY_PHASE_STRIP = NO; 212 | DEBUG_INFORMATION_FORMAT = dwarf; 213 | ENABLE_STRICT_OBJC_MSGSEND = YES; 214 | ENABLE_TESTABILITY = YES; 215 | GCC_C_LANGUAGE_STANDARD = gnu11; 216 | GCC_DYNAMIC_NO_PIC = NO; 217 | GCC_NO_COMMON_BLOCKS = YES; 218 | GCC_OPTIMIZATION_LEVEL = 0; 219 | GCC_PREPROCESSOR_DEFINITIONS = ( 220 | "DEBUG=1", 221 | "$(inherited)", 222 | ); 223 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 224 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 225 | GCC_WARN_UNDECLARED_SELECTOR = YES; 226 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 227 | GCC_WARN_UNUSED_FUNCTION = YES; 228 | GCC_WARN_UNUSED_VARIABLE = YES; 229 | MACOSX_DEPLOYMENT_TARGET = 10.14; 230 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 231 | MTL_FAST_MATH = YES; 232 | ONLY_ACTIVE_ARCH = YES; 233 | SDKROOT = macosx; 234 | }; 235 | name = Debug; 236 | }; 237 | 71C30A5321CC164D00004F17 /* Release */ = { 238 | isa = XCBuildConfiguration; 239 | buildSettings = { 240 | ALWAYS_SEARCH_USER_PATHS = NO; 241 | CLANG_ANALYZER_NONNULL = YES; 242 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 243 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 244 | CLANG_CXX_LIBRARY = "libc++"; 245 | CLANG_ENABLE_MODULES = YES; 246 | CLANG_ENABLE_OBJC_ARC = YES; 247 | CLANG_ENABLE_OBJC_WEAK = YES; 248 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 249 | CLANG_WARN_BOOL_CONVERSION = YES; 250 | CLANG_WARN_COMMA = YES; 251 | CLANG_WARN_CONSTANT_CONVERSION = YES; 252 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 253 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 254 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 255 | CLANG_WARN_EMPTY_BODY = YES; 256 | CLANG_WARN_ENUM_CONVERSION = YES; 257 | CLANG_WARN_INFINITE_RECURSION = YES; 258 | CLANG_WARN_INT_CONVERSION = YES; 259 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 260 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 261 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 262 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 263 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 264 | CLANG_WARN_STRICT_PROTOTYPES = YES; 265 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 266 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 267 | CLANG_WARN_UNREACHABLE_CODE = YES; 268 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 269 | CODE_SIGN_IDENTITY = "-"; 270 | COPY_PHASE_STRIP = NO; 271 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 272 | ENABLE_NS_ASSERTIONS = NO; 273 | ENABLE_STRICT_OBJC_MSGSEND = YES; 274 | GCC_C_LANGUAGE_STANDARD = gnu11; 275 | GCC_NO_COMMON_BLOCKS = YES; 276 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 277 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 278 | GCC_WARN_UNDECLARED_SELECTOR = YES; 279 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 280 | GCC_WARN_UNUSED_FUNCTION = YES; 281 | GCC_WARN_UNUSED_VARIABLE = YES; 282 | MACOSX_DEPLOYMENT_TARGET = 10.14; 283 | MTL_ENABLE_DEBUG_INFO = NO; 284 | MTL_FAST_MATH = YES; 285 | SDKROOT = macosx; 286 | }; 287 | name = Release; 288 | }; 289 | 71C30A5521CC164D00004F17 /* Debug */ = { 290 | isa = XCBuildConfiguration; 291 | buildSettings = { 292 | CODE_SIGN_STYLE = Automatic; 293 | HEADER_SEARCH_PATHS = ( 294 | /Applications/CPLEX_Studio128/concert/include, 295 | /Applications/CPLEX_Studio128/cplex/include, 296 | ); 297 | LIBRARY_SEARCH_PATHS = ( 298 | "\"/Applications/CPLEX_Studio128/cplex/lib/x86-64_osx/static_pic\"", 299 | "\"/Applications/CPLEX_Studio128/concert/lib/x86-64_osx/static_pic\"", 300 | ); 301 | OTHER_CFLAGS = "-DIL_STD"; 302 | PRODUCT_NAME = "$(TARGET_NAME)"; 303 | }; 304 | name = Debug; 305 | }; 306 | 71C30A5621CC164D00004F17 /* Release */ = { 307 | isa = XCBuildConfiguration; 308 | buildSettings = { 309 | CODE_SIGN_STYLE = Automatic; 310 | HEADER_SEARCH_PATHS = ( 311 | /Applications/CPLEX_Studio128/concert/include, 312 | /Applications/CPLEX_Studio128/cplex/include, 313 | ); 314 | LIBRARY_SEARCH_PATHS = ( 315 | "\"/Applications/CPLEX_Studio128/cplex/lib/x86-64_osx/static_pic\"", 316 | "\"/Applications/CPLEX_Studio128/concert/lib/x86-64_osx/static_pic\"", 317 | ); 318 | OTHER_CFLAGS = "-DIL_STD"; 319 | PRODUCT_NAME = "$(TARGET_NAME)"; 320 | }; 321 | name = Release; 322 | }; 323 | /* End XCBuildConfiguration section */ 324 | 325 | /* Begin XCConfigurationList section */ 326 | 71C30A4821CC164D00004F17 /* Build configuration list for PBXProject "Column_Generation_Algorithm" */ = { 327 | isa = XCConfigurationList; 328 | buildConfigurations = ( 329 | 71C30A5221CC164D00004F17 /* Debug */, 330 | 71C30A5321CC164D00004F17 /* Release */, 331 | ); 332 | defaultConfigurationIsVisible = 0; 333 | defaultConfigurationName = Release; 334 | }; 335 | 71C30A5421CC164D00004F17 /* Build configuration list for PBXNativeTarget "Column_Generation_Algorithm" */ = { 336 | isa = XCConfigurationList; 337 | buildConfigurations = ( 338 | 71C30A5521CC164D00004F17 /* Debug */, 339 | 71C30A5621CC164D00004F17 /* Release */, 340 | ); 341 | defaultConfigurationIsVisible = 0; 342 | defaultConfigurationName = Release; 343 | }; 344 | /* End XCConfigurationList section */ 345 | }; 346 | rootObject = 71C30A4521CC164D00004F17 /* Project object */; 347 | } 348 | -------------------------------------------------------------------------------- /Column_Generation_Algorithm/data/grid/grid3.dat: -------------------------------------------------------------------------------- 1 | grid3 2 | 100 3 | 360 4 | 50 5 | 1 2 91 133 6 | 1 11 97 280 7 | 2 1 95 99 8 | 2 3 82 135 9 | 2 12 92 147 10 | 3 2 85 349 11 | 3 4 95 412 12 | 3 13 97 286 13 | 4 3 93 172 14 | 4 5 83 139 15 | 4 14 85 189 16 | 5 4 99 138 17 | 5 6 87 107 18 | 5 15 80 124 19 | 6 5 85 479 20 | 6 7 98 308 21 | 6 16 88 251 22 | 7 6 93 439 23 | 7 8 84 421 24 | 7 17 85 220 25 | 8 7 81 346 26 | 8 9 96 154 27 | 8 18 96 280 28 | 9 8 88 278 29 | 9 10 87 191 30 | 9 19 98 382 31 | 10 9 84 206 32 | 10 20 97 415 33 | 11 1 100 265 34 | 11 12 83 279 35 | 11 21 99 213 36 | 12 2 94 410 37 | 12 11 88 149 38 | 12 13 86 394 39 | 12 22 96 300 40 | 13 3 83 297 41 | 13 12 98 373 42 | 13 14 85 447 43 | 13 23 93 229 44 | 14 4 86 264 45 | 14 13 93 297 46 | 14 15 94 378 47 | 14 24 82 261 48 | 15 5 96 379 49 | 15 14 91 435 50 | 15 16 88 147 51 | 15 25 92 374 52 | 16 6 98 316 53 | 16 15 83 246 54 | 16 17 82 329 55 | 16 26 88 469 56 | 17 7 94 253 57 | 17 16 96 179 58 | 17 18 94 191 59 | 17 27 80 278 60 | 18 8 94 278 61 | 18 17 86 224 62 | 18 19 100 486 63 | 18 28 100 288 64 | 19 9 94 293 65 | 19 18 82 139 66 | 19 20 89 448 67 | 19 29 98 393 68 | 20 10 88 166 69 | 20 19 100 402 70 | 20 30 89 241 71 | 21 11 81 381 72 | 21 22 92 93 73 | 21 31 98 267 74 | 22 12 92 324 75 | 22 21 92 181 76 | 22 23 92 128 77 | 22 32 96 371 78 | 23 13 94 200 79 | 23 22 99 371 80 | 23 24 97 466 81 | 23 33 97 275 82 | 24 14 92 400 83 | 24 23 89 458 84 | 24 25 95 206 85 | 24 34 82 368 86 | 25 15 84 186 87 | 25 24 89 259 88 | 25 26 99 190 89 | 25 35 96 142 90 | 26 16 81 409 91 | 26 25 94 276 92 | 26 27 94 459 93 | 26 36 95 252 94 | 27 17 80 402 95 | 27 26 81 387 96 | 27 28 95 299 97 | 27 37 94 367 98 | 28 18 95 371 99 | 28 27 81 368 100 | 28 29 88 235 101 | 28 38 81 233 102 | 29 19 94 134 103 | 29 28 80 351 104 | 29 30 98 335 105 | 29 39 94 363 106 | 30 20 80 480 107 | 30 29 86 334 108 | 30 40 95 191 109 | 31 21 82 146 110 | 31 32 98 412 111 | 31 41 85 463 112 | 32 22 81 137 113 | 32 31 95 218 114 | 32 33 86 129 115 | 32 42 91 380 116 | 33 23 93 261 117 | 33 32 87 479 118 | 33 34 96 216 119 | 33 43 99 170 120 | 34 24 99 389 121 | 34 33 89 189 122 | 34 35 98 99 123 | 34 44 93 408 124 | 35 25 87 378 125 | 35 34 91 347 126 | 35 36 83 234 127 | 35 45 85 217 128 | 36 26 96 315 129 | 36 35 97 358 130 | 36 37 96 289 131 | 36 46 82 457 132 | 37 27 82 345 133 | 37 36 84 423 134 | 37 38 94 173 135 | 37 47 86 157 136 | 38 28 100 127 137 | 38 37 93 432 138 | 38 39 93 200 139 | 38 48 96 488 140 | 39 29 87 453 141 | 39 38 94 411 142 | 39 40 87 412 143 | 39 49 83 418 144 | 40 30 83 215 145 | 40 39 96 95 146 | 40 50 96 166 147 | 41 31 89 325 148 | 41 42 83 455 149 | 41 51 91 275 150 | 42 32 92 411 151 | 42 41 92 118 152 | 42 43 85 295 153 | 42 52 94 308 154 | 43 33 94 141 155 | 43 42 95 145 156 | 43 44 84 480 157 | 43 53 83 413 158 | 44 34 84 273 159 | 44 43 94 227 160 | 44 45 89 108 161 | 44 54 85 364 162 | 45 35 92 426 163 | 45 44 85 315 164 | 45 46 98 312 165 | 45 55 92 386 166 | 46 36 99 246 167 | 46 45 97 483 168 | 46 47 89 457 169 | 46 56 84 284 170 | 47 37 80 356 171 | 47 46 80 183 172 | 47 48 97 203 173 | 47 57 98 191 174 | 48 38 86 184 175 | 48 47 94 455 176 | 48 49 85 211 177 | 48 58 91 175 178 | 49 39 84 132 179 | 49 48 88 218 180 | 49 50 84 446 181 | 49 59 81 94 182 | 50 40 82 154 183 | 50 49 83 354 184 | 50 60 86 443 185 | 51 41 91 128 186 | 51 52 100 202 187 | 51 61 83 293 188 | 52 42 95 96 189 | 52 51 85 198 190 | 52 53 80 196 191 | 52 62 91 405 192 | 53 43 84 132 193 | 53 52 86 269 194 | 53 54 94 196 195 | 53 63 85 133 196 | 54 44 85 440 197 | 54 53 82 177 198 | 54 55 84 426 199 | 54 64 97 353 200 | 55 45 94 203 201 | 55 54 95 163 202 | 55 56 81 210 203 | 55 65 85 296 204 | 56 46 85 415 205 | 56 55 100 350 206 | 56 57 91 299 207 | 56 66 82 330 208 | 57 47 80 325 209 | 57 56 85 363 210 | 57 58 96 433 211 | 57 67 83 118 212 | 58 48 84 383 213 | 58 57 88 106 214 | 58 59 88 212 215 | 58 68 91 271 216 | 59 49 94 454 217 | 59 58 86 113 218 | 59 60 92 336 219 | 59 69 92 199 220 | 60 50 93 246 221 | 60 59 83 481 222 | 60 70 99 268 223 | 61 51 86 276 224 | 61 62 84 332 225 | 61 71 88 400 226 | 62 52 86 202 227 | 62 61 88 241 228 | 62 63 85 319 229 | 62 72 94 488 230 | 63 53 98 176 231 | 63 62 88 324 232 | 63 64 94 130 233 | 63 73 81 354 234 | 64 54 93 209 235 | 64 63 98 241 236 | 64 65 100 153 237 | 64 74 93 389 238 | 65 55 87 316 239 | 65 64 91 138 240 | 65 66 95 242 241 | 65 75 100 202 242 | 66 56 91 264 243 | 66 65 84 226 244 | 66 67 97 100 245 | 66 76 85 322 246 | 67 57 89 342 247 | 67 66 93 397 248 | 67 68 95 234 249 | 67 77 84 366 250 | 68 58 82 185 251 | 68 67 97 145 252 | 68 69 89 435 253 | 68 78 88 284 254 | 69 59 91 142 255 | 69 68 100 103 256 | 69 70 86 136 257 | 69 79 98 317 258 | 70 60 96 231 259 | 70 69 88 307 260 | 70 80 92 429 261 | 71 61 98 248 262 | 71 72 94 346 263 | 71 81 89 95 264 | 72 62 93 488 265 | 72 71 82 378 266 | 72 73 85 390 267 | 72 82 82 369 268 | 73 63 98 168 269 | 73 72 85 445 270 | 73 74 97 382 271 | 73 83 96 309 272 | 74 64 85 338 273 | 74 73 84 472 274 | 74 75 85 409 275 | 74 84 84 476 276 | 75 65 87 319 277 | 75 74 81 191 278 | 75 76 99 486 279 | 75 85 93 396 280 | 76 66 86 381 281 | 76 75 94 226 282 | 76 77 82 178 283 | 76 86 85 152 284 | 77 67 88 259 285 | 77 76 81 463 286 | 77 78 81 459 287 | 77 87 82 486 288 | 78 68 96 463 289 | 78 77 98 420 290 | 78 79 82 459 291 | 78 88 91 135 292 | 79 69 92 136 293 | 79 78 96 222 294 | 79 80 94 373 295 | 79 89 86 99 296 | 80 70 93 219 297 | 80 79 85 194 298 | 80 90 88 375 299 | 81 71 88 369 300 | 81 82 88 96 301 | 81 91 88 95 302 | 82 72 94 431 303 | 82 81 98 413 304 | 82 83 87 472 305 | 82 92 91 392 306 | 83 73 84 438 307 | 83 82 81 143 308 | 83 84 94 251 309 | 83 93 94 198 310 | 84 74 97 376 311 | 84 83 88 273 312 | 84 85 81 177 313 | 84 94 100 271 314 | 85 75 93 333 315 | 85 84 83 377 316 | 85 86 83 199 317 | 85 95 93 113 318 | 86 76 96 446 319 | 86 85 97 362 320 | 86 87 87 118 321 | 86 96 99 346 322 | 87 77 82 252 323 | 87 86 81 468 324 | 87 88 84 93 325 | 87 97 94 216 326 | 88 78 80 281 327 | 88 87 87 309 328 | 88 89 82 149 329 | 88 98 81 197 330 | 89 79 88 175 331 | 89 88 93 469 332 | 89 90 98 465 333 | 89 99 91 352 334 | 90 80 97 185 335 | 90 89 89 355 336 | 90 100 92 395 337 | 91 81 93 418 338 | 91 92 95 307 339 | 92 82 88 237 340 | 92 91 93 393 341 | 92 93 89 264 342 | 93 83 86 331 343 | 93 92 91 368 344 | 93 94 96 394 345 | 94 84 96 316 346 | 94 93 80 253 347 | 94 95 81 317 348 | 95 85 98 424 349 | 95 94 100 165 350 | 95 96 100 319 351 | 96 86 97 207 352 | 96 95 80 193 353 | 96 97 88 169 354 | 97 87 82 159 355 | 97 96 80 185 356 | 97 98 89 241 357 | 98 88 93 270 358 | 98 97 85 283 359 | 98 99 81 234 360 | 99 89 99 192 361 | 99 98 100 423 362 | 99 100 96 189 363 | 100 90 80 232 364 | 100 99 97 286 365 | 56 19 95 366 | 1 22 69 367 | 10 19 76 368 | 70 85 22 369 | 55 35 44 370 | 37 45 72 371 | 85 77 59 372 | 77 24 19 373 | 60 47 24 374 | 35 34 93 375 | 16 67 26 376 | 28 70 100 377 | 16 65 38 378 | 29 55 65 379 | 13 26 81 380 | 43 26 78 381 | 22 36 33 382 | 61 50 98 383 | 7 94 87 384 | 3 83 96 385 | 29 82 80 386 | 13 77 62 387 | 71 85 58 388 | 68 28 37 389 | 70 35 49 390 | 78 100 75 391 | 52 24 17 392 | 73 9 24 393 | 19 79 22 394 | 78 65 33 395 | 18 32 45 396 | 43 89 70 397 | 60 5 71 398 | 35 59 64 399 | 45 1 13 400 | 87 58 31 401 | 76 74 77 402 | 12 2 100 403 | 87 30 81 404 | 11 57 15 405 | 42 4 85 406 | 39 88 86 407 | 44 61 15 408 | 30 73 35 409 | 41 25 47 410 | 14 26 93 411 | 80 91 27 412 | 89 30 38 413 | 77 96 67 414 | 58 4 64 415 | -------------------------------------------------------------------------------- /Column_Generation_Algorithm/data/grid/grid4.dat: -------------------------------------------------------------------------------- 1 | grid4 2 | 100 3 | 360 4 | 100 5 | 1 2 91 193 6 | 1 11 97 340 7 | 2 1 95 159 8 | 2 3 82 195 9 | 2 12 92 207 10 | 3 2 85 409 11 | 3 4 95 472 12 | 3 13 97 346 13 | 4 3 93 232 14 | 4 5 83 199 15 | 4 14 85 249 16 | 5 4 99 198 17 | 5 6 87 167 18 | 5 15 80 184 19 | 6 5 85 539 20 | 6 7 98 368 21 | 6 16 88 311 22 | 7 6 93 499 23 | 7 8 84 481 24 | 7 17 85 280 25 | 8 7 81 406 26 | 8 9 96 214 27 | 8 18 96 340 28 | 9 8 88 338 29 | 9 10 87 251 30 | 9 19 98 442 31 | 10 9 84 266 32 | 10 20 97 475 33 | 11 1 100 325 34 | 11 12 83 339 35 | 11 21 99 273 36 | 12 2 94 470 37 | 12 11 88 209 38 | 12 13 86 454 39 | 12 22 96 360 40 | 13 3 83 357 41 | 13 12 98 433 42 | 13 14 85 507 43 | 13 23 93 289 44 | 14 4 86 324 45 | 14 13 93 357 46 | 14 15 94 438 47 | 14 24 82 321 48 | 15 5 96 439 49 | 15 14 91 495 50 | 15 16 88 207 51 | 15 25 92 434 52 | 16 6 98 376 53 | 16 15 83 306 54 | 16 17 82 389 55 | 16 26 88 529 56 | 17 7 94 313 57 | 17 16 96 239 58 | 17 18 94 251 59 | 17 27 80 338 60 | 18 8 94 338 61 | 18 17 86 284 62 | 18 19 100 546 63 | 18 28 100 348 64 | 19 9 94 353 65 | 19 18 82 199 66 | 19 20 89 508 67 | 19 29 98 453 68 | 20 10 88 226 69 | 20 19 100 462 70 | 20 30 89 301 71 | 21 11 81 441 72 | 21 22 92 153 73 | 21 31 98 327 74 | 22 12 92 384 75 | 22 21 92 241 76 | 22 23 92 188 77 | 22 32 96 431 78 | 23 13 94 260 79 | 23 22 99 431 80 | 23 24 97 526 81 | 23 33 97 335 82 | 24 14 92 460 83 | 24 23 89 518 84 | 24 25 95 266 85 | 24 34 82 428 86 | 25 15 84 246 87 | 25 24 89 319 88 | 25 26 99 250 89 | 25 35 96 202 90 | 26 16 81 469 91 | 26 25 94 336 92 | 26 27 94 519 93 | 26 36 95 312 94 | 27 17 80 462 95 | 27 26 81 447 96 | 27 28 95 359 97 | 27 37 94 427 98 | 28 18 95 431 99 | 28 27 81 428 100 | 28 29 88 295 101 | 28 38 81 293 102 | 29 19 94 194 103 | 29 28 80 411 104 | 29 30 98 395 105 | 29 39 94 423 106 | 30 20 80 540 107 | 30 29 86 394 108 | 30 40 95 251 109 | 31 21 82 206 110 | 31 32 98 472 111 | 31 41 85 523 112 | 32 22 81 197 113 | 32 31 95 278 114 | 32 33 86 189 115 | 32 42 91 440 116 | 33 23 93 321 117 | 33 32 87 539 118 | 33 34 96 276 119 | 33 43 99 230 120 | 34 24 99 449 121 | 34 33 89 249 122 | 34 35 98 159 123 | 34 44 93 468 124 | 35 25 87 438 125 | 35 34 91 407 126 | 35 36 83 294 127 | 35 45 85 277 128 | 36 26 96 375 129 | 36 35 97 418 130 | 36 37 96 349 131 | 36 46 82 517 132 | 37 27 82 405 133 | 37 36 84 483 134 | 37 38 94 233 135 | 37 47 86 217 136 | 38 28 100 187 137 | 38 37 93 492 138 | 38 39 93 260 139 | 38 48 96 548 140 | 39 29 87 513 141 | 39 38 94 471 142 | 39 40 87 472 143 | 39 49 83 478 144 | 40 30 83 275 145 | 40 39 96 155 146 | 40 50 96 226 147 | 41 31 89 385 148 | 41 42 83 515 149 | 41 51 91 335 150 | 42 32 92 471 151 | 42 41 92 178 152 | 42 43 85 355 153 | 42 52 94 368 154 | 43 33 94 201 155 | 43 42 95 205 156 | 43 44 84 540 157 | 43 53 83 473 158 | 44 34 84 333 159 | 44 43 94 287 160 | 44 45 89 168 161 | 44 54 85 424 162 | 45 35 92 486 163 | 45 44 85 375 164 | 45 46 98 372 165 | 45 55 92 446 166 | 46 36 99 306 167 | 46 45 97 543 168 | 46 47 89 517 169 | 46 56 84 344 170 | 47 37 80 416 171 | 47 46 80 243 172 | 47 48 97 263 173 | 47 57 98 251 174 | 48 38 86 244 175 | 48 47 94 515 176 | 48 49 85 271 177 | 48 58 91 235 178 | 49 39 84 192 179 | 49 48 88 278 180 | 49 50 84 506 181 | 49 59 81 154 182 | 50 40 82 214 183 | 50 49 83 414 184 | 50 60 86 503 185 | 51 41 91 188 186 | 51 52 100 262 187 | 51 61 83 353 188 | 52 42 95 156 189 | 52 51 85 258 190 | 52 53 80 256 191 | 52 62 91 465 192 | 53 43 84 192 193 | 53 52 86 329 194 | 53 54 94 256 195 | 53 63 85 193 196 | 54 44 85 500 197 | 54 53 82 237 198 | 54 55 84 486 199 | 54 64 97 413 200 | 55 45 94 263 201 | 55 54 95 223 202 | 55 56 81 270 203 | 55 65 85 356 204 | 56 46 85 475 205 | 56 55 100 410 206 | 56 57 91 359 207 | 56 66 82 390 208 | 57 47 80 385 209 | 57 56 85 423 210 | 57 58 96 493 211 | 57 67 83 178 212 | 58 48 84 443 213 | 58 57 88 166 214 | 58 59 88 272 215 | 58 68 91 331 216 | 59 49 94 514 217 | 59 58 86 173 218 | 59 60 92 396 219 | 59 69 92 259 220 | 60 50 93 306 221 | 60 59 83 541 222 | 60 70 99 328 223 | 61 51 86 336 224 | 61 62 84 392 225 | 61 71 88 460 226 | 62 52 86 262 227 | 62 61 88 301 228 | 62 63 85 379 229 | 62 72 94 548 230 | 63 53 98 236 231 | 63 62 88 384 232 | 63 64 94 190 233 | 63 73 81 414 234 | 64 54 93 269 235 | 64 63 98 301 236 | 64 65 100 213 237 | 64 74 93 449 238 | 65 55 87 376 239 | 65 64 91 198 240 | 65 66 95 302 241 | 65 75 100 262 242 | 66 56 91 324 243 | 66 65 84 286 244 | 66 67 97 160 245 | 66 76 85 382 246 | 67 57 89 402 247 | 67 66 93 457 248 | 67 68 95 294 249 | 67 77 84 426 250 | 68 58 82 245 251 | 68 67 97 205 252 | 68 69 89 495 253 | 68 78 88 344 254 | 69 59 91 202 255 | 69 68 100 163 256 | 69 70 86 196 257 | 69 79 98 377 258 | 70 60 96 291 259 | 70 69 88 367 260 | 70 80 92 489 261 | 71 61 98 308 262 | 71 72 94 406 263 | 71 81 89 155 264 | 72 62 93 548 265 | 72 71 82 438 266 | 72 73 85 450 267 | 72 82 82 429 268 | 73 63 98 228 269 | 73 72 85 505 270 | 73 74 97 442 271 | 73 83 96 369 272 | 74 64 85 398 273 | 74 73 84 532 274 | 74 75 85 469 275 | 74 84 84 536 276 | 75 65 87 379 277 | 75 74 81 251 278 | 75 76 99 546 279 | 75 85 93 456 280 | 76 66 86 441 281 | 76 75 94 286 282 | 76 77 82 238 283 | 76 86 85 212 284 | 77 67 88 319 285 | 77 76 81 523 286 | 77 78 81 519 287 | 77 87 82 546 288 | 78 68 96 523 289 | 78 77 98 480 290 | 78 79 82 519 291 | 78 88 91 195 292 | 79 69 92 196 293 | 79 78 96 282 294 | 79 80 94 433 295 | 79 89 86 159 296 | 80 70 93 279 297 | 80 79 85 254 298 | 80 90 88 435 299 | 81 71 88 429 300 | 81 82 88 156 301 | 81 91 88 155 302 | 82 72 94 491 303 | 82 81 98 473 304 | 82 83 87 532 305 | 82 92 91 452 306 | 83 73 84 498 307 | 83 82 81 203 308 | 83 84 94 311 309 | 83 93 94 258 310 | 84 74 97 436 311 | 84 83 88 333 312 | 84 85 81 237 313 | 84 94 100 331 314 | 85 75 93 393 315 | 85 84 83 437 316 | 85 86 83 259 317 | 85 95 93 173 318 | 86 76 96 506 319 | 86 85 97 422 320 | 86 87 87 178 321 | 86 96 99 406 322 | 87 77 82 312 323 | 87 86 81 528 324 | 87 88 84 153 325 | 87 97 94 276 326 | 88 78 80 341 327 | 88 87 87 369 328 | 88 89 82 209 329 | 88 98 81 257 330 | 89 79 88 235 331 | 89 88 93 529 332 | 89 90 98 525 333 | 89 99 91 412 334 | 90 80 97 245 335 | 90 89 89 415 336 | 90 100 92 455 337 | 91 81 93 478 338 | 91 92 95 367 339 | 92 82 88 297 340 | 92 91 93 453 341 | 92 93 89 324 342 | 93 83 86 391 343 | 93 92 91 428 344 | 93 94 96 454 345 | 94 84 96 376 346 | 94 93 80 313 347 | 94 95 81 377 348 | 95 85 98 484 349 | 95 94 100 225 350 | 95 96 100 379 351 | 96 86 97 267 352 | 96 95 80 253 353 | 96 97 88 229 354 | 97 87 82 219 355 | 97 96 80 245 356 | 97 98 89 301 357 | 98 88 93 330 358 | 98 97 85 343 359 | 98 99 81 294 360 | 99 89 99 252 361 | 99 98 100 483 362 | 99 100 96 249 363 | 100 90 80 292 364 | 100 99 97 346 365 | 56 19 95 366 | 1 22 69 367 | 10 19 76 368 | 70 85 22 369 | 55 35 44 370 | 37 45 72 371 | 85 77 59 372 | 77 24 19 373 | 60 47 24 374 | 35 34 93 375 | 16 67 26 376 | 28 70 100 377 | 16 65 38 378 | 29 55 65 379 | 13 26 81 380 | 43 26 78 381 | 22 36 33 382 | 61 50 98 383 | 7 94 87 384 | 3 83 96 385 | 29 82 80 386 | 13 77 62 387 | 71 85 58 388 | 68 28 37 389 | 70 35 49 390 | 78 100 75 391 | 52 24 17 392 | 73 9 24 393 | 19 79 22 394 | 78 65 33 395 | 18 32 45 396 | 43 89 70 397 | 60 5 71 398 | 35 59 64 399 | 45 1 13 400 | 87 58 31 401 | 76 74 77 402 | 12 2 100 403 | 87 30 81 404 | 11 57 15 405 | 42 4 85 406 | 39 88 86 407 | 44 61 15 408 | 30 73 35 409 | 41 25 47 410 | 14 26 93 411 | 80 91 27 412 | 89 30 38 413 | 77 96 67 414 | 58 4 64 415 | 25 62 13 416 | 31 94 97 417 | 76 37 70 418 | 93 87 58 419 | 73 99 58 420 | 6 53 80 421 | 56 53 76 422 | 67 60 13 423 | 16 57 27 424 | 6 38 71 425 | 43 67 29 426 | 74 47 34 427 | 1 95 20 428 | 72 16 67 429 | 94 90 55 430 | 3 30 59 431 | 13 39 52 432 | 51 33 47 433 | 39 25 18 434 | 65 20 62 435 | 92 60 22 436 | 69 42 23 437 | 81 36 46 438 | 22 63 38 439 | 86 18 30 440 | 74 76 90 441 | 69 93 86 442 | 94 61 94 443 | 37 99 57 444 | 32 19 75 445 | 84 97 86 446 | 32 90 77 447 | 19 2 32 448 | 23 31 67 449 | 60 30 13 450 | 52 81 70 451 | 4 3 32 452 | 17 66 88 453 | 71 3 53 454 | 25 60 78 455 | 92 47 30 456 | 93 63 81 457 | 9 65 27 458 | 75 79 100 459 | 88 55 39 460 | 3 86 51 461 | 72 88 21 462 | 94 91 15 463 | 58 30 21 464 | 97 77 80 465 | -------------------------------------------------------------------------------- /Column_Generation_Algorithm/data/planar/planar50.dat: -------------------------------------------------------------------------------- 1 | planar50 2 | 50 3 | 250 4 | 267 5 | 1 7 44489 61 6 | 7 1 44489 61 7 | 1 17 13169 106 8 | 17 1 13169 106 9 | 1 25 3816 125 10 | 25 1 3816 125 11 | 1 29 6165 78 12 | 29 1 6165 78 13 | 1 37 18965 80 14 | 37 1 18965 80 15 | 1 46 27490 43 16 | 46 1 27490 43 17 | 2 16 29156 154 18 | 16 2 29156 154 19 | 2 24 42929 127 20 | 24 2 42929 127 21 | 2 37 4810 139 22 | 37 2 4810 139 23 | 2 41 48800 153 24 | 41 2 48800 153 25 | 2 46 11545 44 26 | 46 2 11545 44 27 | 2 47 8521 98 28 | 47 2 8521 98 29 | 3 24 81940 144 30 | 24 3 81940 144 31 | 3 31 44644 125 32 | 31 3 44644 125 33 | 3 32 27850 75 34 | 32 3 27850 75 35 | 3 41 24049 70 36 | 41 3 24049 70 37 | 4 5 7813 147 38 | 5 4 7813 147 39 | 4 38 4194 62 40 | 38 4 4194 62 41 | 5 35 6354 37 42 | 35 5 6354 37 43 | 5 38 17929 116 44 | 38 5 17929 116 45 | 5 40 42824 39 46 | 40 5 42824 39 47 | 6 32 10485 142 48 | 32 6 10485 142 49 | 6 33 7229 49 50 | 33 6 7229 49 51 | 6 41 3562 159 52 | 41 6 3562 159 53 | 6 49 9332 50 54 | 49 6 9332 50 55 | 7 8 27586 78 56 | 8 7 27586 78 57 | 7 17 34516 107 58 | 17 7 34516 107 59 | 7 18 17082 59 60 | 18 7 17082 59 61 | 7 37 76212 114 62 | 37 7 76212 114 63 | 7 38 13793 147 64 | 38 7 13793 147 65 | 8 9 10553 122 66 | 9 8 10553 122 67 | 8 18 23656 154 68 | 18 8 23656 154 69 | 8 37 14506 87 70 | 37 8 14506 87 71 | 8 42 17986 126 72 | 42 8 17986 126 73 | 8 47 27365 42 74 | 47 8 27365 42 75 | 9 10 4149 70 76 | 10 9 4149 70 77 | 9 14 11057 136 78 | 14 9 11057 136 79 | 9 18 19045 119 80 | 18 9 19045 119 81 | 9 42 1445 81 82 | 42 9 1445 81 83 | 10 12 34385 111 84 | 12 10 34385 111 85 | 10 14 8420 43 86 | 14 10 8420 43 87 | 10 20 27121 132 88 | 20 10 27121 132 89 | 10 33 18989 158 90 | 33 10 18989 158 91 | 10 42 3200 84 92 | 42 10 3200 84 93 | 11 12 16505 103 94 | 12 11 16505 103 95 | 11 20 4597 127 96 | 20 11 4597 127 97 | 11 26 19490 63 98 | 26 11 19490 63 99 | 11 39 3385 100 100 | 39 11 3385 100 101 | 11 44 4409 121 102 | 44 11 4409 121 103 | 12 20 19508 148 104 | 20 12 19508 148 105 | 12 26 35725 47 106 | 26 12 35725 47 107 | 12 33 23796 70 108 | 33 12 23796 70 109 | 12 45 21060 56 110 | 45 12 21060 56 111 | 12 49 4381 159 112 | 49 12 4381 159 113 | 13 20 2105 40 114 | 20 13 2105 40 115 | 13 22 7578 98 116 | 22 13 7578 98 117 | 13 28 1537 62 118 | 28 13 1537 62 119 | 13 39 637 145 120 | 39 13 637 145 121 | 13 44 3229 152 122 | 44 13 3229 152 123 | 14 15 22226 72 124 | 15 14 22226 72 125 | 14 18 3074 118 126 | 18 14 3074 118 127 | 14 20 32009 137 128 | 20 14 32009 137 129 | 14 35 23850 151 130 | 35 14 23850 151 131 | 15 20 17341 57 132 | 20 15 17341 57 133 | 15 22 1576 107 134 | 22 15 1576 107 135 | 15 28 13025 103 136 | 28 15 13025 103 137 | 15 35 5096 112 138 | 35 15 5096 112 139 | 16 24 17125 43 140 | 24 16 17125 43 141 | 16 34 3281 153 142 | 34 16 3281 153 143 | 16 46 14285 83 144 | 46 16 14285 83 145 | 16 50 22810 148 146 | 50 16 22810 148 147 | 17 25 12365 133 148 | 25 17 12365 133 149 | 17 29 2066 93 150 | 29 17 2066 93 151 | 18 35 20564 151 152 | 35 18 20564 151 153 | 18 38 22385 63 154 | 38 18 22385 63 155 | 19 24 30465 110 156 | 24 19 30465 110 157 | 19 30 6597 144 158 | 30 19 6597 144 159 | 19 43 2993 98 160 | 43 19 2993 98 161 | 19 48 6530 72 162 | 48 19 6530 72 163 | 20 28 314 99 164 | 28 20 314 99 165 | 20 39 4226 130 166 | 39 20 4226 130 167 | 21 23 12322 129 168 | 23 21 12322 129 169 | 21 50 29988 63 170 | 50 21 29988 63 171 | 22 28 8653 126 172 | 28 22 8653 126 173 | 22 35 11600 72 174 | 35 22 11600 72 175 | 22 40 11050 136 176 | 40 22 11050 136 177 | 22 44 15205 45 178 | 44 22 15205 45 179 | 23 34 39005 48 180 | 34 23 39005 48 181 | 23 50 5098 158 182 | 50 23 5098 158 183 | 24 27 49733 67 184 | 27 24 49733 67 185 | 24 34 18698 123 186 | 34 24 18698 123 187 | 24 43 43136 149 188 | 43 24 43136 149 189 | 24 48 31025 134 190 | 48 24 31025 134 191 | 25 29 4329 69 192 | 29 25 4329 69 193 | 25 46 28594 39 194 | 46 25 28594 39 195 | 26 36 22250 141 196 | 36 26 22250 141 197 | 26 40 78728 108 198 | 40 26 78728 108 199 | 26 44 25681 86 200 | 44 26 25681 86 201 | 26 45 35545 96 202 | 45 26 35545 96 203 | 27 30 1217 93 204 | 30 27 1217 93 205 | 27 43 405 97 206 | 43 27 405 97 207 | 30 43 1640 48 208 | 43 30 1640 48 209 | 30 48 22445 140 210 | 48 30 22445 140 211 | 31 32 26594 39 212 | 32 31 26594 39 213 | 31 45 38666 42 214 | 45 31 38666 42 215 | 32 41 24949 106 216 | 41 32 24949 106 217 | 32 45 13520 53 218 | 45 32 13520 53 219 | 32 49 18185 48 220 | 49 32 18185 48 221 | 33 41 5725 110 222 | 41 33 5725 110 223 | 33 42 13693 48 224 | 42 33 13693 48 225 | 33 47 18932 158 226 | 47 33 18932 158 227 | 33 49 8737 113 228 | 49 33 8737 113 229 | 34 48 49993 156 230 | 48 34 49993 156 231 | 34 50 15977 90 232 | 50 34 15977 90 233 | 35 38 24733 140 234 | 38 35 24733 140 235 | 35 40 30050 150 236 | 40 35 30050 150 237 | 36 45 27785 144 238 | 45 36 27785 144 239 | 37 46 12785 68 240 | 46 37 12785 68 241 | 37 47 12937 108 242 | 47 37 12937 108 243 | 39 44 1010 93 244 | 44 39 1010 93 245 | 40 44 17525 152 246 | 44 40 17525 152 247 | 41 47 20353 86 248 | 47 41 20353 86 249 | 42 47 15773 49 250 | 47 42 15773 49 251 | 45 49 26377 122 252 | 49 45 26377 122 253 | 46 50 42125 156 254 | 50 46 42125 156 255 | 1 3 8 256 | 1 19 5 257 | 1 21 4 258 | 1 28 7 259 | 1 35 9 260 | 1 36 8 261 | 1 38 7 262 | 1 40 7 263 | 1 43 9 264 | 1 45 8 265 | 1 46 7 266 | 2 4 7 267 | 2 6 7 268 | 2 7 4 269 | 2 19 6 270 | 2 25 8 271 | 2 29 5 272 | 3 2 9 273 | 3 31 7 274 | 3 37 5 275 | 3 43 8 276 | 3 47 7 277 | 4 3 6 278 | 4 19 6 279 | 4 27 9 280 | 4 32 7 281 | 4 34 9 282 | 4 36 5 283 | 4 49 7 284 | 5 11 4 285 | 5 14 4 286 | 5 21 7 287 | 5 26 7 288 | 5 28 7 289 | 5 46 9 290 | 6 17 7 291 | 6 42 6 292 | 7 1 6 293 | 7 13 9 294 | 7 16 9 295 | 7 25 9 296 | 7 39 5 297 | 7 40 4 298 | 7 48 8 299 | 8 44 7 300 | 8 46 5 301 | 9 3 5 302 | 9 25 4 303 | 9 32 9 304 | 10 6 9 305 | 10 9 6 306 | 10 14 5 307 | 10 16 7 308 | 10 37 6 309 | 10 45 5 310 | 10 49 7 311 | 11 22 8 312 | 11 40 6 313 | 11 41 6 314 | 12 2 4 315 | 12 8 5 316 | 12 14 8 317 | 12 19 5 318 | 12 23 4 319 | 12 26 4 320 | 12 28 7 321 | 12 47 6 322 | 13 7 7 323 | 13 41 9 324 | 14 18 6 325 | 14 20 6 326 | 14 21 5 327 | 14 30 6 328 | 14 47 5 329 | 15 3 6 330 | 15 4 6 331 | 15 11 9 332 | 15 19 6 333 | 15 22 7 334 | 15 28 8 335 | 15 30 9 336 | 15 36 7 337 | 15 41 5 338 | 16 9 6 339 | 16 11 4 340 | 16 12 6 341 | 16 19 6 342 | 16 30 6 343 | 16 33 9 344 | 16 50 8 345 | 17 6 4 346 | 17 7 5 347 | 17 16 6 348 | 18 33 5 349 | 18 39 6 350 | 19 2 9 351 | 19 14 7 352 | 19 16 8 353 | 19 18 4 354 | 19 26 5 355 | 19 29 4 356 | 19 31 7 357 | 19 34 8 358 | 19 37 5 359 | 20 17 8 360 | 20 33 9 361 | 20 40 5 362 | 20 48 8 363 | 21 3 7 364 | 21 19 9 365 | 22 14 7 366 | 22 29 8 367 | 22 31 6 368 | 22 32 8 369 | 22 37 9 370 | 23 4 9 371 | 23 7 9 372 | 23 11 7 373 | 23 13 4 374 | 23 27 5 375 | 23 28 6 376 | 23 42 9 377 | 23 43 9 378 | 23 48 4 379 | 23 50 9 380 | 24 7 6 381 | 24 13 4 382 | 24 31 9 383 | 24 36 7 384 | 24 37 9 385 | 24 38 9 386 | 24 39 4 387 | 25 1 6 388 | 25 5 8 389 | 25 19 6 390 | 25 36 6 391 | 25 37 6 392 | 25 39 7 393 | 25 45 6 394 | 26 16 8 395 | 26 21 6 396 | 26 31 9 397 | 27 2 7 398 | 27 17 9 399 | 27 42 9 400 | 28 2 7 401 | 28 20 8 402 | 28 23 8 403 | 28 33 5 404 | 28 37 6 405 | 28 49 9 406 | 29 22 9 407 | 29 28 8 408 | 29 31 4 409 | 29 49 8 410 | 30 2 8 411 | 30 9 4 412 | 30 14 8 413 | 30 33 4 414 | 30 35 8 415 | 30 37 9 416 | 31 29 5 417 | 31 34 7 418 | 31 43 5 419 | 31 44 7 420 | 31 50 8 421 | 32 6 5 422 | 32 13 8 423 | 32 14 5 424 | 32 18 8 425 | 32 23 7 426 | 32 26 6 427 | 32 43 6 428 | 33 6 5 429 | 33 27 9 430 | 33 28 6 431 | 33 47 8 432 | 34 23 7 433 | 34 25 5 434 | 34 28 5 435 | 34 30 8 436 | 35 1 7 437 | 35 9 4 438 | 35 11 6 439 | 35 12 7 440 | 35 13 7 441 | 35 23 6 442 | 35 25 9 443 | 35 40 6 444 | 35 46 8 445 | 35 48 8 446 | 36 29 7 447 | 36 35 9 448 | 36 38 5 449 | 36 39 4 450 | 36 46 4 451 | 37 3 6 452 | 37 7 6 453 | 37 10 9 454 | 37 15 9 455 | 37 23 9 456 | 37 24 4 457 | 37 36 6 458 | 37 49 8 459 | 38 5 7 460 | 38 8 9 461 | 38 26 9 462 | 39 10 4 463 | 39 26 8 464 | 39 34 7 465 | 39 36 4 466 | 40 4 6 467 | 40 13 6 468 | 40 31 6 469 | 41 1 4 470 | 41 23 8 471 | 41 33 4 472 | 41 43 9 473 | 42 32 5 474 | 42 37 8 475 | 42 41 7 476 | 42 48 8 477 | 43 5 4 478 | 43 6 4 479 | 43 19 4 480 | 43 20 8 481 | 43 35 4 482 | 43 48 9 483 | 43 49 5 484 | 44 10 4 485 | 44 17 7 486 | 44 19 5 487 | 44 20 4 488 | 45 21 8 489 | 45 28 4 490 | 45 42 4 491 | 45 43 4 492 | 46 2 7 493 | 46 6 8 494 | 46 19 6 495 | 46 21 7 496 | 46 38 6 497 | 46 42 9 498 | 46 44 7 499 | 46 47 4 500 | 47 3 8 501 | 47 32 9 502 | 47 34 7 503 | 48 4 4 504 | 48 9 8 505 | 48 22 9 506 | 48 26 4 507 | 48 27 4 508 | 48 50 8 509 | 49 5 5 510 | 49 16 9 511 | 49 17 8 512 | 49 19 9 513 | 49 38 6 514 | 49 45 6 515 | 49 47 4 516 | 49 48 5 517 | 50 13 4 518 | 50 22 4 519 | 50 25 5 520 | 50 36 7 521 | 50 40 4 522 | -------------------------------------------------------------------------------- /Column_Generation_Algorithm/solution.lp: -------------------------------------------------------------------------------- 1 | \ENCODING=ISO-8859-1 2 | \Problem name: IloCplex 3 | 4 | Minimize 5 | obj: 1000000 p_1 + 59447 p_2 + 1000000 p_3 + 84259 p_4 + 1000000 p_5 6 | + 39115 p_6 + 1000000 p_7 + 102770 p_8 + 1000000 p_9 + 100661 p_10 7 | + 1000000 p_11 + 32198 p_12 + 1000000 p_13 + 6253 p_14 + 1000000 p_15 8 | + 33730 p_16 + 1000000 p_17 + 82054 p_18 + 1000000 p_19 + 8440 p_20 9 | + 1000000 p_21 + 111410 p_22 + 1000000 p_23 + 77049 p_24 + 1000000 p_25 10 | + 68132 p_26 + 1000000 p_27 + 66512 p_28 + 1000000 p_29 + 79873 p_30 11 | + 1000000 p_31 + 48120 p_32 + 1000000 p_33 + 14555 p_34 + 1000000 p_35 12 | + 9490 p_36 + 1000000 p_37 + 7754 p_38 + 1000000 p_39 + 58956 p_40 13 | + 1000000 p_41 + 15740 p_42 + 1000000 p_43 + 34642 p_44 + 1000000 p_45 14 | + 13899 p_46 + 1000000 p_47 + 58356 p_48 + 1000000 p_49 + 54370 p_50 15 | + 1000000 p_51 + 29870 p_52 + 1000000 p_53 + 59976 p_54 + 1000000 p_55 16 | + 68847 p_56 + 1000000 p_57 + 1780 p_58 + 1000000 p_59 + 75626 p_60 17 | + 1000000 p_61 + 55447 p_62 + 1000000 p_63 + 72425 p_64 + 1000000 p_65 18 | + 55613 p_66 + 1000000 p_67 + 17997 p_68 + 1000000 p_69 + 92003 p_70 19 | + 1000000 p_71 + 106219 p_72 + 1000000 p_73 + 103551 p_74 + 1000000 p_75 20 | + 79051 p_76 + 1000000 p_77 + 66723 p_78 + 1000000 p_79 + 107069 p_80 21 | + 1000000 p_81 + 7754 p_82 + 1000000 p_83 + 57176 p_84 + 1000000 p_85 22 | + 72316 p_86 + 1000000 p_87 + 63988 p_88 + 1000000 p_89 + 43216 p_90 23 | + 1000000 p_91 + 58866 p_92 + 1000000 p_93 + 74294 p_94 + 1000000 p_95 24 | + 61811 p_96 + 1000000 p_97 + 30058 p_98 + 1000000 p_99 + 63623 p_100 25 | + 1000000 p_101 + 87875 p_102 + 1000000 p_103 + 9169 p_104 26 | + 1000000 p_105 + 68132 p_106 + 1000000 p_107 + 92003 p_108 27 | + 1000000 p_109 + 72316 p_110 + 1000000 p_111 + 89434 p_112 28 | + 1000000 p_113 + 79298 p_114 + 1000000 p_115 + 25945 p_116 29 | + 1000000 p_117 + 34718 p_118 + 1000000 p_119 + 58830 p_120 30 | + 1000000 p_121 + 65345 p_122 + 1000000 p_123 + 104330 p_124 31 | + 1000000 p_125 + 70383 p_126 + 1000000 p_127 + 82947 p_128 32 | + 1000000 p_129 + 39396 p_130 + 1000000 p_131 + 114027 p_132 33 | + 1000000 p_133 + 47106 p_134 + 1000000 p_135 + 106219 p_136 34 | + 1000000 p_137 + 84597 p_138 + 1000000 p_139 + 63502 p_140 35 | + 1000000 p_141 + 84636 p_142 + 1000000 p_143 + 83140 p_144 36 | + 1000000 p_145 + 82418 p_146 + 1000000 p_147 + 31224 p_148 37 | + 1000000 p_149 + 93713 p_150 + 1000000 p_151 + 106495 p_152 38 | + 1000000 p_153 + 14130 p_154 + 1000000 p_155 + 119405 p_156 39 | + 1000000 p_157 + 79544 p_158 + 1000000 p_159 + 66512 p_160 40 | + 1000000 p_161 + 39861 p_162 + 1000000 p_163 + 91492 p_164 41 | + 1000000 p_165 + 93112 p_166 + 1000000 p_167 + 14366 p_168 42 | + 1000000 p_169 + 45842 p_170 + 1000000 p_171 + 18770 p_172 43 | + 1000000 p_173 + 76770 p_174 + 1000000 p_175 + 44590 p_176 44 | + 1000000 p_177 + 113787 p_178 + 1000000 p_179 + 106495 p_180 45 | + 1000000 p_181 + 53642 p_182 + 1000000 p_183 + 5065 p_184 + 84955 p_185 46 | + 38046 p_186 + 83136 p_187 + 112492 p_188 + 84363 p_189 + 75194 p_190 47 | + 76814 p_191 + 104887 p_192 + 79524 p_193 + 19853 p_194 + 27022 p_195 48 | + 34926 p_196 + 73274 p_197 + 38956 p_198 + 73563 p_199 + 80342 p_200 49 | + 61029 p_201 + 93159 p_202 + 107375 p_203 + 108077 p_204 + 83367 p_205 50 | + 123619 p_206 + 13184 p_207 + 63582 p_208 + 69319 p_209 + 92209 p_210 51 | + 84280 p_211 + 93159 p_212 + 63164 p_213 + 105412 p_214 + 90099 p_215 52 | + 102663 p_216 + 115183 p_217 + 107375 p_218 + 92080 p_219 + 86002 p_220 53 | + 84222 p_221 + 88866 p_222 + 121535 p_223 + 81674 p_224 + 85900 p_225 54 | + 92574 p_226 + 94194 p_227 + 50176 p_228 + 19852 p_229 + 82068 p_230 55 | + 53676 p_231 + 111793 p_232 + 74002 p_233 + 89907 p_234 + 89293 p_235 56 | + 56697 p_236 + 120352 p_237 + 104999 p_238 + 93449 p_239 + 84280 p_240 57 | + 85900 p_241 + 81996 p_242 + 20772 p_243 + 13184 p_244 + 70238 p_245 58 | + 36754 p_246 + 29061 p_247 + 92576 p_248 + 54118 p_249 + 79211 p_250 59 | + 65959 p_251 + 127379 p_252 + 124651 p_253 + 83290 p_254 + 78632 p_255 60 | + 81113 p_256 + 49360 p_257 + 73069 p_258 + 85714 p_259 + 86274 p_260 61 | + 93772 p_261 + 37970 p_262 + 63262 p_263 + 69885 p_264 + 108762 p_265 62 | + 87665 p_266 + 69856 p_267 + 61064 p_268 + 102179 p_269 + 68220 p_270 63 | + 86596 p_271 + 84816 p_272 + 33008 p_273 + 111793 p_274 + 84094 p_275 64 | + 93168 p_276 + 94788 p_277 + 16150 p_278 + 100250 p_279 + 68838 p_280 65 | + 133089 p_281 + 129975 p_282 + 79300 p_283 + 89387 p_284 + 102337 p_285 66 | + 86392 p_286 + 8584 p_287 + 115748 p_288 + 101747 p_289 + 92578 p_290 67 | + 94198 p_291 + 78134 p_292 + 68507 p_293 + 112337 p_294 + 71134 p_295 68 | + 86274 p_296 + 75194 p_297 + 108668 p_298 + 91042 p_299 + 89262 p_300 69 | + 76814 p_301 + 97614 p_302 + 99234 p_303 + 23108 p_304 + 85171 p_305 70 | + 53418 p_306 + 59668 p_307 71 | Subject To 72 | c1: p_1 + p_2 + p_234 = 4 73 | c2: p_3 + p_4 + p_185 + p_235 + p_284 = 10 74 | c3: p_5 + p_6 + p_236 = 4 75 | c4: p_7 + p_8 + p_237 = 4 76 | c5: p_9 + p_10 + p_238 + p_285 = 9 77 | c6: p_11 + p_12 = 8 78 | c7: p_13 + p_14 = 9 79 | c8: p_15 + p_16 + p_186 = 9 80 | c9: p_17 + p_18 + p_187 + p_286 = 4 81 | c10: p_19 + p_20 + p_287 = 10 82 | c11: p_21 + p_22 + p_188 + p_288 = 9 83 | c12: p_23 + p_24 + p_189 + p_239 + p_289 = 8 84 | c13: p_25 + p_26 + p_190 + p_240 + p_290 = 10 85 | c14: p_27 + p_28 + p_191 + p_241 + p_291 = 11 86 | c15: p_29 + p_30 + p_192 + p_305 = 9 87 | c16: p_31 + p_32 + p_193 + p_242 + p_306 = 9 88 | c17: p_33 + p_34 + p_194 = 11 89 | c18: p_35 + p_36 + p_243 = 11 90 | c19: p_37 + p_38 + p_244 = 6 91 | c20: p_39 + p_40 + p_245 + p_292 = 7 92 | c21: p_41 + p_42 + p_195 + p_246 = 11 93 | c22: p_43 + p_44 + p_196 = 5 94 | c23: p_45 + p_46 + p_247 = 4 95 | c24: p_47 + p_48 = 4 96 | c25: p_49 + p_50 + p_197 + p_248 + p_307 = 8 97 | c26: p_51 + p_52 + p_198 + p_249 = 7 98 | c27: p_53 + p_54 = 4 99 | c28: p_55 + p_56 + p_199 = 4 100 | c29: p_57 + p_58 = 7 101 | c30: p_59 + p_60 + p_200 = 9 102 | c31: p_61 + p_62 + p_201 + p_250 = 6 103 | c32: p_63 + p_64 = 8 104 | c33: p_65 + p_66 + p_251 = 11 105 | c34: p_67 + p_68 = 9 106 | c35: p_69 + p_70 + p_202 = 4 107 | c36: p_71 + p_72 + p_203 = 7 108 | c37: p_73 + p_74 + p_204 + p_252 = 11 109 | c38: p_75 + p_76 + p_205 = 6 110 | c39: p_77 + p_78 + p_293 = 5 111 | c40: p_79 + p_80 + p_206 + p_253 + p_294 = 11 112 | c41: p_81 + p_82 + p_207 = 7 113 | c42: p_83 + p_84 + p_295 = 8 114 | c43: p_85 + p_86 + p_296 = 6 115 | c44: p_87 + p_88 + p_254 = 6 116 | c45: p_89 + p_90 = 6 117 | c46: p_91 + p_92 + p_208 = 10 118 | c47: p_93 + p_94 + p_255 = 6 119 | c48: p_95 + p_96 + p_256 = 6 120 | c49: p_97 + p_98 + p_257 = 10 121 | c50: p_99 + p_100 + p_209 + p_258 = 8 122 | c51: p_101 + p_102 + p_210 = 7 123 | c52: p_103 + p_104 = 8 124 | c53: p_105 + p_106 + p_211 + p_259 + p_297 = 7 125 | c54: p_107 + p_108 + p_212 = 9 126 | c55: p_109 + p_110 + p_260 = 9 127 | c56: p_111 + p_112 + p_261 = 8 128 | c57: p_113 + p_114 = 11 129 | c58: p_115 + p_116 = 8 130 | c59: p_117 + p_118 + p_262 = 10 131 | c60: p_119 + p_120 + p_213 + p_263 = 4 132 | c61: p_121 + p_122 + p_264 = 5 133 | c62: p_123 + p_124 + p_214 + p_265 + p_298 = 5 134 | c63: p_125 + p_126 + p_215 = 4 135 | c64: p_127 + p_128 + p_216 + p_266 = 8 136 | c65: p_129 + p_130 + p_267 = 4 137 | c66: p_131 + p_132 + p_217 = 8 138 | c67: p_133 + p_134 + p_268 = 11 139 | c68: p_135 + p_136 + p_218 = 10 140 | c69: p_137 + p_138 + p_269 = 5 141 | c70: p_139 + p_140 + p_219 + p_270 = 4 142 | c71: p_141 + p_142 + p_220 + p_271 + p_299 = 8 143 | c72: p_143 + p_144 + p_221 + p_272 + p_300 = 11 144 | c73: p_145 + p_146 + p_222 = 7 145 | c74: p_147 + p_148 + p_273 = 7 146 | c75: p_149 + p_150 = 9 147 | c76: p_151 + p_152 + p_274 = 11 148 | c77: p_153 + p_154 = 6 149 | c78: p_155 + p_156 + p_223 = 4 150 | c79: p_157 + p_158 + p_224 = 11 151 | c80: p_159 + p_160 + p_225 + p_275 + p_301 = 5 152 | c81: p_161 + p_162 = 11 153 | c82: p_163 + p_164 + p_226 + p_276 + p_302 = 11 154 | c83: p_165 + p_166 + p_227 + p_277 + p_303 = 9 155 | c84: p_167 + p_168 + p_278 = 6 156 | c85: p_169 + p_170 + p_228 = 11 157 | c86: p_171 + p_172 + p_229 + p_304 = 9 158 | c87: p_173 + p_174 + p_230 + p_279 = 5 159 | c88: p_175 + p_176 + p_231 + p_280 = 6 160 | c89: p_177 + p_178 + p_281 = 10 161 | c90: p_179 + p_180 + p_232 + p_282 = 8 162 | c91: p_181 + p_182 + p_233 + p_283 = 7 163 | c92: p_183 + p_184 = 11 164 | c93: p_2 + p_150 + s_1 + p_185 + p_234 + p_235 + p_284 = 48 165 | c94: s_2 = 115 166 | c95: p_4 + p_6 + p_8 + p_80 + p_88 + p_96 + p_98 + p_100 + p_106 + p_138 167 | + p_160 + p_178 + s_3 + p_193 + p_197 + p_204 = 65 168 | c96: p_24 + p_26 + p_28 + p_114 + p_156 + p_158 + s_4 + p_223 + p_224 = 86 169 | c97: s_5 = 35 170 | c98: p_10 + s_6 + p_238 + p_285 = 116 171 | c99: s_7 = 42 172 | c100: s_8 = 25 173 | c101: p_6 + p_8 + s_9 + p_236 + p_237 = 114 174 | c102: p_12 + p_14 + p_138 + p_152 + s_10 + p_215 + p_216 + p_219 + p_269 175 | + p_274 = 80 176 | c103: s_11 + p_192 = 70 177 | c104: p_114 + p_150 + s_12 + p_222 + p_223 + p_224 + p_242 = 86 178 | c105: p_8 + p_102 + p_180 + s_13 + p_210 + p_232 + p_237 + p_282 = 105 179 | c106: s_14 = 109 180 | c107: s_15 = 57 181 | c108: s_16 = 97 182 | c109: p_16 + p_18 + p_20 + p_22 + s_17 + p_186 + p_187 + p_188 + p_286 + p_288 183 | = 102 184 | c110: s_18 + p_287 = 63 185 | c111: s_19 = 103 186 | c112: s_20 = 85 187 | c113: s_21 = 43 188 | c114: p_154 + s_22 + p_189 + p_190 + p_191 + p_195 + p_206 + p_207 = 107 189 | c115: s_23 + p_239 + p_240 + p_241 + p_243 + p_244 + p_245 + p_262 + p_266 190 | + p_270 = 33 191 | c116: s_24 = 95 192 | c117: s_25 = 38 193 | c118: p_52 + p_76 + s_26 + p_198 + p_205 + p_210 + p_213 + p_228 + p_249 = 59 194 | c119: s_27 = 82 195 | c120: p_24 + p_26 + p_28 + p_156 + p_158 + s_28 + p_289 + p_290 + p_291 = 72 196 | c121: p_30 + p_32 + p_34 + p_42 + p_50 + p_52 + p_62 + p_174 + p_176 + p_180 197 | + s_29 + p_294 + p_297 + p_301 = 49 198 | c122: p_18 + p_22 + p_40 + p_84 + p_86 + p_124 + p_142 + p_144 + p_152 + p_164 199 | + p_166 + p_172 + s_30 + p_187 + p_188 + p_189 + p_190 + p_191 + p_193 200 | + p_214 + p_220 + p_221 + p_226 + p_227 + p_229 + p_233 + p_239 + p_240 201 | + p_241 + p_245 + p_265 + p_271 + p_272 + p_274 + p_276 + p_277 + p_283 202 | = 111 203 | c123: p_10 + p_46 + p_94 + p_110 + p_112 + p_134 + s_31 + p_185 + p_195 204 | + p_198 + p_206 + p_211 + p_225 + p_231 + p_284 + p_285 = 84 205 | c124: s_32 = 92 206 | c125: s_33 + p_192 + p_194 + p_201 + p_209 + p_230 + p_232 + p_242 + p_305 207 | + p_306 + p_307 = 74 208 | c126: p_16 + p_52 + p_76 + p_176 + s_34 + p_243 + p_244 + p_245 + p_297 209 | + p_301 = 107 210 | c127: p_36 + p_40 + p_152 + s_35 + p_189 + p_190 + p_191 + p_233 = 49 211 | c128: p_4 + p_38 + p_118 + p_128 + p_140 + s_36 + p_216 + p_219 = 26 212 | c129: p_30 + p_32 + p_34 + p_50 + p_62 + p_74 + p_102 + p_120 + p_146 + p_170 213 | + p_174 + p_180 + s_37 + p_263 + p_292 = 101 214 | c130: p_2 + p_10 + p_42 + p_46 + p_50 + p_52 + p_62 + p_66 + p_94 + p_110 215 | + p_112 + p_130 + p_134 + p_174 + p_176 + p_180 + s_38 + p_185 + p_195 216 | + p_198 + p_201 + p_206 + p_209 + p_211 + p_225 + p_230 + p_231 + p_232 217 | + p_284 + p_285 + p_294 + p_297 + p_301 + p_307 = 111 218 | c131: p_18 + p_22 + p_40 + p_48 + p_54 + p_84 + p_86 + p_124 + p_164 + p_166 219 | + s_39 + p_187 + p_188 + p_189 + p_190 + p_191 + p_193 + p_197 + p_214 220 | + p_226 + p_227 + p_233 + p_239 + p_240 + p_241 + p_245 + p_248 + p_265 221 | + p_276 + p_277 + p_283 + p_286 + p_288 + p_295 + p_296 + p_298 + p_302 222 | + p_303 = 96 223 | c132: p_144 + s_40 + p_196 + p_220 + p_221 + p_271 + p_272 + p_299 + p_300 224 | = 113 225 | c133: s_41 + p_234 + p_235 + p_238 + p_246 + p_247 + p_249 + p_255 + p_260 226 | + p_261 + p_267 + p_268 + p_280 = 71 227 | c134: p_44 + p_142 + p_152 + s_42 + p_274 = 118 228 | c135: s_43 + p_250 + p_279 + p_282 = 79 229 | c136: s_44 = 99 230 | c137: p_58 + p_108 + p_136 + s_45 + p_199 + p_200 + p_201 + p_250 = 106 231 | c138: p_56 + p_60 + p_62 + p_70 + p_72 + p_132 + s_46 = 26 232 | c139: s_47 + p_186 + p_195 + p_198 + p_205 + p_206 + p_207 + p_210 + p_211 233 | + p_213 + p_225 + p_228 + p_231 + p_249 + p_280 = 33 234 | c140: p_18 + p_22 + p_84 + p_86 + p_124 + p_142 + p_144 + p_164 + p_166 235 | + p_172 + s_48 + p_187 + p_188 + p_214 + p_220 + p_221 + p_226 + p_227 236 | + p_229 + p_234 + p_239 + p_240 + p_241 + p_243 + p_245 + p_251 + p_265 237 | + p_267 + p_271 + p_272 + p_276 + p_277 = 84 238 | c141: p_16 + p_74 + p_76 + p_82 + p_102 + p_120 + p_146 + p_170 + s_49 + p_246 239 | + p_263 = 26 240 | c142: p_4 + p_10 + p_38 + p_94 + p_110 + p_112 + p_128 + p_134 + p_140 + s_50 241 | + p_185 + p_216 + p_219 + p_244 + p_284 + p_285 = 102 242 | c143: s_51 + p_266 + p_270 = 46 243 | c144: s_52 = 97 244 | c145: s_53 = 99 245 | c146: p_66 + p_68 + p_70 + p_72 + s_54 + p_202 + p_203 + p_204 + p_252 = 84 246 | c147: p_64 + p_74 + p_76 + p_78 + s_55 + p_205 + p_251 + p_293 = 99 247 | c148: s_56 = 35 248 | c149: s_57 = 100 249 | c150: p_80 + s_58 + p_206 + p_253 + p_294 = 99 250 | c151: s_59 = 95 251 | c152: p_16 + p_18 + p_22 + p_74 + p_76 + p_82 + p_84 + p_86 + p_102 + p_120 252 | + p_124 + p_142 + p_144 + p_146 + p_164 + p_166 + p_170 + p_172 + s_60 253 | + p_207 + p_263 + p_265 + p_271 + p_272 + p_276 + p_277 = 102 254 | c153: s_61 + p_284 + p_285 = 28 255 | c154: p_4 + p_10 + p_94 + p_112 + p_128 + p_140 + s_62 + p_185 + p_216 + p_219 256 | + p_295 + p_296 = 31 257 | c155: p_56 + p_88 + p_96 + p_98 + p_100 + p_178 + s_63 + p_193 + p_197 + p_199 258 | + p_204 + p_233 + p_283 = 48 259 | c156: p_2 + p_10 + p_90 + p_94 + p_110 + p_112 + s_64 + p_185 + p_206 + p_209 260 | + p_211 + p_225 + p_234 + p_235 + p_238 + p_255 + p_260 + p_261 + p_284 261 | + p_285 + p_294 + p_297 + p_301 = 96 262 | c157: s_65 = 100 263 | c158: p_22 + p_48 + p_54 + p_60 + p_70 + p_72 + p_86 + p_124 + p_132 + p_164 264 | + p_166 + s_66 + p_188 + p_189 + p_190 + p_191 + p_200 + p_202 + p_203 265 | + p_214 + p_217 + p_226 + p_227 + p_239 + p_240 + p_241 + p_265 + p_276 266 | + p_277 + p_288 + p_289 + p_290 + p_291 + p_296 + p_298 + p_302 + p_303 267 | = 99 268 | c159: s_67 = 79 269 | c160: s_68 + p_248 + p_252 + p_254 + p_256 + p_257 + p_281 = 46 270 | c161: p_92 + p_108 + p_136 + s_69 + p_208 + p_212 + p_218 = 95 271 | c162: s_70 + p_258 = 61 272 | c163: p_64 + s_71 = 102 273 | c164: p_4 + p_10 + p_20 + p_78 + s_72 + p_185 + p_235 + p_238 = 29 274 | c165: s_73 + p_293 = 75 275 | c166: p_16 + p_18 + p_22 + p_102 + p_120 + p_122 + p_124 + p_142 + p_144 276 | + p_146 + p_148 + p_164 + p_166 + p_168 + s_74 + p_186 + p_187 + p_188 277 | + p_210 + p_213 + p_214 + p_220 + p_221 + p_226 + p_227 + p_264 + p_273 278 | + p_278 + p_286 + p_288 + p_298 + p_299 + p_300 + p_302 + p_303 = 74 279 | c167: s_75 = 115 280 | c168: p_104 + s_76 + p_189 + p_239 + p_289 = 116 281 | c169: p_10 + p_108 + p_110 + p_112 + p_136 + s_77 + p_206 + p_211 + p_212 282 | + p_218 + p_225 + p_238 + p_260 + p_261 + p_285 + p_294 + p_297 + p_301 283 | = 99 284 | c170: p_22 + p_72 + p_124 + p_132 + p_156 + p_162 + s_78 + p_188 + p_203 285 | + p_214 + p_217 + p_223 + p_265 + p_288 + p_298 = 66 286 | c171: p_54 + p_60 + p_80 + p_106 + p_138 + p_166 + s_79 + p_191 + p_200 287 | + p_227 + p_241 + p_253 + p_259 + p_269 + p_277 + p_291 + p_303 = 102 288 | c172: p_102 + p_114 + p_120 + p_170 + p_174 + p_180 + s_80 + p_192 + p_210 289 | + p_213 + p_222 + p_223 + p_224 + p_228 + p_230 + p_232 + p_242 + p_263 290 | + p_279 + p_282 = 80 291 | c173: p_12 + p_116 + s_81 + p_262 = 117 292 | c174: p_118 + p_152 + s_82 + p_215 + p_216 + p_219 + p_274 = 36 293 | c175: s_83 = 63 294 | c176: p_120 + p_122 + p_124 + p_142 + p_144 + p_146 + p_148 + p_164 + p_166 295 | + p_168 + s_84 + p_213 + p_214 + p_220 + p_221 + p_226 + p_227 + p_298 296 | = 29 297 | c177: p_10 + p_78 + s_85 + p_238 + p_263 + p_264 + p_265 = 34 298 | c178: s_86 = 42 299 | c179: s_87 + p_215 + p_216 = 70 300 | c180: p_126 + p_128 + s_88 + p_266 = 55 301 | c181: s_89 = 76 302 | c182: s_90 = 119 303 | c183: p_66 + p_130 + p_134 + s_91 + p_201 + p_250 + p_267 + p_268 = 113 304 | c184: p_68 + p_70 + p_72 + p_132 + s_92 + p_196 + p_208 + p_220 + p_271 305 | + p_299 = 106 306 | c185: p_108 + p_136 + s_93 + p_212 + p_218 = 84 307 | c186: s_94 = 95 308 | c187: s_95 + p_199 + p_200 + p_202 + p_203 + p_204 + p_217 + p_252 = 45 309 | c188: s_96 = 25 310 | c189: p_132 + p_156 + p_162 + s_97 + p_217 + p_223 = 99 311 | c190: s_98 = 79 312 | c191: p_80 + p_136 + p_138 + s_99 + p_206 + p_218 + p_253 + p_269 + p_294 313 | = 66 314 | c192: p_24 + p_26 + p_28 + p_114 + p_150 + p_156 + p_158 + p_182 + s_100 315 | + p_223 + p_224 = 65 316 | c193: p_8 + p_88 + p_138 + s_101 + p_219 + p_237 + p_254 + p_269 = 86 317 | c194: s_102 = 46 318 | c195: p_30 + p_96 + p_178 + s_103 + p_256 + p_281 + p_305 = 55 319 | c196: s_104 = 62 320 | c197: p_4 + p_80 + p_100 + p_106 + p_126 + p_128 + p_140 + p_160 + s_105 321 | + p_253 + p_259 + p_266 + p_270 + p_275 = 32 322 | c198: s_106 = 103 323 | c199: s_107 = 38 324 | c200: s_108 + p_222 = 35 325 | c201: p_142 + p_144 + p_146 + p_148 + s_109 + p_220 + p_221 + p_271 + p_272 326 | + p_273 + p_299 + p_300 = 113 327 | c202: p_150 + p_152 + s_110 + p_274 = 105 328 | c203: s_111 = 76 329 | c204: s_112 = 109 330 | c205: p_12 + p_116 + p_154 + p_156 + p_158 + s_113 + p_262 = 59 331 | c206: s_114 + p_210 + p_213 + p_222 + p_223 + p_224 + p_228 = 117 332 | c207: s_115 = 35 333 | c208: s_116 = 65 334 | c209: p_6 + p_8 + p_80 + p_106 + p_138 + p_160 + s_117 = 86 335 | c210: p_24 + p_114 + s_118 = 114 336 | c211: p_26 + p_156 + p_162 + s_119 + p_223 + p_225 + p_301 = 102 337 | c212: s_120 = 119 338 | c213: s_121 + p_236 + p_237 + p_253 + p_259 + p_269 + p_275 = 62 339 | c214: s_122 = 85 340 | c215: s_123 = 82 341 | c216: s_124 + p_263 + p_265 + p_271 + p_272 + p_276 + p_277 = 28 342 | c217: s_125 + p_264 + p_273 + p_278 + p_299 + p_300 + p_302 + p_303 = 75 343 | c218: p_142 + p_144 + p_146 + p_148 + p_164 + p_166 + p_168 + s_126 + p_220 344 | + p_221 + p_226 + p_227 + p_284 = 34 345 | c219: s_127 = 113 346 | c220: s_128 = 68 347 | c221: s_129 = 43 348 | c222: s_130 = 92 349 | c223: s_131 + p_286 + p_288 + p_295 + p_296 + p_298 + p_299 + p_300 + p_302 350 | + p_303 + p_304 = 71 351 | c224: s_132 + p_186 + p_187 + p_188 + p_205 + p_210 + p_213 + p_214 + p_220 352 | + p_221 + p_226 + p_227 + p_228 + p_229 + p_234 + p_246 + p_247 + p_249 353 | + p_251 + p_267 + p_280 = 46 354 | c225: p_122 + s_133 + p_264 = 99 355 | c226: p_16 + p_18 + p_22 + p_74 + p_76 + p_102 + p_120 + p_124 + p_142 + p_144 356 | + p_146 + p_164 + p_166 + p_170 + p_172 + s_134 + p_260 + p_268 = 31 357 | c227: p_4 + p_10 + p_64 + p_78 + p_94 + p_112 + p_140 + s_135 + p_185 + p_219 358 | + p_235 + p_238 + p_255 + p_261 + p_270 + p_293 = 74 359 | c228: s_136 = 95 360 | c229: s_137 = 68 361 | c230: p_62 + p_174 + p_176 + p_180 + s_138 + p_230 + p_231 + p_232 + p_279 362 | + p_280 + p_282 = 118 363 | c231: p_44 + p_92 + p_108 + p_136 + p_142 + s_139 = 26 364 | c232: p_56 + p_60 + p_70 + p_72 + p_132 + p_178 + s_140 + p_199 + p_200 365 | + p_202 + p_203 + p_204 + p_217 + p_252 + p_281 = 95 366 | c233: s_141 + p_208 + p_212 + p_218 = 45 367 | c234: s_142 = 57 368 | c235: p_106 + p_160 + s_143 + p_259 + p_266 + p_270 + p_275 = 72 369 | c236: s_144 + p_274 + p_283 = 74 370 | c237: p_4 + p_80 + p_118 + p_126 + p_128 + p_140 + p_152 + p_184 + s_145 371 | + p_215 + p_216 + p_219 + p_233 + p_253 = 101 372 | c238: s_146 = 79 373 | c239: s_147 + p_289 + p_290 + p_291 + p_292 = 61 374 | c240: p_102 + p_120 + p_170 + p_174 + p_180 + s_148 + p_192 + p_230 + p_232 375 | + p_242 + p_263 + p_279 + p_282 = 36 376 | c241: p_24 + p_26 + p_28 + p_30 + p_32 + p_50 + p_74 + p_146 + p_156 + p_158 377 | + p_182 + s_149 + p_305 + p_306 + p_307 = 32 378 | c242: s_150 = 65 379 | End 380 | -------------------------------------------------------------------------------- /Column_Generation_Algorithm/data/grid/grid5.dat: -------------------------------------------------------------------------------- 1 | grid5 2 | 225 3 | 840 4 | 100 5 | 1 2 91 193 6 | 1 16 97 340 7 | 2 1 95 159 8 | 2 3 82 195 9 | 2 17 92 207 10 | 3 2 85 409 11 | 3 4 95 472 12 | 3 18 97 346 13 | 4 3 93 232 14 | 4 5 83 199 15 | 4 19 85 249 16 | 5 4 99 198 17 | 5 6 87 167 18 | 5 20 80 184 19 | 6 5 85 539 20 | 6 7 98 368 21 | 6 21 88 311 22 | 7 6 93 499 23 | 7 8 84 481 24 | 7 22 85 280 25 | 8 7 81 406 26 | 8 9 96 214 27 | 8 23 96 340 28 | 9 8 88 338 29 | 9 10 87 251 30 | 9 24 98 442 31 | 10 9 84 266 32 | 10 11 97 475 33 | 10 25 100 325 34 | 11 10 83 339 35 | 11 12 99 273 36 | 11 26 94 470 37 | 12 11 88 209 38 | 12 13 86 454 39 | 12 27 96 360 40 | 13 12 83 357 41 | 13 14 98 433 42 | 13 28 85 507 43 | 14 13 93 289 44 | 14 15 86 324 45 | 14 29 93 357 46 | 15 14 94 438 47 | 15 30 82 321 48 | 16 1 96 439 49 | 16 17 91 495 50 | 16 31 88 207 51 | 17 2 92 434 52 | 17 16 98 376 53 | 17 18 83 306 54 | 17 32 82 389 55 | 18 3 88 529 56 | 18 17 94 313 57 | 18 19 96 239 58 | 18 33 94 251 59 | 19 4 80 338 60 | 19 18 94 338 61 | 19 20 86 284 62 | 19 34 100 546 63 | 20 5 100 348 64 | 20 19 94 353 65 | 20 21 82 199 66 | 20 35 89 508 67 | 21 6 98 453 68 | 21 20 88 226 69 | 21 22 100 462 70 | 21 36 89 301 71 | 22 7 81 441 72 | 22 21 92 153 73 | 22 23 98 327 74 | 22 37 92 384 75 | 23 8 92 241 76 | 23 22 92 188 77 | 23 24 96 431 78 | 23 38 94 260 79 | 24 9 99 431 80 | 24 23 97 526 81 | 24 25 97 335 82 | 24 39 92 460 83 | 25 10 89 518 84 | 25 24 95 266 85 | 25 26 82 428 86 | 25 40 84 246 87 | 26 11 89 319 88 | 26 25 99 250 89 | 26 27 96 202 90 | 26 41 81 469 91 | 27 12 94 336 92 | 27 26 94 519 93 | 27 28 95 312 94 | 27 42 80 462 95 | 28 13 81 447 96 | 28 27 95 359 97 | 28 29 94 427 98 | 28 43 95 431 99 | 29 14 81 428 100 | 29 28 88 295 101 | 29 30 81 293 102 | 29 44 94 194 103 | 30 15 80 411 104 | 30 29 98 395 105 | 30 45 94 423 106 | 31 16 80 540 107 | 31 32 86 394 108 | 31 46 95 251 109 | 32 17 82 206 110 | 32 31 98 472 111 | 32 33 85 523 112 | 32 47 81 197 113 | 33 18 95 278 114 | 33 32 86 189 115 | 33 34 91 440 116 | 33 48 93 321 117 | 34 19 87 539 118 | 34 33 96 276 119 | 34 35 99 230 120 | 34 49 99 449 121 | 35 20 89 249 122 | 35 34 98 159 123 | 35 36 93 468 124 | 35 50 87 438 125 | 36 21 91 407 126 | 36 35 83 294 127 | 36 37 85 277 128 | 36 51 96 375 129 | 37 22 97 418 130 | 37 36 96 349 131 | 37 38 82 517 132 | 37 52 82 405 133 | 38 23 84 483 134 | 38 37 94 233 135 | 38 39 86 217 136 | 38 53 100 187 137 | 39 24 93 492 138 | 39 38 93 260 139 | 39 40 96 548 140 | 39 54 87 513 141 | 40 25 94 471 142 | 40 39 87 472 143 | 40 41 83 478 144 | 40 55 83 275 145 | 41 26 96 155 146 | 41 40 96 226 147 | 41 42 89 385 148 | 41 56 83 515 149 | 42 27 91 335 150 | 42 41 92 471 151 | 42 43 92 178 152 | 42 57 85 355 153 | 43 28 94 368 154 | 43 42 94 201 155 | 43 44 95 205 156 | 43 58 84 540 157 | 44 29 83 473 158 | 44 43 84 333 159 | 44 45 94 287 160 | 44 59 89 168 161 | 45 30 85 424 162 | 45 44 92 486 163 | 45 60 85 375 164 | 46 31 98 372 165 | 46 47 92 446 166 | 46 61 99 306 167 | 47 32 97 543 168 | 47 46 89 517 169 | 47 48 84 344 170 | 47 62 80 416 171 | 48 33 80 243 172 | 48 47 97 263 173 | 48 49 98 251 174 | 48 63 86 244 175 | 49 34 94 515 176 | 49 48 85 271 177 | 49 50 91 235 178 | 49 64 84 192 179 | 50 35 88 278 180 | 50 49 84 506 181 | 50 51 81 154 182 | 50 65 82 214 183 | 51 36 83 414 184 | 51 50 86 503 185 | 51 52 91 188 186 | 51 66 100 262 187 | 52 37 83 353 188 | 52 51 95 156 189 | 52 53 85 258 190 | 52 67 80 256 191 | 53 38 91 465 192 | 53 52 84 192 193 | 53 54 86 329 194 | 53 68 94 256 195 | 54 39 85 193 196 | 54 53 85 500 197 | 54 55 82 237 198 | 54 69 84 486 199 | 55 40 97 413 200 | 55 54 94 263 201 | 55 56 95 223 202 | 55 70 81 270 203 | 56 41 85 356 204 | 56 55 85 475 205 | 56 57 100 410 206 | 56 71 91 359 207 | 57 42 82 390 208 | 57 56 80 385 209 | 57 58 85 423 210 | 57 72 96 493 211 | 58 43 83 178 212 | 58 57 84 443 213 | 58 59 88 166 214 | 58 73 88 272 215 | 59 44 91 331 216 | 59 58 94 514 217 | 59 60 86 173 218 | 59 74 92 396 219 | 60 45 92 259 220 | 60 59 93 306 221 | 60 75 83 541 222 | 61 46 99 328 223 | 61 62 86 336 224 | 61 76 84 392 225 | 62 47 88 460 226 | 62 61 86 262 227 | 62 63 88 301 228 | 62 77 85 379 229 | 63 48 94 548 230 | 63 62 98 236 231 | 63 64 88 384 232 | 63 78 94 190 233 | 64 49 81 414 234 | 64 63 93 269 235 | 64 65 98 301 236 | 64 79 100 213 237 | 65 50 93 449 238 | 65 64 87 376 239 | 65 66 91 198 240 | 65 80 95 302 241 | 66 51 100 262 242 | 66 65 91 324 243 | 66 67 84 286 244 | 66 81 97 160 245 | 67 52 85 382 246 | 67 66 89 402 247 | 67 68 93 457 248 | 67 82 95 294 249 | 68 53 84 426 250 | 68 67 82 245 251 | 68 69 97 205 252 | 68 83 89 495 253 | 69 54 88 344 254 | 69 68 91 202 255 | 69 70 100 163 256 | 69 84 86 196 257 | 70 55 98 377 258 | 70 69 96 291 259 | 70 71 88 367 260 | 70 85 92 489 261 | 71 56 98 308 262 | 71 70 94 406 263 | 71 72 89 155 264 | 71 86 93 548 265 | 72 57 82 438 266 | 72 71 85 450 267 | 72 73 82 429 268 | 72 87 98 228 269 | 73 58 85 505 270 | 73 72 97 442 271 | 73 74 96 369 272 | 73 88 85 398 273 | 74 59 84 532 274 | 74 73 85 469 275 | 74 75 84 536 276 | 74 89 87 379 277 | 75 60 81 251 278 | 75 74 99 546 279 | 75 90 93 456 280 | 76 61 86 441 281 | 76 77 94 286 282 | 76 91 82 238 283 | 77 62 85 212 284 | 77 76 88 319 285 | 77 78 81 523 286 | 77 92 81 519 287 | 78 63 82 546 288 | 78 77 96 523 289 | 78 79 98 480 290 | 78 93 82 519 291 | 79 64 91 195 292 | 79 78 92 196 293 | 79 80 96 282 294 | 79 94 94 433 295 | 80 65 86 159 296 | 80 79 93 279 297 | 80 81 85 254 298 | 80 95 88 435 299 | 81 66 88 429 300 | 81 80 88 156 301 | 81 82 88 155 302 | 81 96 94 491 303 | 82 67 98 473 304 | 82 81 87 532 305 | 82 83 91 452 306 | 82 97 84 498 307 | 83 68 81 203 308 | 83 82 94 311 309 | 83 84 94 258 310 | 83 98 97 436 311 | 84 69 88 333 312 | 84 83 81 237 313 | 84 85 100 331 314 | 84 99 93 393 315 | 85 70 83 437 316 | 85 84 83 259 317 | 85 86 93 173 318 | 85 100 96 506 319 | 86 71 97 422 320 | 86 85 87 178 321 | 86 87 99 406 322 | 86 101 82 312 323 | 87 72 81 528 324 | 87 86 84 153 325 | 87 88 94 276 326 | 87 102 80 341 327 | 88 73 87 369 328 | 88 87 82 209 329 | 88 89 81 257 330 | 88 103 88 235 331 | 89 74 93 529 332 | 89 88 98 525 333 | 89 90 91 412 334 | 89 104 97 245 335 | 90 75 89 415 336 | 90 89 92 455 337 | 90 105 93 478 338 | 91 76 95 367 339 | 91 92 88 297 340 | 91 106 93 453 341 | 92 77 89 324 342 | 92 91 86 391 343 | 92 93 91 428 344 | 92 107 96 454 345 | 93 78 96 376 346 | 93 92 80 313 347 | 93 94 81 377 348 | 93 108 98 484 349 | 94 79 100 225 350 | 94 93 100 379 351 | 94 95 97 267 352 | 94 109 80 253 353 | 95 80 88 229 354 | 95 94 82 219 355 | 95 96 80 245 356 | 95 110 89 301 357 | 96 81 93 330 358 | 96 95 85 343 359 | 96 97 81 294 360 | 96 111 99 252 361 | 97 82 100 483 362 | 97 96 96 249 363 | 97 98 80 292 364 | 97 112 97 346 365 | 98 83 96 527 366 | 98 97 91 413 367 | 98 99 91 440 368 | 98 113 83 202 369 | 99 84 96 301 370 | 99 98 94 422 371 | 99 100 81 366 372 | 99 114 98 189 373 | 100 85 96 211 374 | 100 99 94 516 375 | 100 101 88 219 376 | 100 115 87 549 377 | 101 86 88 274 378 | 101 100 87 391 379 | 101 102 92 464 380 | 101 116 95 451 381 | 102 87 93 250 382 | 102 101 97 540 383 | 102 103 89 492 384 | 102 117 89 528 385 | 103 88 87 461 386 | 103 102 88 380 387 | 103 104 82 364 388 | 103 118 97 269 389 | 104 89 97 323 390 | 104 103 82 439 391 | 104 105 96 180 392 | 104 119 98 211 393 | 105 90 88 200 394 | 105 104 84 461 395 | 105 120 97 220 396 | 106 91 94 320 397 | 106 107 81 389 398 | 106 121 89 290 399 | 107 92 84 329 400 | 107 106 91 498 401 | 107 108 96 454 402 | 107 122 82 195 403 | 108 93 89 498 404 | 108 107 87 193 405 | 108 109 96 315 406 | 108 123 89 304 407 | 109 94 81 323 408 | 109 108 97 269 409 | 109 110 98 314 410 | 109 124 93 206 411 | 110 95 87 468 412 | 110 109 100 504 413 | 110 111 93 455 414 | 110 125 80 380 415 | 111 96 89 249 416 | 111 110 97 272 417 | 111 112 80 452 418 | 111 126 86 520 419 | 112 97 81 439 420 | 112 111 80 172 421 | 112 113 84 373 422 | 112 127 84 415 423 | 113 98 96 213 424 | 113 112 96 174 425 | 113 114 86 320 426 | 113 128 97 446 427 | 114 99 95 152 428 | 114 113 100 436 429 | 114 115 88 523 430 | 114 129 99 162 431 | 115 100 87 201 432 | 115 114 94 354 433 | 115 116 94 304 434 | 115 130 93 407 435 | 116 101 88 515 436 | 116 115 96 423 437 | 116 117 95 474 438 | 116 131 94 237 439 | 117 102 97 491 440 | 117 116 92 446 441 | 117 118 82 424 442 | 117 132 80 525 443 | 118 103 83 297 444 | 118 117 80 276 445 | 118 119 88 484 446 | 118 133 80 277 447 | 119 104 81 225 448 | 119 118 91 240 449 | 119 120 86 387 450 | 119 134 93 355 451 | 120 105 81 163 452 | 120 119 91 216 453 | 120 135 83 433 454 | 121 106 91 247 455 | 121 122 84 515 456 | 121 136 95 520 457 | 122 107 83 186 458 | 122 121 97 163 459 | 122 123 89 465 460 | 122 137 80 368 461 | 123 108 94 493 462 | 123 122 85 500 463 | 123 124 88 511 464 | 123 138 89 269 465 | 124 109 88 456 466 | 124 123 98 164 467 | 124 125 96 379 468 | 124 139 80 528 469 | 125 110 95 358 470 | 125 124 80 184 471 | 125 126 80 416 472 | 125 140 83 202 473 | 126 111 89 169 474 | 126 125 97 502 475 | 126 127 92 397 476 | 126 141 80 284 477 | 127 112 98 220 478 | 127 126 85 396 479 | 127 128 89 245 480 | 127 142 95 273 481 | 128 113 81 491 482 | 128 127 99 384 483 | 128 129 85 166 484 | 128 143 93 290 485 | 129 114 98 295 486 | 129 128 94 497 487 | 129 130 91 344 488 | 129 144 96 313 489 | 130 115 86 384 490 | 130 129 95 361 491 | 130 131 96 473 492 | 130 145 95 280 493 | 131 116 88 500 494 | 131 130 86 363 495 | 131 132 89 455 496 | 131 146 93 228 497 | 132 117 97 353 498 | 132 131 95 162 499 | 132 133 81 187 500 | 132 147 89 241 501 | 133 118 98 279 502 | 133 132 86 199 503 | 133 134 85 524 504 | 133 148 95 545 505 | 134 119 83 350 506 | 134 133 80 480 507 | 134 135 94 151 508 | 134 149 85 337 509 | 135 120 82 182 510 | 135 134 82 290 511 | 135 150 88 471 512 | 136 121 91 503 513 | 136 137 96 227 514 | 136 151 94 297 515 | 137 122 85 415 516 | 137 136 83 374 517 | 137 138 95 387 518 | 137 152 87 314 519 | 138 123 83 499 520 | 138 137 82 505 521 | 138 139 95 335 522 | 138 153 91 175 523 | 139 124 80 427 524 | 139 138 82 422 525 | 139 140 87 181 526 | 139 154 99 198 527 | 140 125 89 363 528 | 140 139 91 507 529 | 140 141 81 277 530 | 140 155 96 284 531 | 141 126 84 177 532 | 141 140 91 186 533 | 141 142 87 384 534 | 141 156 97 527 535 | 142 127 99 383 536 | 142 141 87 370 537 | 142 143 92 209 538 | 142 157 96 387 539 | 143 128 95 279 540 | 143 142 82 328 541 | 143 144 84 327 542 | 143 158 88 499 543 | 144 129 97 203 544 | 144 143 91 547 545 | 144 145 95 293 546 | 144 159 93 170 547 | 145 130 100 214 548 | 145 144 98 533 549 | 145 146 91 176 550 | 145 160 94 235 551 | 146 131 87 512 552 | 146 145 92 334 553 | 146 147 89 297 554 | 146 161 89 329 555 | 147 132 84 318 556 | 147 146 81 332 557 | 147 148 87 213 558 | 147 162 88 238 559 | 148 133 95 505 560 | 148 147 97 467 561 | 148 149 87 545 562 | 148 163 98 399 563 | 149 134 95 322 564 | 149 148 82 273 565 | 149 150 99 258 566 | 149 164 83 398 567 | 150 135 100 295 568 | 150 149 85 461 569 | 150 165 94 223 570 | 151 136 95 540 571 | 151 152 91 439 572 | 151 166 95 239 573 | 152 137 99 449 574 | 152 151 97 151 575 | 152 153 86 280 576 | 152 167 96 310 577 | 153 138 92 227 578 | 153 152 91 467 579 | 153 154 83 206 580 | 153 168 93 521 581 | 154 139 98 166 582 | 154 153 83 186 583 | 154 155 96 257 584 | 154 169 82 530 585 | 155 140 83 166 586 | 155 154 80 333 587 | 155 156 96 271 588 | 155 170 88 436 589 | 156 141 87 310 590 | 156 155 81 506 591 | 156 157 94 286 592 | 156 171 87 156 593 | 157 142 95 313 594 | 157 156 97 365 595 | 157 158 88 331 596 | 157 172 88 498 597 | 158 143 87 525 598 | 158 157 91 431 599 | 158 159 97 500 600 | 158 173 97 289 601 | 159 144 95 506 602 | 159 158 81 445 603 | 159 160 83 426 604 | 159 174 83 539 605 | 160 145 83 182 606 | 160 159 98 161 607 | 160 161 89 276 608 | 160 175 97 384 609 | 161 146 95 402 610 | 161 160 98 438 611 | 161 162 81 371 612 | 161 176 97 179 613 | 162 147 98 299 614 | 162 161 87 278 615 | 162 163 83 343 616 | 162 177 84 505 617 | 163 148 100 276 618 | 163 162 85 486 619 | 163 164 94 550 620 | 163 178 95 446 621 | 164 149 96 421 622 | 164 163 96 410 623 | 164 165 92 250 624 | 164 179 98 312 625 | 165 150 85 373 626 | 165 164 86 428 627 | 165 180 99 456 628 | 166 151 99 547 629 | 166 167 81 444 630 | 166 181 80 233 631 | 167 152 80 378 632 | 167 166 93 412 633 | 167 168 99 411 634 | 167 182 93 392 635 | 168 153 100 173 636 | 168 167 91 185 637 | 168 169 88 195 638 | 168 183 98 433 639 | 169 154 97 504 640 | 169 168 94 451 641 | 169 170 98 431 642 | 169 184 85 524 643 | 170 155 83 426 644 | 170 169 83 236 645 | 170 171 80 354 646 | 170 185 98 412 647 | 171 156 95 517 648 | 171 170 95 362 649 | 171 172 86 199 650 | 171 186 82 272 651 | 172 157 93 358 652 | 172 171 89 164 653 | 172 173 92 336 654 | 172 187 95 347 655 | 173 158 86 479 656 | 173 172 87 357 657 | 173 174 82 357 658 | 173 188 100 418 659 | 174 159 87 280 660 | 174 173 89 191 661 | 174 175 100 313 662 | 174 189 96 395 663 | 175 160 89 443 664 | 175 174 84 475 665 | 175 176 96 528 666 | 175 190 88 261 667 | 176 161 97 152 668 | 176 175 83 221 669 | 176 177 93 194 670 | 176 191 81 256 671 | 177 162 89 414 672 | 177 176 83 477 673 | 177 178 85 362 674 | 177 192 94 350 675 | 178 163 95 225 676 | 178 177 98 308 677 | 178 179 89 347 678 | 178 193 96 274 679 | 179 164 92 463 680 | 179 178 87 490 681 | 179 180 87 342 682 | 179 194 80 366 683 | 180 165 88 234 684 | 180 179 81 277 685 | 180 195 99 480 686 | 181 166 95 500 687 | 181 182 96 192 688 | 181 196 81 403 689 | 182 167 91 333 690 | 182 181 89 157 691 | 182 183 82 328 692 | 182 197 92 492 693 | 183 168 81 268 694 | 183 182 95 500 695 | 183 184 100 350 696 | 183 198 91 413 697 | 184 169 96 284 698 | 184 183 85 319 699 | 184 185 82 168 700 | 184 199 81 180 701 | 185 170 97 524 702 | 185 184 81 308 703 | 185 186 85 193 704 | 185 200 83 319 705 | 186 171 85 283 706 | 186 185 92 329 707 | 186 187 85 162 708 | 186 201 83 499 709 | 187 172 97 531 710 | 187 186 97 539 711 | 187 188 91 202 712 | 187 202 81 367 713 | 188 173 84 352 714 | 188 187 84 227 715 | 188 189 86 453 716 | 188 203 91 360 717 | 189 174 95 317 718 | 189 188 92 443 719 | 189 190 88 545 720 | 189 204 85 450 721 | 190 175 95 405 722 | 190 189 92 252 723 | 190 191 91 461 724 | 190 205 87 195 725 | 191 176 84 281 726 | 191 190 88 316 727 | 191 192 91 488 728 | 191 206 80 446 729 | 192 177 97 345 730 | 192 191 87 421 731 | 192 193 100 169 732 | 192 207 80 479 733 | 193 178 92 168 734 | 193 192 92 255 735 | 193 194 80 368 736 | 193 208 87 517 737 | 194 179 87 318 738 | 194 193 95 464 739 | 194 195 87 366 740 | 194 209 96 199 741 | 195 180 94 200 742 | 195 194 80 469 743 | 195 210 95 496 744 | 196 181 92 158 745 | 196 197 85 314 746 | 196 211 87 505 747 | 197 182 99 231 748 | 197 196 95 477 749 | 197 198 86 348 750 | 197 212 91 333 751 | 198 183 91 231 752 | 198 197 80 384 753 | 198 199 87 318 754 | 198 213 92 498 755 | 199 184 80 277 756 | 199 198 99 537 757 | 199 200 81 162 758 | 199 214 80 198 759 | 200 185 83 386 760 | 200 199 82 282 761 | 200 201 95 212 762 | 200 215 98 408 763 | 201 186 84 237 764 | 201 200 92 426 765 | 201 202 89 345 766 | 201 216 91 350 767 | 202 187 81 199 768 | 202 201 94 304 769 | 202 203 88 229 770 | 202 217 94 342 771 | 203 188 86 303 772 | 203 202 92 488 773 | 203 204 93 481 774 | 203 218 100 314 775 | 204 189 97 440 776 | 204 203 80 313 777 | 204 205 84 347 778 | 204 219 100 234 779 | 205 190 93 518 780 | 205 204 92 378 781 | 205 206 91 511 782 | 205 220 89 517 783 | 206 191 80 282 784 | 206 205 85 378 785 | 206 207 85 251 786 | 206 221 91 278 787 | 207 192 94 312 788 | 207 206 82 439 789 | 207 208 97 360 790 | 207 222 95 290 791 | 208 193 94 310 792 | 208 207 83 316 793 | 208 209 95 226 794 | 208 223 83 510 795 | 209 194 84 192 796 | 209 208 85 215 797 | 209 210 98 512 798 | 209 224 94 232 799 | 210 195 84 488 800 | 210 209 100 396 801 | 210 225 93 214 802 | 211 196 99 340 803 | 211 212 84 380 804 | 212 197 83 531 805 | 212 211 83 341 806 | 212 213 80 512 807 | 213 198 87 270 808 | 213 212 80 373 809 | 213 214 98 211 810 | 214 199 82 438 811 | 214 213 82 405 812 | 214 215 100 301 813 | 215 200 83 181 814 | 215 214 92 330 815 | 215 216 100 468 816 | 216 201 84 494 817 | 216 215 80 423 818 | 216 217 93 161 819 | 217 202 88 441 820 | 217 216 95 511 821 | 217 218 93 358 822 | 218 203 96 524 823 | 218 217 96 463 824 | 218 219 80 434 825 | 219 204 91 365 826 | 219 218 95 544 827 | 219 220 93 392 828 | 220 205 94 529 829 | 220 219 87 364 830 | 220 221 100 530 831 | 221 206 95 372 832 | 221 220 99 198 833 | 221 222 82 511 834 | 222 207 96 423 835 | 222 221 94 338 836 | 222 223 82 381 837 | 223 208 94 184 838 | 223 222 81 486 839 | 223 224 80 156 840 | 224 209 100 165 841 | 224 223 93 502 842 | 224 225 89 527 843 | 225 210 92 318 844 | 225 224 99 172 845 | 75 84 16 846 | 155 1 87 847 | 195 20 88 848 | 87 115 40 849 | 76 163 42 850 | 72 150 45 851 | 100 16 38 852 | 189 31 33 853 | 73 32 40 854 | 80 132 26 855 | 7 33 18 856 | 165 71 68 857 | 64 155 31 858 | 59 166 47 859 | 175 126 96 860 | 148 127 97 861 | 171 66 29 862 | 6 222 80 863 | 22 165 95 864 | 219 125 23 865 | 80 45 21 866 | 9 67 98 867 | 190 218 79 868 | 18 94 19 869 | 58 68 26 870 | 56 75 46 871 | 34 137 57 872 | 30 147 12 873 | 59 84 72 874 | 85 163 24 875 | 152 127 75 876 | 143 221 81 877 | 105 5 76 878 | 92 202 32 879 | 143 141 49 880 | 127 82 18 881 | 221 194 13 882 | 173 55 85 883 | 117 59 76 884 | 165 216 79 885 | 191 7 42 886 | 184 104 59 887 | 116 73 19 888 | 77 73 73 889 | 91 40 53 890 | 147 191 62 891 | 167 158 50 892 | 80 216 69 893 | 79 175 68 894 | 41 46 19 895 | 119 3 14 896 | 137 4 55 897 | 128 22 66 898 | 46 169 73 899 | 115 105 53 900 | 5 82 36 901 | 42 179 45 902 | 142 48 61 903 | 184 138 90 904 | 192 205 47 905 | 218 101 55 906 | 108 117 95 907 | 36 24 87 908 | 82 78 58 909 | 119 17 21 910 | 192 47 68 911 | 17 23 27 912 | 198 40 42 913 | 93 200 85 914 | 110 3 24 915 | 17 121 92 916 | 118 65 98 917 | 129 70 21 918 | 25 159 20 919 | 23 189 67 920 | 155 181 95 921 | 62 134 75 922 | 37 158 75 923 | 200 71 77 924 | 108 130 61 925 | 219 224 76 926 | 34 109 78 927 | 158 180 64 928 | 47 10 96 929 | 31 185 67 930 | 42 77 96 931 | 19 174 96 932 | 45 168 99 933 | 150 94 20 934 | 214 111 27 935 | 220 138 19 936 | 205 65 81 937 | 175 68 88 938 | 156 17 42 939 | 219 10 77 940 | 161 7 15 941 | 13 118 38 942 | 89 22 52 943 | 219 128 21 944 | 67 62 69 945 | --------------------------------------------------------------------------------