有一个旅游公司承包一条旅游线路,未来四周内的大巴车需求分别是: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:


旅游公司租车问题 —— 动态规划 v.s. + Leapms线性规划的更多相关文章

  1. Java练习 SDUT-3349_答答租车系统(面向对象综合练习)

    答答租车系统(面向对象综合练习) Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 各位面向对象的小伙伴们,在学习了面向对 ...

  2. Java学习笔记(四)——好记性不如烂键盘(答答租车)

    根据所学知识,编写一个控制台版的租车系统. 功能: 1. 展示所有可租车辆 2. 选择车型.租车辆 3. 展示租车清单,包含:总金额.总载货量及其车型.总载人量及其车型 代码参考imooc中Java课 ...

  3. [代码审计]某租车系统JAVA代码审计[前台sql注入]

    0x00 前言 艰难徘徊这么久,终于迈出第一步,畏畏缩缩是阻碍大多数人前进的绊脚石,共勉. 系统是租车系统,这个系统是Adog师傅之前发在freebuf(http://www.freebuf.com/ ...

  4. java学习之租车系统

    ​背景:有三种类型的车供给用户来租用​ ​要求:控制台用户交互界面,根据用户需求输出租车价格,结果如下: 创建租车类主要设计过程: 创建租车类 创建Car父类,包含四种属性成员,重写构造方法 创建三种 ...

  5. 我的Java之旅——答答租车系统的改进

    之前的答答租车系统虽然可以实现项目的要求,但是没有用Java面向对象,今天用面向对象的三大特性封装.继承和多态来改进原来的代码.题目和之前的代码参考上篇博客,这里不再述说. 改进后的代码: Vehic ...

  6. 我的Java之旅——答答租车系统

    今天试着写了一个新的程序,叫做"答答租车系统",是慕课网上的一个综合练习,戳我看原题. 项目要求截图如下: 我的代码(简单粗暴版): Vehicle.java public cla ...

  7. Java学习笔记三十:Java小项目之租车系统

    Java小项目之租车系统 一:项目背景介绍: 根据所学知识,编写一个控制台版的“呱呱租车系统” 功能: 1.展示所有可租车辆: 2.选择车型.租车量: 3.展示租车清单,包含:总金额.总载货量以及其车 ...

  8. Rol租车网项目总结

    现在自行车的租聘如此火爆,我们是否需要加入这个浩浩荡荡的行列? 相比起现在ofo共享单车,摩拜单车.而我们的竞争力在何处? 如何能让我们的项目脱颖而出? 而我们的Rol租车网为什么要叫Rol呢? Ri ...

  9. 基于JSP+Servlet开发在线租车系统 java 源码

    运行环境: 最好是java jdk 1.8,我们在这个平台上运行的.其他版本理论上也可以.IDE环境: Eclipse,Myeclipse,IDEA都可以tomcat环境: Tomcat 7.x,8. ...

随机推荐

  1. BZOJ_1833_[ZJOI2010]count 数字计数_数位DP

    BZOJ_1833_[ZJOI2010]count 数字计数_数位DP 题意: 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. 分析: 数位DP f[i][ ...

  2. 【Canal源码分析】Canal Instance启动和停止

    一.序列图 1.1 启动 1.2 停止 二.源码分析 2.1 启动 这部分代码其实在ServerRunningMonitor的start()方法中.针对不同的destination,启动不同的Cana ...

  3. 已管理员身份从cmd框进入mysql,及常用的简单操作!

    在命令框中操作mysql已管理员的身份进入操作权限较高,已普通用户进入cmd框也可对mysql进行操作,不过一般建议用管理员身份进入. 1.启动MYSQL Notifier 2.已管理员身份进入cmd ...

  4. 【填坑纪事】一次用System.nanoTime()填坑System.currentTimeMills()的实例记录

    JDK提供了两个方法,System.currentTimeMillis()和System.nanoTime(),这两个方法都可以用来获取表征当前时间的数值.但是如果不仔细辨别这两个方法的差别和联系,在 ...

  5. 开发人员必备工具 —— JMeter 压测

    在接口开发完以后,开发人员应该学会对自己的接口先进行压测一下,虽然压测的结果并不一定准确,也不能完全反映真实情况,但是如果有问题的话多少是可以看出的,而且也可以及早做优化,做到心里有底.否则,等测试进 ...

  6. java游戏开发杂谈 - 界面刷新、坐标系

    之前几篇博客里的例子,大家运行过的话,就能看出来,界面是需要刷新的. JPanel里的绘制方法是paintComponent,界面上的东西都是这个方法画出来的. JPanel对象有一个repaint方 ...

  7. 学习 JavaScript (五)核心概念:语句

    语句 语句被称作是流控制语句,通常有标志性的一个或者多个关键字,if . do-while. while.for. for-in. label. break.continue.with.switch. ...

  8. java到底是引用传递还是值传递?

    今天我们来讲讲一个在学习中容易误解的问题,面试中也偶尔问到,java方法调用时到底是值传递还是引用传递? 首先,请大家来做一个判断题,下面的3个问题是否描述正确 1. java基本数据类型传递是值传递 ...

  9. Docker最全教程之使用 Visual Studio Code玩转Docker(二十)

    前言 VS Code是一个年轻的编辑器,但是确实是非常犀利.通过本篇,老司机带你使用VS Code玩转Docker——相信阅读本篇之后,无论是初学者还是老手,都可以非常方便的玩转Docker了!所谓是 ...

  10. Dynamics Business Central-如何配置VS Code连接BC环境

    最近在研究Business Central,也就是以前的Dynamics NAV,需要配置Visual Studio Code连接BC环境,以下是配置的具体步骤. 1. VS Code下载,这个不多说 ...