LINGO:生产计划问题

模型:有瓶颈设备的多级生产计划问题
        某工厂的主要任务是通过组装生产产品 A ,用于满足外部市场需求。产品 A 的构成与组装过程见下图 ,即 D , E , F , G 是从外部采购的零件,先将零件 D , E 组装成部件 B ,零件 F , G 组装成部件 C ,然后将部件 B , C 组装成产品 A 出售。图中连接线上的数字表示的是组装时部件(或产品)中包含的零件(或部件)的数量(可以称为消耗系 数),例如 DB 上数字“ 9 ”表示组装 1 个部件 B 需要用到 9 个零件 D BA 上的数字“5 ”表示组装 1 件产品 A 需要用到 5 个部件 B ;以此类推。
        假设该工厂每次生产计划的计划期为 6 周(即每次制定未来 6 周的生产计划),只有最终产品 A 有外部需求,目前收到的订单的需求件数按周的分布如表 1 2 行所示。部件 B , C 是在该工厂最关键的设备(可以称为瓶颈设备)上组装出来的,瓶颈设备的生产能力非常紧张,具体可供能力如表 1 3 行所示(第 2 周设备检修,不能使用)。 B , C的能力消耗系数分别为 5 8 ,即生产 1 B 需要占用 5 个单位的能力,生产 1 C 需要占用 8 个单位的能力。
        对于每种零部件或产品,如果工厂在某一周订购或者生产该零部件或产品,工厂需要一个与订购或生产数量无关的固定成本(称为生产准备费用);如果某一周结束时该零部件或产品有库存存在,则工厂必须付出一定的库存费用(与库存数量成正比)。这些数据在表 1 5 6 行给出。
                               
表1  生产计划
周次123456
A的外部需求40010009010
瓶颈能力1000005000500010001000
零件编号ABCDEFG
生产准备费用4005001000300200400100

单位库存费用

120.61.00.040.030.040.04
        按照工厂的信誉要求,目前接收的所有订单到期必须全部交货,不能有缺货;此外,不妨简单地假设目前该企业没有任何零部件或产品库存,也不希望第 6 周结束后留下任何零部件或产品库存。最后,假设不考虑生产提前期,即假设当周采购的零件马上就可用于组装,组装出来的部件也可以马上用于当周组装成品 A 。在上述假设和所给数据下,如何制定未来 6 周的生产计划。
表2  符号说明
N
生产项目总数
T
计划期长度
K
瓶颈资源种类数
M
一个充分大的正数,在模型中起到使模型线性化的作用
d_{i,t}
项目 i t 时段的外部需求
X_{i,t}
项目 i t 时段的生产批量
I_{i,t}
项目 i t 时段的库存量
Y_{i,t}
项目 i t 时段是否生产的标志( 0 :不生产, 1 :生产)
S(i)
产品结构中项目 i 的直接后继项目集合
r_{i,j}
产品结构中项目 j 对项目 i 的消耗系数
s_{i,t}
项目 i t 时段生产时的生产准备费用
h_{i,t}
项目 i t 时段的单件库存费用
C_{k,t}
资源 k t 时段的能力上限
a_{k,i,t}
项目 i t 时段生产时,生产单个项目占用资源 k 的能力
        对题目而言,生产项目总数 N = 7 (分别用 1 7 表示项目 A , B , C , D , E , F , G ),计划期长度T = 6 (周),瓶颈资源种类数 K = 1 。只有 A 有外部需求,所以 d_{i,t} 中只有 d_{1,t} 可以取非零需求,即表 1 中的第 2 行的数据,其它 d_{i,t} 全部为零。参数 s_{i,t} h_{i,t} 只与项目 i 有关,而不随时段 t 变化,所以可以略去下标 t ,其数值就是表 1 中的最后两行数据。由于只有一种资源,参数 C_{k,t} 可以略去下标 k ,其数值就是表 1 中的第 3 行的数据;而 a_{k,i,t} 只与项目 i 有关,而不随时段 t 变化,所以可以同时略去下标 k t ,即 a_{2} = 5,  a_{3} = 8 。从图 1 中容易得到项目 i 的直接后继项目集合 S( i) 和消耗系数 r_{i,j}。已知  A 的外部总需求为 240 ,所以任何项目的产量不会超过240× 7 ×15 = 25000 (从图 1 可以知道,这里7 ×15已经是每件产品 A 对任意一个项目的最大的消耗系数了),所以取 M = 25000 足够大。
