排产排程问题【数学规划的应用(含代码)】阿里达摩院MindOpt

news2024/12/23 11:51:33

本文主要讲述使用MindOpt工具优化排产排程的数学规划问题。
视频讲解👈👈👈👈👈👈👈👈👈

一、排产排程问题

vcg_VCG41N1057277428_RF.jpg
在实际生产过程中存在着各种各样的排产排程问题,如物料流动、工序安排、设备调度及员工分配等方面。在设备调度场景,我们可以控制任务的分配,将其分配给机器设备进行处理。根据任务特点、设备能力等约束条件,可以合理地分配任务,实现设备利用率、生产效率的最大化。

二、数学规划

排产排程问题也可以使用数学规划的方法。数学规划是一种数学优化方法,主要是寻找变量的取值在特定的约束情况下使我们的决策目标得到一个最大或最小值的决策。常见规划方法有线性规划、整数规划还有非线性规划。
工具:
MindOpt优化求解器:帮我们求解大规模数据的数学规划问题。

三、排产排程问题案例

huagai_VCG41582256640_RF_2M.jpg
该案例的目的在于最大化工厂的利润,约束是当月投入生产的原材料加上生产剩余的原材料不超过当月购买的原材料数量,这也符合生活常识逻辑。但在实际生活中,问题往往更加复杂。假设有一个香皂制造工厂,要求对未来半年内的香皂的生产和油脂的采买制定计划。
在这个问题中,我们需要考虑以下四点因素。
第一,油脂需要储存。每月生产香皂可能会有油脂的剩余,因此我们需要考虑剩余原材料的储存问题。
第二,制作香皂的油脂种类繁多。
第三,每月各种油脂的采购价格不完全相同,这会导致每个月采购成本的浮动。
第四,每种油脂每月使用量有限制,该因素用于模拟工厂的工作效率。
在确定问题的因素后,我们需要对其进行数学建模。将数学建模转化为代码,转化过程中需要使用一些工具,采用的是阿里巴巴达摩院的MindOpt,可以使用浏览器在MindOpt的云平台上访问。编程代码使用的是MindOpt APL建模语言,它可以直接调用MindOpt solve求解器。

四、代码解析

vcg_VCG41184279672_RF.jpg
使用工具:

  • MindOpt Studio 云建模平台**,**在线开发调试,免下载
  • MindOpt APL(MAPL)建模语言编程**,**代数建模语言,语法与数学公式相近

1.声明变量

image.png
变量xjmn表示工厂在第m个月对油脂j的购买、使用和储存计划;
变量ym表示在第m个月对香皂的生产计划;

2.声明集合、参数

image.png
o是定义油脂的集合,01表示植物油脂,02表示动物油脂,共有五种油脂;
M是月份集合;N表示“购买”“使用”“储存”计划。

image.png
声明的参数是每个月油脂采购的价格,即成本价格。
hardness是油脂的硬度,r是的销售单价,b1、b2是动物油脂和植物油脂采购的下限和上限,l、u是香皂的下限和上限,s是初始的油脂储存量,d是付出储存成本的单价。

3.声明目标

image.png
即需要最大化工厂的利润,并确定数学公式。查看代码,r是香皂的销售单价,y(m)是生产计划,即生产的香皂量以及销售量,计算得到盈利情况。j油脂在第m月的采购成本(cost[j,m])乘以其该月的购买计划(x[j,m,"Buy"])得到采购成本,储存一吨油脂所付出的单价(d)乘以的j油脂在该月的储存计划(x[j,m,"Store"])得到储存成本。盈利情况减上述两项成本得到利润,最后得到利润的最大化。

4.声明约束

image.png
第一条约束,方便问题计算使得每个月的油脂使用量等于生产计划,如生产计划是生产一吨香皂,则使用一吨油脂。
forall是MindOpt语法中的方法,主要用于快速声明约束,循环集合。这里循环集合是月份集合M,并使得第m个月的使用计划等于生产计划y(m)。

image.png
第二条约束和第三条约束的是为了把控生产产品时产品的规格,这里是指香皂的硬度,在生产零件的案例中,可能约束的是形状等等。
油脂的硬度(hardness[j])乘以油脂在第m个月的使用计划(x[j,m,"Use"])组成了香皂的生产过程,l是香皂的下限,u是香皂的上限。例如,第1个月购使用第1种油脂(VEG1),油脂的硬度为8,相乘得到第一个月的产量,需要等于第1个月的生成计划。

image.png
第三条约束为限制油脂的购买量,主要用于模拟香皂生产的效率,即j油脂在第m个月的使用量小于等于b1和b2,b1和b2分别表示是植物油脂和动物油脂的购买数量。

