旅游公司租車問題 —— 動態規划 v.s. + Leapms線性規划


有一個旅游公司承包一條旅游線路,未來四周內的大巴車需求分別是: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:

 



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM