有一个旅游公司承包一条旅游线路,未来四周内的大巴车需求分别是: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. Git打标签与版本控制规范

    前言 本文适用于使用Git做VCS(版本控制系统)的场景. 用过Git的程序猿,都喜欢其分布式架构带来的commit快感.不用像使用SVN这种集中式版本管理系统,每一次提交代码,都要为代码冲突捏一把冷 ...

  2. 【UOJ】67 新年的毒瘤 &【BZOJ】1123 BLO

    [UOJ 67] 题目链接: 传送门 题解: 第一眼很懵逼……这什么鬼. 思考什么点复合条件……(o(>﹏<)o 1.树,也就是说还剩n-2条边,等价于要删去一个度数为m-n+2的点. 2 ...

  3. 虚拟机console基础环境配置——sshd安全登陆

    1. 概述2. 配置console的登陆2.1 配置sshd服务2.2 重启sshd服务2.3 无法登陆的问题解决3. 配置密钥登陆3.1 上传公钥的方式3.2 下载密码的方式3.3 虚拟机和宿主机共 ...

  4. python脚本对 mysql数据库进行增删改查操作

    # -*- coding: utf-8 -*-import pymysqlimport xlrd# import codecsconn = pymysql.connect(host='127.0.0. ...

  5. Java线程同步锁

    把synchronized当作函数修饰符时,示例代码如下: Public synchronized void method(){ //-. } 这也就是同步方法,那这时synchronized锁定的是 ...

  6. java 判断是否为中文字符,部分,。中文符号不能识别

    public static void main(String[] args) { int i = 0; for (char c : ",.判断一个字符串是否有中文一般情况是利用Unicode ...

  7. 好几个div(元素)找到最后一个

    <div> <div></div> <div></div> <div></div> </div> //找 ...

  8. python接口自动化(二十)--token登录(详解)

    简介 为了验证用户登录情况以及减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮.有些登录不是用 cookie 来验证的,是用 token 参数来判断是否登录.token 传参有两种一种是放在请 ...

  9. Docker镜像细节

    前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 回顾前面: 为什么需要Docker? Docker入 ...

  10. 一文助您成为Java.Net双平台高手

    写在前面:本文乃标题党,不是月经贴,侧重于Web开发差异,或细节或概述,若有不对之处,还请各位读者本着友好互助的心态批评指正.由于博客园中.Neter较多(个人感觉),因此本文也可以作为.Neter到 ...