示例代码:
MODEL: 
TITLE 瓶颈设备的多级生产计划; 
SETS: 
! 定义项目集合PART,包括生产准备费Setup、单件库存成本Hold、对瓶颈资源的消耗系数A; 
PART/A B C D E F G/:Setup,Hold,A; 
! 定义计划期集合TIME,包括瓶颈设备的能力Capacity; 
TIME/1..6/:Capacity; 
! 定义项目结构关系USES,以及项目之间的消耗系数Req; 
USES(PART,PART):Req; 
! 定义项目与时间的派生集合PXT,包括外部需求Demand、产量X(批量)、0/1变量Y、库存Inv; 
PXT(PART,TIME):Demand,X,Y,Inv; 
ENDSETS 
! 目标函数定义:最小化总生产准备费和总单件库存成本; 
[OBJ]Min=@sum(PXT(i,t):setup(i)*Y(i,t)+hold(i)*Inv(i,t)); 
! 物流平衡方程; 
@FOR(PXT(i,t)|t #eq# 1:[Ba0]X(i,t)-Inv(i,t)= 
Demand(i,t)+@SUM(USES(i,j):Req(i,j)*X(j,t))); 
@FOR(PXT(i,t)|t #NE# 1:[Bal]Inv(i,t-1)+X(i,t)-Inv(i,t)= 
Demand(i,t)+@SUM(USES(i,j):Req(i,j)*X(j,t))); 
! 能力约束:确保每个计划期内瓶颈设备的总消耗不超过其能力; 
@FOR(TIME(t):[Cap]@SUM(PART(i):A(i)*X(i,t))<Capacity(t)); 
! 其它约束; 
M = 25000; 
@FOR(PXT(i,t):X(i,t)<=M*Y(i,t)); 
@FOR(PXT:@BIN(Y)); 
DATA: 
Demand=0;Req =0; 
Capacity=10000 0 5000 5000 1000 1000; 
Setup=400 500 1000 300 200 400 100; 
Hold=12 0.6 1.0 0.04 0.03 0.04 0.04; 
A=0 5 8 0 0 0 0; 
ENDDATA 
CALC: 
demand(1,1)=40;demand(1,3)=100; 
demand(1,5)=90;demand(1,6)=10; 
req(2,1)=5;req(3,1)=7;req(4,2)=9; 
req(5,2)=11;req(6,3)=13;req(7,3)=15; 
ENDCALC 
END
运行结果:
可得:
周次123456
A的产量40100100
B的产量2001000
C的产量1055625
D的产量18009000
E的产量220011000
F的产量137158125
G的产量158259375

优化:

用 i = 1,2,...,7 依次表示项目 A, B,C, D, E, F,G

