旅游公司租车问题 —— 动态规划 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:

 


posted @ 2018-11-30 17:58  基础运筹学  阅读(1481)  评论(0编辑  收藏  举报