LinGo:疏散问题——线性规划,0-1规划
甲市一家大公司由5个部门(A、B、C、D、E)组成。现要将它的几个部门迁出甲市,迁至乙市或丙市。
(每个城市最多接纳三个部门)
除去因政府鼓励这样做以外,还有用房便宜,招工方便等好处。对这些好处已作出数量估计,其值如下表所示。
|
迁市 |
部门A |
部门B |
部门C |
部门D |
部门E |
|
乙 |
10 |
15 |
10 |
20 |
5 |
|
丙 |
10 |
20 |
15 |
15 |
15 |
然而疏散后各部门间的通讯费用增加。部门间每年增加的通讯量如表2所示。
|
部门 |
B |
C |
D |
E |
|
A |
0 |
1000 |
1500 |
0 |
|
B |
1400 |
1200 |
0 |
|
|
C |
0 |
2000 |
||
|
D |
700 |
不同城市间单位通讯量的费用如表3所示(单位:元)。
|
市 |
甲 |
乙 |
丙 |
|
甲 |
100 |
130 |
90 |
|
乙 |
50 |
140 |
|
|
丙 |
50 |
试求各部门应置于何市,使年费用最少?
解:
一.设决策变量Xij为部门j迁至i市
Cij为部门j在i市所产生的利益
Nij为部门i与部门j之间的通信量
Pij为i市与j市之间单位通信量所产生的费用
二.分析约束条件
1.决策变量Xij为0-1约束
@for(link1(i,j) : @bin(x(i,j)));
2.每个部门只能迁至3个市的其中一个
@for(class(j) : @sum(city(i) : x(i,j)) = 1);
3.每个城市最多接纳三个部门
@for(city(i) : @sum(class(j) : x(i,j)) <= 3);
三.目标函数
利益 = 总收益 – 总通信费用
部门A与B的通信费用 = A与B的通信量 * A所在的市到B所在的市的单位通信费
部门A所在的市到B所在的市的单位通信费 = @sum(link3(i,j) : p(i,j) * x(i,A) * x(j,B))
[OBJ] max = @sum(link1(i,j) : x(i,j)*c(i,j))*10000 - @sum(link2(n,m) : w(n,m) * @sum(link3(i,j) : p(i,j) * x(i,n) * x(j,m)));
四.LINGO代码
sets:
city/../;
class/../;
pro/../;
!利益&决策变量;
link1(city, class) : x, c;
!通讯量;
link2(pro, class) : w;
!通讯费用;
link3(city, city) : p;
endsets data:
c = , , , , ,
, , , , ,
, , , , ; w = , , , , ,
, , , , ,
, , , , ,
, , , , ; p = , , ,
, , ,
, , ;
enddata @for(link1(i,j) : @bin(x(i,j))); @for(class(j) : @sum(city(i) : x(i,j)) = ); @for(city(i) : @sum(class(j) : x(i,j)) <= ); [OBJ] max = @sum(link1(i,j) : x(i,j)*c(i,j))* - @sum(link2(n,m) : w(n,m) * @sum(link3(i,j) : p(i,j) * x(i,n) * x(j,m)));
五.运算结果
Local optimal solution found.
Objective value: 149000.0
Objective bound: 149000.0
Infeasibilities: 0.000000
Extended solver steps: 0
Total solver iterations: 11
Variable Value Reduced Cost
X( 1, 1) 0.000000 170000.0
X( 1, 2) 0.000000 244000.0
X( 1, 3) 0.000000 276000.0
X( 1, 4) 0.000000 225000.0
X( 1, 5) 0.000000 223000.0
X( 2, 1) 1.000000 0.000000
X( 2, 2) 0.000000 68000.00
X( 2, 3) 0.000000 266000.0
X( 2, 4) 1.000000 0.000000
X( 2, 5) 0.000000 217000.0
X( 3, 1) 0.000000 45000.00
X( 3, 2) 1.000000 0.000000
X( 3, 3) 1.000000 0.000000
X( 3, 4) 0.000000 14000.00
X( 3, 5) 1.000000 0.000000
C( 1, 1) 0.000000 0.000000
C( 1, 2) 0.000000 0.000000
C( 1, 3) 0.000000 0.000000
C( 1, 4) 0.000000 0.000000
C( 1, 5) 0.000000 0.000000
C( 2, 1) 10.00000 0.000000
C( 2, 2) 15.00000 0.000000
C( 2, 3) 10.00000 0.000000
C( 2, 4) 20.00000 0.000000
C( 2, 5) 5.000000 0.000000
C( 3, 1) 10.00000 0.000000
C( 3, 2) 20.00000 0.000000
C( 3, 3) 15.00000 0.000000
C( 3, 4) 15.00000 0.000000
C( 3, 5) 15.00000 0.000000
W( 1, 1) 0.000000 0.000000
W( 1, 2) 0.000000 0.000000
W( 1, 3) 1000.000 0.000000
W( 1, 4) 1500.000 0.000000
W( 1, 5) 0.000000 0.000000
W( 2, 1) 0.000000 0.000000
W( 2, 2) 0.000000 0.000000
W( 2, 3) 1400.000 0.000000
W( 2, 4) 1200.000 0.000000
W( 2, 5) 0.000000 0.000000
W( 3, 1) 0.000000 0.000000
W( 3, 2) 0.000000 0.000000
W( 3, 3) 0.000000 0.000000
W( 3, 4) 0.000000 0.000000
W( 3, 5) 2000.000 0.000000
W( 4, 1) 0.000000 0.000000
W( 4, 2) 0.000000 0.000000
W( 4, 3) 0.000000 0.000000
W( 4, 4) 0.000000 0.000000
W( 4, 5) 700.0000 0.000000
P( 1, 1) 100.0000 0.000000
P( 1, 2) 130.0000 0.000000
P( 1, 3) 90.00000 0.000000
P( 2, 1) 130.0000 0.000000
P( 2, 2) 50.00000 0.000000
P( 2, 3) 140.0000 0.000000
P( 3, 1) 90.00000 0.000000
P( 3, 2) 140.0000 0.000000
P( 3, 3) 50.00000 0.000000
Row Slack or Surplus Dual Price
1 0.000000 -115000.0
2 0.000000 -38000.00
3 0.000000 -160000.0
4 0.000000 -141000.0
5 0.000000 -48000.00
6 3.000000 0.000000
7 1.000000 0.000000
8 0.000000 0.000000
OBJ 149000.0 1.000000
结论:
迁市 A B C D E
甲
乙 1 1
丙 1 1 1
LinGo:疏散问题——线性规划,0-1规划的更多相关文章
- LinGo:装货问题——线性规划,整数规划,1988年美国数模B题
7种规格的包装箱要装有两辆铁路平板车上去,包装箱的宽和高相同,但厚度(t,以cm计)和重量(以kg计)不同, 表A-1给出了每包装箱的厚度.重量和数量,每辆车有10.2m长的地方用来装包装箱(像面包片 ...
- LinGo:投资问题——线性规划
一.根据题目所给数据,建立一张表格方便查看 项目A 项目B 项目C 项目D 可投资年 1,2,3,4 3 2 1,2,3,4,5 收回本利年 次年年末 第5年 第5年 当年年末 本利 1.06 1.1 ...
- Cocos2d-x 3.0 lua规划 真正的现在Android在响应Home密钥和Back纽带
local listenerKey= cc.EventListenerKeyboard:create() local function onKeyReleaseed(keycode,event) if ...
- MATLAB规划问题——线性规划和非线性规划
1.线性规划 求线性规划问题的最优解有两种方法,一种方法是使用linprog命令,另一种是使用optimtool工具箱,下面分别介绍这两种方法. ①linprog命令 一般情况下,Linprog命令的 ...
- HDU 4370 0 or 1 (01规划)【Dijkstra】||【spfa】
<题目链接> 题目大意: 一个n*n的01矩阵,满足以下条件 1.X12+X13+...X1n=12.X1n+X2n+...Xn-1n=13.for each i (1<i<n ...
- Python数模笔记-PuLP库(1)线性规划入门
1.什么是线性规划 线性规划(Linear programming),在线性等式或不等式约束条件下求解线性目标函数的极值问题,常用于解决资源分配.生产调度和混合问题.例如: max fx = 2*x1 ...
- Python小白的数学建模课-03.线性规划
线性规划是很多数模培训讲的第一个算法,算法很简单,思想很深刻. 要通过线性规划问题,理解如何学习数学建模.如何选择编程算法. 『Python小白的数学建模课 @ Youcans』带你从数模小白成为国赛 ...
- Python小白的数学建模课-05.0-1规划
0-1 规划不仅是数模竞赛中的常见题型,也具有重要的现实意义. 双十一促销中网购平台要求二选一,就是互斥的决策问题,可以用 0-1规划建模. 小白学习 0-1 规划,首先要学会识别 0-1规划,学习将 ...
- 千呼万唤始出来:Apache Spark2.0正式发布
我们很荣幸地宣布,自7月26日起Databricks开始提供Apache Spark 2.0的下载,这个版本是基于社区在过去两年的经验总结而成,不但加入了用户喜爱的功能,也修复了之前的痛点. 本文总结 ...
随机推荐
- 《Android开发艺术探索》读书笔记 (7) 第7章 Android动画深入分析
本节和<Android群英传>中的第七章Android动画机制与使用技巧有关系,建议先阅读该章的总结 第7章 Android动画深入分析 7.1 View动画 (1)android动画分为 ...
- (转)PHP数组的总结(很全面啊)
一.什么是数组数组就是一组数据的集合,把一系列数据组织起来,形成一个可操作的整体.数组的每个实体都包含两项:键和值. 二.声明数据在PHP中声明数组的方式主要有两种:一是应用array()函数声明数组 ...
- windows7在局域网中无法映射驱动器问题解决
昨天下班时闲的蛋疼,因电脑比较慢,因此在计算机的[系统配置中]的启动选项下对[启动项目]和[服务]做了误操作,导致在计算机重启之后声卡.显卡.网卡等许多服务禁用,更令人费解的是内网中断了连接,无法访问 ...
- Nginx反向代理配置配置实例
为了节省支出,公司需要将分布在不同机器的站点都迁移到一台机器,而目前不同机器运行的是不同的web服务,部分是nginx,部分是apache,由于牵涉较多rewrite规则,为了节省修改功夫,打算迁移后 ...
- [!] CocoaPods was not able to update the `master` repo...
输入pod install之后出现: [!] CocoaPods was not able to update the `master` repo. If this is an unexpected ...
- linux 进程数
一.linux系统支持的最大进程数 限制1:既然系统使用pid_t表示进程号,那么最大进程数不能超过pid_t类型的最大值吧 限制2:使用命令ulimit -u查看系统中限制的最大进程数,我的机器上是 ...
- mktime性能问题
#include <time.h> int main() { for (int i = 0; i < 100000; ++i) { struct tm tm = {}; tm.tm_ ...
- Git对于单个文件的分批提交方式的使用
很多时候,对于一个大的文件,可能有的同学改完之后不想一次提交,想分批提交.但这个时候由于git add的机制往往add之后就是整个一个文件被放到stage区了,这个时候肯定会想能不能对一个文件可以进行 ...
- jQuery toggle() 方法与实例以及代替方法。
看<jQeury 权威指南>时看到这个toggle()方法.因为之前在慕课网学习接触过.发现两者讲的有细微的不同 以隐藏/显示目标元素效果为例,慕课网是这样讲解的 $("#cli ...
- 9 Palindrome Number(判断是否为回文数Easy)
题目意思:判断是否为回文数,不许使用额外空间 ps:一直不理解额外空间的意思,int能用吗 思路:1.比较头尾 2.翻转,越界问题需考虑 class Solution { public: bool i ...