zoukankan      html  css  js  c++  java
  • 旅游公司租车问题 —— 动态规划 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:


  • 相关阅读:
    vue3 祖孙传递数据
    vue 导航栏不能收缩的问题
    vue 项目中的问题
    Python第一周Round1记录
    [转]80端口被系统占用pid=4: NT kernel & System
    表<表名称> 中的列与现有的主键或UNIQUE约束不匹配
    一些算法(2)
    卸载不了java(tm)se development kit 7 update 3
    如何解决 Eclipse中出现访问限制由于对必需的库XX具有一定限制,因此无法访问类型
    [COPY]Eclipse无法导入项目
  • 原文地址:https://www.cnblogs.com/leapms/p/10045681.html
Copyright © 2011-2022 走看看