this repo has no description
at develop 2.0 kB view raw
1/*** 2!Test 3solvers: [gecode] 4expected: !Result 5 status: OPTIMAL_SOLUTION 6 solution: !Solution 7 aCostSupport: 0 8 mdl8_Z: 0 9***/ 10 11%%%%%% Regression test for the "missing builtin mzn_in_root_context" resolved @227ce089 12 13int: nOBJCOEFDIVISOR__MIP = 10000; %%% Objective coefficient divisor to adapt magnitude in MIP 14int: nOBJCOEFDIVISOR__CP = 1000; %%% Objective coefficient divisor to adapt magnitude in CP 15int: nOBJLENGTHDISCR = 1000; %%% Length measure discretizer to improve objective precision (in CP) 16 17 18 19 20%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CONSTRAINTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 21 22 23 24function var int: CostScaledByDiscrLength(var int: L, float: unit_cost, float: costDivisor, float: lengthDiscr) = 25 CostScaledByDiscrLength__useDIV(L, unit_cost, costDivisor, lengthDiscr); 26 27function var int: CostScaledByDiscrLength__useDIV(var int: L, float: unit_cost, float: costDivisor, float: lengthDiscr) = 28 let { 29 int: lengthDiscrCeil = ceil(lengthDiscr); 30 } in 31 ((L + lengthDiscrCeil - 1) div lengthDiscrCeil) * ceil(unit_cost * lengthDiscrCeil / costDivisor); 32 33function var int: CostScaledByDiscrLength__useMULT(var int: L, float: unit_cost, float: costDivisor, float: lengthDiscr) = 34 let { 35 var int: L_scaled; %% Manual decomp: OR-TOOLS 8.0.8 says "TIMEOUT, unknown" 36 int: lengthDiscrCeil = ceil(lengthDiscr); %% But it could be better, as suggested by Gurobi 37 constraint L <= %% Assume L is minimized 38 L_scaled * lengthDiscrCeil 39 ; 40 } in 41 L_scaled * ceil(unit_cost * lengthDiscrCeil / costDivisor); 42 43 44%%%%%%%%%%%%%%%% SUPPORT COSTS %%%%%%%%%%%%%%%%%%%%%%%%%%% 45var 0..1000000000: aCostSupport; 46var 0..0: mdl8_Z; 47constraint 48 aCostSupport >= CostScaledByDiscrLength( mdl8_Z, 49 42240, nOBJCOEFDIVISOR__CP, nOBJLENGTHDISCR ) 50; 51 52 53 54 55%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% SOLVE + OBJECTIVE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 56 57 58solve 59 minimize 60 aCostSupport; 61 62