image.png
第四条约束是考虑到生活逻辑。除一月之外,其他月有初始原材料的储存。初始储存数量(s)加j油脂在一月的采购计划等于j油脂在一月的使用计划加储存计划,即上个月的储存量加上本月的购买量的总和等于本月的使用量加储存到下月的原材料数量。

image.png
最后一条约束用于控制原材料的储存成本,考虑到仓库储存的情况,
既不能使仓库有过多空余,也不能造成仓库的积压,因此需要使用约束条件固定储存的数量,使得j油脂第6个月的储存计划等于1月初的初始储存数量。

5.结果解析

image.pngimage.png
从上图(部分结果)可以看到第一种植物油脂在一月份的购买情况是0,使用计划是100吨,储存计划是400吨;二月份购买计划是0,使用计划是200吨,储存计划是200吨。各月的生产计划均为450吨,最大利润(最终目标)是108250。

五、总结

本期主要是讲述了排场排程的问题,并以制作香皂的工厂为例进行了说明。案例中,工厂要求对其未来半年内的生产以及采购定制定计划,并最大化工厂的利润。
求解问题使用的工具,是使用的是阿里巴巴达摩院的MindOpt,可以在opt.aliyun.com平台上编写代码,编程代码的语言MAPL。

获取源代码
image.png
排产排程【系列】-MindOpt Studio

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据分析】Pandas_DataFrame读写详解:案例解析(第24天)

系列文章目录 一、 读写文件数据 二、df查询数据操作 三、df增加列操作 四、df删除行列操作 五、df数据去重操作 六、df数据修改操作 文章目录 系列文章目录前言一、 读写文件数据1.1 读写excel文件1.2 读写csv文件1.3 读写mysql数据库 二、df查询数据操作2.1 查询df子集基本方…

移动UI: 什么特征会被认为是简洁风格,用案例告诉你

什么是简洁风格,恐怕一百个人有一百个是理解,本文通过理论分析案例的方式进行探讨。 移动 UI 中的简洁风格通常具有以下几个特征: 1. 平面化设计: 简洁风格的移动 UI 善于运用平面化设计,即去除过多的阴影、渐变和立…

一家互联网 Web3 研发团队繁忙的一天

早晨:规划与准备 7:00 AM - 起床与新闻 Web3研发团队的成员们早起,通过区块链相关的新闻网站、论坛和社交媒体,了解最新的行业动态和技术发展。重点关注去中心化金融(DeFi)、NFT、DAO等领域的最新进展。 8:00 AM - …

Java | Leetcode Java题解之第219题存在重复元素II

题目&#xff1a; 题解&#xff1a; class Solution {public boolean containsNearbyDuplicate(int[] nums, int k) {Set<Integer> set new HashSet<Integer>();int length nums.length;for (int i 0; i < length; i) {if (i > k) {set.remove(nums[i - …

✅深入理解InnoDB中的页分裂与页合并

想要了解什么是页分裂&#xff0c;页合并&#xff0c;那么就要想知道 InnoDB 中的数据页是什么。 InnoDB 的数据页 InnoDB 的数据页是存储引擎中用于保存数据的基本单位。每个数据页是磁盘上的一个连续区域&#xff0c;通常大小为 16KB&#xff0c;当然&#xff0c;这个大小可…

map和set的原理、优劣势、应用场景和示例代码,统统告诉你。

map和set的原理都是基于哈希表实现的&#xff0c;通过哈希值来快速查找和插入元素&#xff0c;从而实现高效的数据存储和管理&#xff0c;那么他们之间有什么不同呢&#xff0c;该如何选择&#xff0c;本文带你了解。 一、map和set的原理 map和set都是数据结构&#xff0c;用…

新浪API系列:微博API探索社交数据价值(1)

微博API为创作者和开发者提供了一个探索社交数据价值的宝贵机会&#xff0c;助力他们在创新发展中取得成功。通过微博API&#xff0c;用户可以轻松访问和获取微博平台上丰富的社交数据。这些数据包括用户信息、关注列表、粉丝互动等&#xff0c;为创作者和开发者提供了深入了解…

基于CesiumJs的可视化大屏,效果不是一般的震撼。

CesiumJS是一个用于创建三维地理信息系统&#xff08;GIS&#xff09;应用程序的开源JavaScript库。它提供了强大的地理空间数据可视化和交互功能&#xff0c;可以用于构建虚拟地球、地图、飞行模拟等应用。 1. 三维地理空间可视化&#xff1a; CesiumJS支持将地理空间数据以三…

【紫外线发光器件小结】 UV-B LED 308nm

之前有介绍光的波长和频率计算。 波长小于390nm,频率高于770太赫兹的电磁波忙&#xff0c;或者光。基本有一段就叫做紫外线。 紫外线有分为UV-A/B/C;三小段&#xff1b; 如下图&#xff1a; 高压汞灯与UV LED的光谱&#xff1b;黑色线汞灯&#xff0c;蓝色LED

CentOS 安装 annie/lux,以及 annie/lux 的使用

annie 介绍 如果第一次听到 annie 想必都会觉得陌生&#xff0c;annie 被大家称为视频下载神器&#xff0c;annie 作者介绍说可以下载抖音、哔哩哔哩、优酷、爱奇艺、芒果TV、YouTube、Tumblr、Vimeo 等平台的视频。 githup&#xff1a;https://github.com/pingf/annie 支持…

HTML5实现我的音乐网站源码

文章目录 作者&#xff1a;[xcLeigh](https://blog.csdn.net/weixin_43151418) 1.设计来源1.1 界面效果1.2 轮播图界面1.3 音乐播放界面1.4 视频播放界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作…

Spark 分布式弹性计算集(RDD)相关概念介绍

目录 一、概述 二、RDD的核心概念 2.1 Partition 2.2 Partitioner 2.3 RDD的依赖关系 2.4 Stage 2.5 PreferredLocation 2.6 CheckPoint 三、RDD的持久化 3.1 概述 3.2 概念 3.3 RDD持久化级别 3.3.1 MEMORY_ONLY 3.3.2 MEMORY_AND_DISK 3.3.3 MEMORY_ONLY_SER …

份及恢复Sonarqube服务数据

基础数据&#xff1a; 源数据机ip&#xff1a;192.*.53 测试机ip&#xff1a;192.*.65 Sonarqube访问地址&#xff1a;http://192.*.65:9000/ 账户名&#xff1a;admin 密码&#xff1a;123456 数据库postgres&#xff1a; 版本&#xff1a;PostgreSQL 15.3 一、数据备份…

不同层数PCB如何选择合适板厚?

在回答这个问题前&#xff0c;我们首先需要了解什么是PCB厚度。 PCB厚度是指电路板完成后的厚度。 覆铜板的厚度&#xff1a;0.5、0.7、0.8、1.0、1.2、1.5、1.6、2.0、2.4、3.2和6.4毫米。 纸基覆铜板的标称厚度为 0.7 至 1.5 毫米。让我们开始了解更多细节。 标准 PCB 铜厚度…

2014-2022年审计师能力与专长

审计师在确保企业财务透明度和增强市场信心方面扮演着关键角色。以下是对审计师能力与专长数据的介绍&#xff1a; 数据简介 定义&#xff1a;审计师是独立、客观、合法地对组织进行财务状况、经营绩效和风险水平评估的专业人员。目的&#xff1a;通过收集和评估证据&#xf…

数据库开发:mysql基础一

文章目录 数据库开发Day15&#xff1a;MySQL基础&#xff08;一&#xff09;一、MySQL介绍与安装【1】MySQL介绍&#xff08;5&#xff09;启动MySQL服务&#xff08;6&#xff09;修改root登陆密码 二、SQL简介三、数据库操作四、数据表操作4.1、数据库数据类型4.2、创建数据表…

pnpm介绍

PNPM 是一个 JavaScript 包管理器&#xff0c;类似于 npm 和 Yarn。它的全称是 "Performant npm"&#xff0c;主要设计目标是优化包的安装和管理过程&#xff0c;以提升速度和效率。PNPM 的主要特点包括&#xff1a; 符号链接&#xff08;Symlink&#xff09;&#x…

【SOLID原则前端中的应用】接口隔离原则(Interface Segregation Principle,ISP)- vue3示例

接口隔离原则&#xff08;Interface Segregation Principle&#xff0c;ISP&#xff09;在Vue 3中的应用 接口隔离原则&#xff08;Interface Segregation Principle&#xff0c;ISP&#xff09;规定&#xff0c;客户端不应该被迫依赖于它不使用的方法。 换句话说&#xff0c;…

【Python】已解决:SyntaxError: positional argument follows keyword argument

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;SyntaxError: positional argument follows keyword argument 一、分析问题背景 在Python编程中&#xff0c;当我们在调用函数时混合使用位置参数&#xff08;p…

运维必会 掌握 Vim:从入门到精通

前言 Vim 是一个强大的文本编辑器&#xff0c;以其高效的编辑操作和强大的可定制性著称。无论你是编程新手还是经验丰富的开发者&#xff0c;Vim 都能帮助你提高工作效率。本文将带你深入了解 Vim&#xff0c;从基本操作到高级配置&#xff0c;逐步掌握。 一、基本操作 1. 模…