有一個旅游公司承包一條旅游線路,未來四周內的大巴車需求分別是:4輛、1輛、4輛和5輛。該公司向租車公司租賃服務,租車公司的計價方案是:租車收取一次性手續費3000,每車每周費用2000。求最節省租車方案。
線性規划方法
參數定義:
d[k]: 第k周的需求車數;
s[k]: 第k周周初庫存車輛數量;
x[k]: 第k周周初租車數量;
y[k]第k周周初還車數量。
目標
數學式:
$\min \sum_{k=1}^{n}(3000x_k+2000(x_k+s_k-y_k))$
+Leapms形式:
min sum{k=1,...,n}(3000x[k]+2000(x[k]+s[k]-y[k]))
約束(+Leapms形式):
s[k]+x[k]-y[k] ≥ d[k] | k=1,...,n // 每周車輛需求約束
s[k+1] =s[k] + x[k] - y[k] | k=1,...,n-1 //庫存變化邏輯
數據:
n=4
d={4 1 4 5}
完整+Leapms模型:
min sum{k=1,...,n}(5000x[k]+2000(s[k]-y[k])) subject to x[k]+s[k]-y[k]>=d[k]| k=1,...,n s[k+1]=x[k]+s[k]-y[k]| k=1,...,n-1 s[1]=0 where n is a number d is a set x[k],s[k],y[k] are variables of nonnegative numbers --> |k=1,...,n data n=4 d={4 1 4 5}
直接求解
在 +Leapms 中使用 load 和 mip 命令求解。
Welcome to +Leapms ver 1.1(162260) Teaching Version -- an LP/LMIP modeling and solving tool.歡迎使用利珀 版本1.1(162260) Teaching Version -- LP/LMIP 建模和求 解工具. +Leapms>load Current directory is "ROOT". ......... tour_bus.leap ......... please input the filename:tour_bus.leap ================================================================ 1: min sum{k=1,...,n}(5000x[k]+2000(s[k]-y[k])) 2: subject to 3: x[k]+s[k]-y[k]>=d[k]| k=1,...,n 4: s[k+1]=x[k]+s[k]-y[k]| k=1,...,n-1 5: s[1]=0 6: where 7: n is a number 8: d is a set 9: x[k],s[k],y[k] are variables of nonnegative numbers --> 10: |k=1,...,n 11: data 12: n=4 13: d={4 1 4 5} ================================================================ >>end of the file. Parsing model: 1D 2R 3V 4O 5C 6S 7End. .................................. number of variables=12 number of constraints=8 .................................. +Leapms>mip relexed_solution=49000; number_of_nodes_branched=0; memindex=(2,2) The Problem is solved to optimal as an MIP. 找到整數規划的最優解.非零變量值和最優目標值如下: ......... s2* =4 s3* =4 s4* =4 x1* =4 x4* =1 ......... Objective*=49000 ......... +Leapms>
得到最優解: x1*=4, x4*=1, x2*=x3*=0, 目標函數值:49000。
CPLEX求解
在+Leapms環境中輸入cplex命令,即可觸發CPLEX求解器對問題進行求解。
+Leapms>cplex You must have licience for Ilo Cplex, otherwise you will violate corresponding copyrights, continue(Y/N)? 你必須有Ilo Cplex軟件的授權才能使用此功能,否則會侵犯相應版權, 是否繼續(Y/N)?y +Leapms>
Tried aggregator 1 time. LP Presolve eliminated 2 rows and 3 columns. Aggregator did 1 substitutions. Reduced LP has 5 rows, 8 columns, and 15 nonzeros. Presolve time = 0.02 sec. (0.01 ticks) Iteration log . . . Iteration: 1 Dual infeasibility = 4000.000000 Iteration: 4 Dual objective = 46000.000000 Solution status = Optimal Solution value = 49000 s2=4 s3=4 s4=4 x1=4 x4=1
+Leapms - Latex數學概念模型
在+Leapms環境下,使用 “latex"命令可以把上面的+Leapms模型直接轉換為如下Latex格式的數學概念模型
動態規划方法:
dk: 第k周的需求車數;sk : 第k周周初庫存車輛數量;xk: 第k周周初租車數量;yk第k周周初還車數量。
遞推方程:
f(sk)=min{3000xk+2000(sk-yk)+f(sk+1)), (1)
其中 sk+1=sk+xk-yk, (2)
sk+1≥dk, (3)
xk≥0, yk≥0。 (4)
<代數式求解非常繁瑣> 。。。
圖解法:
(1)根據題意,共四個階段, 把狀態取為階段最后時刻的保有車數,每個周期的最大狀態是5,最小是該階段用車數量。畫出階段及狀態:
(2)畫出狀態轉移和決策含義:
(3)使用倒序法遞推最優解:
(4) 得到最優解: x1*=4, x4*=1, x2*=x3*=0, 目標函數值:49000: