贴吧里看到的题,稍微做了一下,虽然建的是MILP模型,但奇怪的是电脑运了一宿还是Feasible状态得不出Gobal optimal的结果,开了两个版本的LINGO 11和17 算了23小时,结果一直是318不变,感觉最优解就是318,可能是某项约束太宽了或者维数太大了,整数线性模型LINGO都算的很慢,这也不算是严格的旅行商模型吧,我在模型里并没有加TSP约束,因为从题目中看不出来要求小车是每天都回到基地的,仅要求2个供应商满足6个市场的需求即可。有知道的可以评论告诉我下。
题目的意思我整理了下,供应商1和2每天制造固定的商品(Production),满足S1-S6每天对应的需求(Needs),剩余的商品可以遗留到下一天使用,最后对每天的路线进行规划配送(线路上的数字代表成本)最优配送成本(Cost)。
6天、8个地点(2个基地,6个市场)、2台小车依次进行物流配送;
设:
xnjki1={10小车1第i天第n次从j地去往k地elsexnjki2={10小车2第i天第n次从j地去往k地elsex_{njk}^{i1}=\left\{ \begin{array}{c} 1\\ 0\\ \end{array} \right. \begin{array}{c} \text{小车}1\text{第}i\text{天第}n\text{次从}j\text{地去往}k\text{地}\\ \text{else}\\ \end{array} \\ x_{njk}^{i2}=\left\{ \begin{array}{c} 1\\ 0\\ \end{array} \right. \begin{array}{c} \text{小车}2\text{第}i\text{天第}n\text{次从}j\text{地去往}k\text{地}\\ \text{else}\\ \end{array} xnjki1​={10​小车1第i天第n次从j地去往k地else​xnjki2​={10​小车2第i天第n次从j地去往k地else​
我们设P1为7地,P2为8地;每天小车1都从P1出发,小车2都从P2出发:
∑k=18x17ki1=∑k=18x18ki2=1\sum_{k=1}^8{x_{17k}^{i1}}=\sum_{k=1}^8{x_{18k}^{i2}}=1 k=1∑8​x17ki1​=k=1∑8​x18ki2​=1
每次决策只有一个,只能走相邻,并且连续:
∑k=18xnjki1=∑k=18xnkji+11∑k=18xnjki2=∑k=18xnkji+12xnjki1+dij⩽2xnjki2+dij⩽2dij={12相邻不相邻\sum_{k=1}^8{x_{njk}^{i1}}=\sum_{k=1}^8{x_{nkj}^{i+1 1}}\,\,\begin{matrix} & \\ \end{matrix}\,\,\sum_{k=1}^8{x_{njk}^{i2}}=\sum_{k=1}^8{x_{nkj}^{i+1 2}} \\ \begin{matrix} & \\ \end{matrix} \\ x_{njk}^{i1}+d_{ij}\leqslant 2\begin{matrix} & \\ \end{matrix}x_{njk}^{i2}+d_{ij}\leqslant 2\begin{matrix} & \\ \end{matrix}d_{ij}=\left\{ \begin{array}{c} 1\\ 2\\ \end{array} \right. \begin{array}{c} \text{相邻}\\ \text{不相邻}\\ \end{array} \\ k=1∑8​xnjki1​=k=1∑8​xnkji+11​​​k=1∑8​xnjki2​=k=1∑8​xnkji+12​​​xnjki1​+dij​⩽2​​xnjki2​+dij​⩽2​​dij​={12​相邻不相邻​
设置两个0-1变量zij1zij2\begin{matrix}z_{ij}^{1}&z_{ij}^{2}\end{matrix}zij1​​zij2​​表示小车1、21、21、2是否到达第iii天jjj地,和正整数变量qij1qij2\begin{matrix}q_{ij}^{1}&q_{ij}^{2}\\\end{matrix}qij1​​qij2​​表示小车1/2第iii天对jjj地的供给,满足需求约束:
qij1⩽100zij1qij2⩽100zij2qij1+qij2=Needsij\\ \begin{matrix} q_{ij}^{1}\leqslant 100z_{ij}^{1}& q_{ij}^{2}\leqslant 100z_{ij}^{2}\\ \end{matrix} \\ \begin{matrix} & \\ \end{matrix} \\ q_{ij}^{1}+q_{ij}^{2}=Needs_{ij} qij1​⩽100zij1​​qij2​⩽100zij2​​​​qij1​+qij2​=Needsij​
最后我们对剩余量(Residual)加到下一天的剩余量当中:
Pri1=Pi1+ri1Pri2=Pi2+ri2ri+11=Pri1−∑j=18qij1ri+12=Pri2−∑j=18qij2\begin{matrix} Pr_{i}^{1}=P_{i}^{1}+r_{i}^{1}& Pr_{i}^{2}=P_{i}^{2}+r_{i}^{2}\\ \end{matrix}\,\, \\ \begin{matrix} & \\ \end{matrix} \\ \begin{matrix} r_{i+1}^{1}=Pr_{i}^{1}-\sum_{j=1}^8{q_{ij}^{1}}& r_{i+1}^{2}=Pr_{i}^{2}-\sum_{j=1}^8{q_{ij}^{2}}\\ \end{matrix} \\ Pri1​=Pi1​+ri1​​Pri2​=Pi2​+ri2​​​​ri+11​=Pri1​−∑j=18​qij1​​ri+12​=Pri2​−∑j=18​qij2​​
最后总的最小化目标函数就是一周配送成本最小化:
min⁡=∑i=16∑n=18∑j=18∑k=18∑q=12costijxnjkiq\min =\sum_{i=1}^6{\sum_{n=1}^8{\sum_{j=1}^8{\sum_{k=1}^8{\sum_{q=1}^2{cost_{ij}x_{njk}^{iq}}}}}} min=i=1∑6​n=1∑8​j=1∑8​k=1∑8​q=1∑2​costij​xnjkiq​
将已知数据整理好就可以建立LINGO模型进行求解了。

代码附在这里:

model:
sets:
a1/1…8/;
a2/1…6/:r1,r2,P1,P2,Pr1,Pr2,Pcost1,Pcost2;
a3(a2,a1,a1,a1):x,y;
a4(a2,a1,a1);
a5(a2,a1):q1,q2,z1,z2,Needs;
a6(a1,a1):d,cost;
a7(a1,a1,a1);
endsets
@for(a3(i,n,j,k):@bin(x(i,n,j,k)));
@for(a3(i,n,j,k):@bin(y(i,n,j,k)));!0-1constraint;
@for(a5(i,j):@bin(z1(i,j)));
@for(a5(i,j):@bin(z2(i,j)));
@for(a3(i,n,j,k):x(i,n,j,k)+d(j,k)<=2);
@for(a3(i,n,j,k):y(i,n,j,k)+d(j,k)<=2);!dist constraint;
@for(a4(i,n,k)|n#lt#8:@sum(a1(j):x(i,n+1,k,j)-x(i,n,j,k))=0);
@for(a4(i,n,k)|n#lt#8:@sum(a1(j):y(i,n+1,k,j)-y(i,n,j,k))=0);!continous constraint;
@for(a5(i,n):@sum(a6(j,k):x(i,n,j,k))=1);!decision only;
@for(a5(i,n):@sum(a6(j,k):y(i,n,j,k))=1);
@for(a5(i,j):z1(i,j)<=@sum(a6(n,k):x(i,n,k,j)));!reach if;
@for(a5(i,j):z2(i,j)<=@sum(a6(n,k):y(i,n,k,j)));
@for(a5(i,j):q1(i,j)<=64z1(i,j));!supply quantity;
@for(a5(i,j):q2(i,j)<=64
z2(i,j));!supply quantity;
@for(a5(i,j):@gin(q1(i,j)));
@for(a5(i,j):@gin(q2(i,j)));
@for(a2(i):P1(i)=Pr1(i)+r1(i));
@for(a2(i):P2(i)=Pr2(i)+r2(i));
@for(a2(i)|i#lt#6:r1(i+1)=P1(i)-@sum(a2(j):q1(i,j)));!residual calc;
@for(a2(i)|i#lt#6:r2(i+1)=P2(i)-@sum(a2(j):q2(i,j)));!residual calc;
r1(1)=0;
r2(1)=0;
@for(a5(i,j):q1(i,j)+q2(i,j)=Needs(i,j));
@for(a2(i):@sum(a1(j):x(i,1,7,j))=1);
@for(a2(i):@sum(a1(j):y(i,1,8,j))=1);
@for(a2(i):Pcost1(i)=@sum(a7(n,j,k):x(i,n,j,k)*cost(j,k)));
@for(a2(i):Pcost2(i)=@sum(a7(n,j,k):y(i,n,j,k)*cost(j,k)));
min=@sum(a2(i):Pcost1(i)+Pcost2(i));
data:
@text()=@writefor(a3(i,n,j,k)|x(i,n,j,k)#eq#1 :‘供应商1第’,i,‘天第’,n,‘次从’,j,‘地去往’,k,‘地’,@newline(1));
@text()=@writefor(a3(i,n,j,k)|y(i,n,j,k)#eq#1 :‘供应商2第’,i,‘天第’,n,‘次从’,j,‘地去往’,k,‘地’,@newline(1));
@text()=@writefor(a5(i,j)|z1(i,j)#eq#1:‘供应商1第’,i,‘天在’,j,‘地提供’,q1(i,j),‘物资’,@newline(1));
@text()=@writefor(a5(i,j)|z2(i,j)#eq#1:‘供应商2第’,i,‘天在’,j,‘地提供’,q2(i,j),‘物资’,@newline(1));
d=
1 1 1 2 2 2 1 2
1 1 2 1 2 2 1 1
1 2 1 1 2 1 2 2
2 1 1 1 2 1 2 1
2 2 2 2 1 1 2 1
2 2 1 1 1 1 2 2
1 1 2 2 2 2 1 2
2 1 2 1 1 2 2 1;
Needs=
50 40 38 23 34 22 0 0
60 44 38 23 34 23 0 0
59 43 45 19 32 34 0 0
64 44 38 23 34 23 0 0
34 43 45 29 32 34 0 0
50 23 28 23 34 22 0 0;
Pr1=200 232 234 235 190 180;
Pr2=59 56 55 67 78 45;
cost=
0 18 8 2 2 2 14 2
18 0 2 9 2 2 10 15
8 2 0 8 2 13 2 2
2 9 8 0 2 10 2 11
2 2 2 2 0 9 2 8
2 2 13 10 9 0 2 2
14 10 2 2 2 2 0 2
2 15 2 11 8 2 2 0;
enddata

LINGO小练习——物流配送问题——混合整数规划模型MILP相关推荐

  1. 流水车间调度问题混合整数规划模型

    流水车间调度问题(FSP)描述为:有n个独立的工件按照相同的工艺路线在m台机器伤加工,每个工件需要经过m道工序,这些工序分别要求不同的机器,并且各工序的加工过程不能中断. 以最大完工时间为目标的流水车 ...

  2. CPLEX求解混合整数规划模型

    在CPLEX中,对于混合整数规划模型的求解是其核心功能之一,因此我们对相关CPLEX的示例程序进行了深入的了解.如下: using System; using System.Collections.G ...

  3. 任务车间调度问题的混合整数规划模型

    任务车间调度问题的混合整数规划模型 文献[1]的7.3节讲了一个任务车间调度问题. 一个车间生产套印纸张,分别套印蓝绿黄三种颜色.三种纸张根据需求分别在蓝.绿.黄三个机器上印刷,印刷时间如下表:   ...

  4. 混合整数规划(MILP)通过修改目标函数提高运算速度by Gurobi

    文章目录 问题描述 参数说明![在这里插入图片描述](https://img-blog.csdnimg.cn/9a427d9c20974814b493b0ea38f77479.png) 模型对比 错误 ...

  5. 数学规划模型(三):整数规划模型

    整数规划模型 整数规划模型的基本知识 指派问题 整数规划建模示例 整数规划模型的基本知识 线性规划模型的决策变量取值可以是任意非负实数,但许多实际问题的建模中,只有当决策变量的取值为整数时才有意义.例 ...

  6. 发达国家和地区物流配送方式的比较与借鉴 (zt)

    党的十六届三中全会确立了"发展电子商务.连锁经营.物流配送等现代流通方式,促进商品和各种要素在全国范围自由流动和充分竞争"的市场建设方针,其中物流配送作为一种专业化.社会化的服务模 ...

  7. 【物流配送的车辆路径问题】

    物流配送的车辆路径问题 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 Two-echelon capacitated vehicle routing problem with gr ...

  8. 物流配送和算法文献综述

    物流配送和算法文献综述 小编:这里给大家介绍一篇物流配送的英文综述 链接:https://doi.org/10.1007/s12351-020-00600-7 文章目录 物流配送和算法文献综述 摘要 ...

  9. 物流配送系统设计java,ZigBee物流配送系统设计

    目前生产系统的物流配送大部分仍处于较落后的状态,使用单位有物料需求时通过电话或邮件与配送单位进行沟通,这种方式存在沟通不及时和缺少数据记录的缺陷.在出现缺料问题时造成无法追究问题的责任单位,容易出现推 ...

最新文章

  1. 剑指offer_第16题_合并两个排序的链表_Python
  2. 浅谈 DML、DDL、DCL的区别
  3. 手机浏览器无法获取COOKIE的原因
  4. 入职阿里啦!docker-e命令参数
  5. 使用jquery的blockui插件显示弹出层
  6. cookies的存值问题
  7. MyBatis-DynamicSQL IF判断
  8. Hive数据据类型 DDL DML
  9. 不支持给定路径的格式_申论写作标准格式汇总,考前一定要看!
  10. 以字型为例,一维表示的二维数组矩阵,旋转90、-90
  11. HTML+JS好例子集锦
  12. 对于DEMATEL法的部分理解
  13. spring-boot java.lang.ClassNotFoundException: org.thymeleaf.spring5.ISpringTemplateEngine
  14. 银行登录页面html代码,银行管理系统(带界面)
  15. 宝塔面板+PM2布署nodejs
  16. macbook重装系统 选择方案_Mac 重装系统
  17. oppo系统工程师暑期实习生面经(已OC)
  18. (十一) ELK快速入门
  19. 程序员专不专业,这些词汇拼写一看便知!
  20. c语言常量指数的正确表示,c语言常量的正确表示方法有哪些

热门文章

  1. linux 编译链接库:-lz -lrt -lm -lc
  2. 前端 地图增加边框线_地图省份边框设置borderWidth之后粗细不一致的问题...
  3. 如何打开sln文件并显示窗口_在.sln文件中设置Visual Studio默认启动项目的简单方法...
  4. 自制简易Spring IoC容器
  5. 三国杀online网页版服务器更新,[OL][公告]《三国杀online》2月28日版本更新公告
  6. 数字转换为数组 / 字符串转数字
  7. 【愚公系列】2023年04月 .NET CORE工具案例-二维码生成器QRCoder
  8. 符合语言习惯的 Python 优雅编程技巧
  9. 计算机技术对特殊儿童的好处坏处,对特殊儿童计算机技术教育探析.doc
  10. 【GAMES201学习笔记】00 - Taichi三维可视化 - Taichi_THREE