|
|
Line 1: |
Line 1: |
| A set of test routines have been defined illustrating the combined use of TOMLAB and Xpress ''MP'' The test routines are shown in Table 4. The knapsack test routine ''xpknapsTL ''is similar to ''xpknaps ''discussed in the previous subsection. It runs three knapsack test examples. It is possible to change the cut strategy and whether to use the knapsack heuristic in the callback routine ''xpcb gl''. The problems are setup using the TOMLAB format. | | A set of test routines have been defined illustrating the use of the ''xpress ''main routine. The test routines and utilities are shown in Table 3. |
|
| |
|
| {|class="wikitable"
| | It is easy to call the test routines, e.g. |
| <caption>The test routines and utilities.</caption>
| |
| |-valign="top"
| |
| !Function||Description
| |
| |-valign="top"
| |
| |''xptomtest1''||Tests of problems predefined in the TOMLAB IF format. LP, QP and MIP problems are solved calling the driver routine ''tomRun''.
| |
| |-valign="top"
| |
| |''xptomtest2''||Tests of a simple MIP problem defined in the TOMLAB (TQ) format.
| |
|
| |
|
| The problem is solved as an LP and MIP problem, with or without slacks defined. ''tomRun''.
| | <pre> |
| |-valign="top"
| | x = xptest1; |
| |''xpknapsTL''||The same tests as in ''xpknaps'', but the TOMLAB format and system is used.
| | x = xptest2; |
| |}
| | x = xptest3; |
| | </pre> |
|
| |
|
| The following example shows how to run a predefined problem, one of the problems in ''xpknapsTL'', using the TOMLAB Init File (IF) format. Some fields that changes control variables are set to make Xpress''M P ''work slower. Then a simple predefined heuristic is run to try to improve the convergence. For this example it can get down the number of node visited from 135 to 35.
| | will call the three routines solving GAP problems. The ''xpaircrew ''test problem has no input parameters, just call: |
|
| |
|
| <pre> | | <pre> |
| Prob = ProbInit('mip_prob',7); % Create Prob structure from predefined problem
| | xpaircrew; |
| Prob.MIP
| | </pre> |
| ans =
| |
| xpcontrol: []
| |
| IntVars: [30x1 double]
| |
| VarWeight: [30x1 double]
| |
| KNAPSACK: 1
| |
| callback: [14x1 double]
| |
| % Make Xpress-MP work slower by disabling presolve and cuts.
| |
| Prob.MIP.xpcontrol.CUTSTRATEGY = 0; % Use no cuts
| |
| Prob.MIP.xpcontrol.PRESOLVE = 0; % Use no presolve
| |
| Prob.MIP.xpcontrol.MIPLOG = 3; % Call the callback each node
| |
| Result = tomRun('xpress-mp',Prob,1); % Call Xpress-MP using Tomlab driver
| |
|
| |
|
| ===== * * * =============================================== * * *
| | The knapsack test routine runs three test examples. It is possible to change the cut strategy (third input parameter) and whether to use the knapsack heuristic in the callback routine ''xpcb gl ''(second input parameter). To run the second test example, using the simple knapsack heuristic, and aggressive cuts, the call is |
| TOMLAB SOL - Three weeks demonstration single user license
| |
| =================================================================
| |
| Problem: mip_prob - 7: Weingartner 1 - 2/28 0-1 knapsack f_k -141278.000000000000000000
| |
| User given f(x_*)-141278.000000000000000000
| |
|
| |
|
| Solver: Xpress-MP. EXIT=0. INFORM=6.
| | <pre> |
| Mex-interface to Xpress-MP LP/QP/MIP/MIQP solver
| | xpknaps(2,1,2); |
| Global search complete - integer solution found
| | </pre> |
|
| |
|
| FuncEv 135 GradEv 0 Iter 135
| | The first parameter selects the test problem. Calling without any parameters |
| CPU time: 0.250000 sec. Elapsed time: 0.250000 sec.
| |
|
| |
|
| Prob.MIP.callback(9) = 1; % Enable Global Log callback
| | <pre> |
| Result = tomRun('xpress-mp',Prob,1);
| | xpknaps |
| % Because Prob.MIP.KNAPSACK == 1, the predefined heuristic is tried
| |
| | |
| --- Global Log. Node 1. Node depth 1. Best Bound -142019.000000.
| |
| Node 1: LP-obj -142019; Heuristic value -139508 *** Updated cutoff to -139507
| |
| --- Global Log. Node 2. Node depth 2. Best Bound -142019.000000.
| |
| Node 2: LP-obj -141897; Heuristic value -140768 *** Updated cutoff to -140767
| |
| --- Global Log. Node 3. Node depth 3. Best Bound -142019.000000.
| |
| Node 3: LP-obj -141873; Heuristic value -138493
| |
| --- Global Log. Node 4. Node depth 4. Best Bound -142019.000000.
| |
| Node 4: LP-obj -141726; Heuristic value -139618
| |
| --- Global Log. Node 5. Node depth 3. Best Bound -142019.000000.
| |
| Node 5: Not applying heuristic (status is Cutoff in dual)
| |
| --- Global Log. Node 6. Node depth 5. Best Bound -142019.000000.
| |
| Node 6: LP-obj -141707; Heuristic value -138168
| |
| --- Global Log. Node 7. Node depth 6. Best Bound -142019.000000.
| |
| Node 7: LP-obj -141655; Heuristic value -138068
| |
| --- Global Log. Node 8. Node depth 5. Best Bound -142019.000000.
| |
| Node 8: Not applying heuristic (status is Cutoff in dual)
| |
| --- Global Log. Node 9. Node depth 6. Best Bound -142019.000000.
| |
| Node 9: Not applying heuristic (status is Infeasible)
| |
| --- Global Log. Node 10. Node depth 6. Best Bound -142019.000000.
| |
| Node 10: Not applying heuristic (status is Cutoff in dual)
| |
| --- Global Log. Node 11. Node depth 2. Best Bound -142019.000000.
| |
| Node 11: LP-obj -141465; Heuristic value -139508
| |
| --- Global Log. Node 12. Node depth 3. Best Bound -142019.000000.
| |
| Node 12: LP-obj -141062; Heuristic value -139933
| |
| --- Global Log. Node 13. Node depth 3. Best Bound -142019.000000.
| |
| Node 13: Not applying heuristic (status is Infeasible)
| |
| --- Global Log. Node 14. Node depth 3. Best Bound -142019.000000.
| |
| Node 14: Not applying heuristic (status is Cutoff in dual)
| |
| --- Global Log. Node 15. Node depth 3. Best Bound -141896.953125.
| |
| Node 15: LP-obj -141721; Heuristic value -141278 *** Updated cutoff to -141277
| |
| --- Global Log. Node 16. Node depth 4. Best Bound -141896.953125.
| |
| Node 16: LP-obj -141694; Heuristic value -141168
| |
| --- Global Log. Node 17. Node depth 5. Best Bound -141896.953125.
| |
| Node 17: LP-obj -141640; Heuristic value -141168
| |
| --- Global Log. Node 18. Node depth 6. Best Bound -141896.953125.
| |
| Node 18: LP-obj -141572; Heuristic value -141278 *** Updated cutoff to -141277
| |
| --- Global Log. Node 19. Node depth 7. Best Bound -141896.953125.
| |
| Node 19: LP-obj -141360; Heuristic value -141258
| |
| --- Global Log. Node 20. Node depth 7. Best Bound -141896.953125.
| |
| Node 20: LP-obj -141565; Heuristic value -141278 *** Updated cutoff to -141277
| |
| --- Global Log. Node 21. Node depth 8. Best Bound -141896.953125.
| |
| Node 21: LP-obj -141349; Heuristic value -141247
| |
| --- Global Log. Node 22. Node depth 8. Best Bound -141896.953125.
| |
| Node 22: LP-obj -141498; Heuristic value -141278 *** Updated cutoff to -141277
| |
| --- Global Log. Node 23. Node depth 8. Best Bound -141896.953125.
| |
| Node 23: Not applying heuristic (status is Infeasible)
| |
| --- Global Log. Node 24. Node depth 8. Best Bound -141896.953125. Best MIP f(x) -141278.000000
| |
| Node 24: B&B integer solution found; objval -141278
| |
| --- Global Log. Node 25. Node depth 8. Best Bound -141726.000000. Best MIP f(x) -141278.000000
| |
| Node 25: B&B integer solution found; objval -141056
| |
| --- Global Log. Node 26. Node depth 4. Best Bound -141720.515625. Best MIP f(x) -141278.000000
| |
| Node 26: B&B integer solution found; objval -140695
| |
| --- Global Log. Node 27. Node depth 3. Best Bound -141693.593750. Best MIP f(x) -141278.000000
| |
| Node 27: B&B integer solution found; objval -141524
| |
| --- Global Log. Node 28. Node depth 4. Best Bound -141640.000000. Best MIP f(x) -141278.000000
| |
| Node 28: B&B integer solution found; objval -140974
| |
| --- Global Log. Node 29. Node depth 3. Best Bound -141465.140625. Best MIP f(x) -141278.000000
| |
| Node 29: LP-obj -141341; Heuristic value -139398
| |
| --- Global Log. Node 30. Node depth 3. Best Bound -141465.140625. Best MIP f(x) -141278.000000
| |
| Node 30: Not applying heuristic (status is Cutoff in dual)
| |
| --- Global Log. Node 31. Node depth 3. Best Bound -141465.140625. Best MIP f(x) -141278.000000
| |
| Node 31: Not applying heuristic (status is Infeasible)
| |
| --- Global Log. Node 32. Node depth 3. Best Bound -141360.000000. Best MIP f(x) -141278.000000
| |
| Node 32: Not applying heuristic (status is Cutoff in dual)
| |
| --- Global Log. Node 33. Node depth 7. Best Bound -141360.000000. Best MIP f(x) -141278.000000
| |
| Node 33: Not applying heuristic (status is Infeasible)
| |
| --- Global Log. Node 34. Node depth 7. Best Bound -141349.000000. Best MIP f(x) -141278.000000
| |
| Node 34: Not applying heuristic (status is Cutoff in dual)
| |
| --- Global Log. Node 35. Node depth 8. Best Bound -141349.000000. Best MIP f(x) -141278.000000
| |
| Node 35: Not applying heuristic (status is Infeasible)
| |
| | |
| ===== * * * =============================================== * * *
| |
| TOMLAB SOL - Three weeks demonstration single user license
| |
| =================================================================
| |
| Problem: mip_prob - 7: Weingartner 1 - 2/28 0-1 knapsack f_k -141278.000000000000000000
| |
| User given f(x_*)-141278.000000000000000000
| |
| | |
| Solver: Xpress-MP. EXIT=0. INFORM=6.
| |
| Mex-interface to Xpress-MP LP/QP/MIP/MIQP solver
| |
| Global search complete - integer solution found
| |
| | |
| FuncEv 35 GradEv 0 Iter 35
| |
| CPU time: 3.156000 sec. Elapsed time: 3.156000 sec.
| |
| </pre> | | </pre> |
|
| |
|
| The following example shows how to define and solve a problem using the TOMLAB Format (TQ). The matrices and vectors for the problem is defined in a ''mat ''file. Fields that changes the Xpress''M P ''control variables are set to show how to influence the work of the solver. In this case the changes slow down its performance.
| | is the same as the call |
|
| |
|
| <pre> | | <pre> |
| clear all
| | xpknaps(1,0,0); |
| load bilp1.mat
| | </pre> |
| whos
| |
| Name Size Bytes Class
| |
|
| |
|
| A 27x1956 422496 double array
| | {|class="wikitable" |
| b_L 27x1 216 double array
| | !Function||Description |
| b_U 27x1 216 double array
| | |+<caption>The test routines and utilities.</caption> |
| c 1956x1 15648 double array
| | |-valign="top" |
| noivars 1956x1 15648 double
| | |''abc2gap''||Utility to convert a Generalized Assignment Problem (GAP) to stan- dard form for Xpress''M P ''. |
| x_L 1956x1 15648 double array
| | |-valign="top" |
| x_U 1956x1 15648 double array
| | |''xpbiptest''||Test of three large binary integer linear problems. |
| | | |-valign="top" |
| Grand total is 58735 elements using 469880 bytes
| | |''xpiptest''||Test of three large integer linear problems. |
| | | |-valign="top" |
| Prob = mipAssign(c, A, b_L, b_U, x_L, x_U,[],'bilp1',[],[],noivars);
| | |''xpknaps''||Test of knapsack problems. |
| Result = tomRun('xpress-mp',Prob,1);
| | |-valign="top" |
| | | |''xptest1''||Test of a Generalized Assignment Problem (GAP). |
| ===== * * * =============================================== * * *
| | |-valign="top" |
| TOMLAB SOL - Three weeks demonstration single user license
| | |''xptest2''||Test of the same GAP problem as ''xptest1'', but using sos1 variables. |
| =================================================================
| | |-valign="top" |
| Problem: No Init File - 1: bilp1 f_k 0.000000000000000000
| | |''xptest3''||Test of a Generalized Assignment Problem (GAP). |
| sum(|constr|) 0.000000000000025960
| | |} |
| | |
| Solver: Xpress-MP. EXIT=0. INFORM=6.
| |
| Mex-interface to Xpress-MP LP/QP/MIP/MIQP solver
| |
| Global search complete - integer solution found
| |
| | |
| FuncEv 67 GradEv 0 Iter 67
| |
| CPU time: 4.359000 sec. Elapsed time: 4.375000 sec.
| |
| | |
| === * * * ================================================== * * *
| |
| | |
| Prob.MIP
| |
| ans =
| |
| IntVars: 1956
| |
| VarWeight: []
| |
| KNAPSACK: []
| |
| fIP: []
| |
| xIP: []
| |
| PI: []
| |
| SC: []
| |
| SI: []
| |
| sos1: []
| |
| sos2: []
| |
| | |
| % Make Xpress-MP work slower by disabling presolve and cuts.
| |
| Prob.MIP.xpcontrol.CUTSTRATEGY = 0;
| |
| Prob.MIP.xpcontrol.MIPPRESOLVE = 0;
| |
| Prob.MIP.xpcontrol.PRESOLVE = 0;
| |
| Result = tomRun('xpress-mp',Prob,2);
| |
| | |
| ===== * * * =============================================== * * *
| |
| TOMLAB SOL - Three weeks demonstration single user license
| |
| =================================================================
| |
| Problem: No Init File - 1: bilp1 f_k 0.000000000000000000 | |
| sum(|constr|) 0.000000000000020365
| |
| | |
| Solver: Xpress-MP. EXIT=0. INFORM=6.
| |
| Mex-interface to Xpress-MP LP/QP/MIP/MIQP solver
| |
| Global search complete - integer solution found
| |
| | |
| FuncEv 105 GradEv 0 Iter 105
| |
| CPU time: 0.578000 sec. Elapsed time: 0.578000 sec.
| |
| | |
| === * * * ================================================== * * *
| |
| | |
| Prob.MIP.xpcontrol.MIPPRESOLVE = 7; % Try another MIPPRESOLVE value
| |
| Result = tomRun('xpress-mp', Prob, 1);
| |
| | |
| ===== * * * =============================================== * * *
| |
| TOMLAB SOL - Three weeks demonstration single user license
| |
| =================================================================
| |
| Problem: No Init File - 1: bilp1 f_k 0.000000000000000000 | |
| sum(|constr|) 0.000000000000011373
| |
| | |
| Solver: Xpress-MP. EXIT=0. INFORM=6.
| |
| Mex-interface to Xpress-MP LP/QP/MIP/MIQP solver
| |
| Global search complete - integer solution found
| |
| | |
| FuncEv 82 GradEv 0 Iter 82
| |
| CPU time: 3.250000 sec. Elapsed time: 3.250000 sec.
| |
| </pre>
| |