t = 1,2,..., 6 分别表示第 1 周,第 2 周,…,第 6 周;
x_{i,t}项目 i t 时刻的生产批量
y_{i,t}:其为1表示 项目 i 在 在 t 时刻生产,其为0表示 项目 i 在  t 时刻不生产
z_{i,t}项目 i t 时刻的库存量
r_{i,j}项目 j 对项目 i 的消耗系数
s_{i}项目 i 的准备费用
h_{i}项目 i 的单件库存费用
c_{t}:t 时刻资源的能力上限
a_{i}生产单件项目 i 占用资源的能力
d_{t}t 时刻项目 A 的外部需求
N(i)项目 i 的直接后继项目集合
优化代码:
MODEL: 
SETS: 
PART/A B C D E F G/:s,h,a; 
TIME/1..6/:c,d; 
link1(PART,PART):r; 
link2(PART,TIME):x,y,z; 
ENDSETS 
[OBJ]Min=@sum(link2(i,t):s(i)*y(i,t)+h(i)*z(i,t)); 
! 物流平衡方程; 
[ACON0] x(1,1)-z(1,1)=d(1); 
@FOR(time(t)|t #gt# 1:[ACON] z(1,t-1)+x(1,t)-z(1,t)=d(t)); 
@FOR(PART(i)|i#ne#1: 
[NONA0]x(i,1)-z(i,1)=@SUM(part(j):r(i,j)*x(j,1))); 
@FOR(link2(i,t)|i#ne#1 #and# t #ne# 1: 
[NONA] z(i,t-1)+x(i,t)-z(i,t)=@SUM(part(j):r(i,j)*x(j,t))); 
! 能力约束; 
@FOR(TIME(t):[Cap]@SUM(PART(i):a(i)*x(i,t))<c(t)); 
! 其它约束; 
M = 250000; 
@FOR(link2:x<=M*y); @FOR(link2:@BIN(y)); 
DATA: 
r=0; 
d=40 0 100 0 90 10; 
c=10000 0 5000 5000 1000 1000; 
s=400 500 1000 300 200 400 100; 
h=12 0.6 1.0 0.04 0.03 0.04 0.04; 
a=0 5 8 0 0 0 0; 
ENDDATA 
CALC: 
r(2,1)=5;r(3,1)=7;r(4,2)=9;r(5,2)=11;r(6,3)=13;r(7,3)=15; 
ENDCALC 
END

运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/758402.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

看你那样,超出你想像:羊、羊、羊

一、I am me,羊羊羊英文中的 我就是我(I am me),其实就是:羊 羊 羊,为什么会有这么一个结论呢?请往下看:I,就是羊am(是),也是羊me(我),还是羊我就是我,不一样的烟火。其实,我就是我(I am me),没有什么不一样,因为全是羊。二、羊都一样吗?among(在...当中…

斜率优化DP——AcWing 303. 运输小猫

斜率优化DP 定义 斜率优化DP&#xff08;Slope Optimization Dynamic Programming&#xff09;是一种高级动态规划技巧&#xff0c;用于优化具有特定形式的状态转移方程。它主要应用于那些状态转移涉及求极值&#xff08;如最小值或最大值&#xff09;的问题中&#xff0c;通…

c++重载(运算符)

1&#xff09;C入门级小知识&#xff0c;分享给将要学习或者正在学习C开发的同学。 2&#xff09;内容属于原创&#xff0c;若转载&#xff0c;请说明出处。 3&#xff09;提供相关问题有偿答疑和支持。 对于系统的所有操作符&#xff0c;一般情况下&#xff0c;只支持基本数…

ubuntu安装显卡驱动

获取权限 chmod X NVIDlA-Linux-x86_64-550.90.07.run 安装程序 sudo bash NVIDlA-Linux-x86_64-550.90.07.run

告别模糊时代,扫描全能王带来清晰世界

模糊碑文引发的思考 上个月中旬去洛阳拜访了著名的龙门石窟&#xff0c;本就对碑文和文字图画感兴趣的我们&#xff0c;准备好好欣赏一下龙门石窟的历史文化古迹。到了地方之后&#xff0c;我发现石窟的高度和宽度远远超出了想象&#xff0c;正因如此&#xff0c;拍出来的文字…

多多代播24小时值守:电商直播时代是带货爆单的关键

在电商直播盛行的今天&#xff0c;直播带货已成为品牌与消费者沟通的关键。然而&#xff0c;流量波动大&#xff0c;竞争激烈&#xff0c;使品牌面临诸多挑战。因此&#xff0c;许多品牌寻求专业代播服务&#xff0c;并特别强调24小时值守的重要性。 流量来源的不稳定性是一个显…

Spring-循环依赖是如何解决的

1、bean被创建保存到spring容器的过程 1、实例化 -> 获取对象&#xff1b; 2、填充属性&#xff1b;这里可能需要依赖其它的bean。 3、AOP代理对象替换&#xff1b; 4、加入单例池&#xff1b; 问题&#xff1a; 循环依赖怎么处理 ServiceA 中有属性ServiceB b&#…

使用label-studio对OCR数据进行预标注

导读 label-studio作为一款数据标注工具相信大家都不陌生&#xff0c;对于需要进行web数据标注协同来说应该是必备工具了&#xff0c;标注的数据类型很全涉及AI的各个任务(图像、语音、NLP、视频等)&#xff0c;还支持自定义涉及模版。 然而&#xff0c;我们在标注数据的过程…

win11 内存占用过大优化尝试

关闭开机加速 wins打开搜索 控制面板&#xff0c;打开控制面板 找到硬件和声音-电源选项-选择电源按钮的功能-去掉勾选启用快速启动 关闭windows 更新 winr 输入services.msc打开服务-搜索windows 更新-双击打开设置-选择禁用 貌似没什么用。

【Python3的内置函数和使用方法】

目录 Python 特点 Python 中文编码 Python 变量类型 Python列表 Python 元组 元组是另一个数据类型&#xff0c;类似于 List&#xff08;列表&#xff09; Python 字典 Python数据类型转换 Python 运算符 Python算术运算符 Python比较运算符 Python赋值运算符 Pyt…

根据描述表示泥浆密度沿着管路的长度方向在不断变化,如何来表示泥浆密度随管路的变化?

&#x1f3c6;本文收录于《CSDN问答解答》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&…

文件夹内-资源名称前加序号排列

问题&#xff1a;在文件夹下的资源可以按时间排序&#xff0c;导入unity后资源顺序会乱掉&#xff0c;不方便按顺序赋值&#xff0c;为了方便&#xff0c;通过下面方法在文件夹下统一在资源名称前按顺序加上序号 win11在文件夹内右键&#xff0c;选择——在终端中打开 输入&a…

4.SQL注入-xx型

SQL注入-xx型 输入kobe查询&#xff0c;同样展示id和邮箱 xx型的sql语句查询方式&#xff0c;猜测 select 字段1,字段2 from 表名 where username(kobe)在后台语句中的查询 select id,email from member where username(kobe);根据上图构造payload语句为 username(kobe) …

spring-security安全框架(超精细版附带流程讲解图)

目录 一、回顾一下 二、security使用 2.1 覆盖掉默认配置「自定义配置」 2.2 如何自定义认证 2.3 纯纯自定义 2.4 jwt 2.5 官网认证流程 2.6 RBAC模型 4.1. 创建表结构 2.7 如何实现权限流程 一、回顾一下 security干啥的? 认证和授权 使用方式 引入依赖, 基于spri…

【自然资源】国家历史文化名城你知道多少?

【自然资源】国家历史文化名城你知道多少&#xff1f; 中国五千年的历史孕育出了一些因深厚的文化底蕴和发生过重大历史事件而青史留名的城市。根据《中华人民共和国文物保护法》&#xff0c;“历史文化名城”是指保存文物特别丰富&#xff0c;具有重大历史文化价值和革命意义…

小红书多账号管理平台哪个好用?可以快速监测多个小红书账号的数据吗?

随着品牌营销战线的不断扩展&#xff0c;小红书已经成为企业和个人品牌竞相展示的舞台。但是&#xff0c;随之而来的多账号管理问题也让众多运营者头疼不已。一个优秀的多账号管理平台&#xff0c;能让你事半功倍&#xff0c;轻松监控和分析账号数据。 如今&#xff0c;市面上出…

昇思25天学习打卡营第12天 | ResNet50图像分类

内容介绍&#xff1a; ResNet50网络是2015年由微软实验室的何恺明提出&#xff0c;获得ILSVRC2015图像分类竞赛第一名。在ResNet网络提出之前&#xff0c;传统的卷积神经网络都是将一系列的卷积层和池化层堆叠得到的&#xff0c;但当网络堆叠到一定深度时&#xff0c;就会出现…

NPOI入门指南:轻松操作Excel文件的.NET库

目录 引言 一、NPOI概述 二、NPOI的主要用途 三、安装NPOI库 四、NPOI基本使用 六、性能优化和内存管理 七、常见问题与解决方案 八、结论 附录 引言 Excel文件作为数据处理的重要工具&#xff0c;广泛应用于各种场景。然而&#xff0c;在没有安装Microsoft Office的…

JavaScript面试宝典

栈和堆的区别 栈(stack)&#xff1a; 栈是内存的简称&#xff0c;栈是自动分配相对固定大小的内存空间&#xff0c;并由系统自动释放&#xff0c;栈数据结构遵循FILO&#xff08;first in last out&#xff09;先进后出的原则。 堆(heap)&#xff1a; 是堆内存的简称&#xff…

【杂说咋说】中国历史上最古老的十大建筑​,看看你都去过几个?

【杂说咋说】中国历史上最古老的十大建筑​&#xff0c;看看你都去过几个&#xff1f; 中国作为世界四大文明古国之一&#xff0c;历史文化源远流长。在几千年的历史变迁中&#xff0c;中华先祖在神州大地上留下了无数遗迹&#xff0c;其中包括很多古建筑。本期就来介绍一下中…