生产调度:flowshop问题数学建模

接上一篇文章,在了解生产调度问题的背景和基本概念之后,我想先从比较基础的 flowshop和 jobshop 数学模型入手,理解实际调度过程中的问题求解思路。这一篇文章主要面向 flowshop 问题进行数学建模,对于这类比较经典的问题,其实已经有很多现成的模型和求解思路了。我也在网上进行了搜索,看到了3种模型形式,本篇文章将进行列举及描述。

问题描述

n 个工件在 m 台机器上进行流水加工,每个工件在机器上的加工顺序相同。并且每个工件在同一台机器上只加工一次,每台机器在某个时刻只能加工一个工件。各工件在各机器上的加工时间和准备时间已知,求某个调度方案使得调度目标最优。

模型形式1

来自chatgpt的回复。

变量:

·pij:作业 i 在机器 j 上的加工时间。
·决策变量xijk:0-1变量,表示作业 i 是否在时间段 k 被安排在机器 j 上。
·Ci:作业 i 的完工时间。
·Cmax:最大完工时间。

目标函数:

Minimize Cmax

约束条件:

1、每个作业在每台机器上只能被加工一次:
在这里插入图片描述
2、每台机器在任意时间只能加工一个作业:
在这里插入图片描述
3、确保作业 i 在机器 j 上的完工时间大于等于其在机器 j-1上的完工时间加上加工时间:
在这里插入图片描述
4、确保作业 i 在机器 j 上的完工时间大于等于其前一个作业在同一机器上的完工时间加上加工时间:
在这里插入图片描述
5、最小化最大完工时间:
在这里插入图片描述

模型形式2

来自阿里云开发者社区。

变量:

·xij:工件 i 比工件 j 先加工时取1;否则取0。
·pim:工件 i 需要在机器 m 上的加工时间。
·smi:工件 i 在机器 m 上开始加工的时间。
·Cmax:最大完工时间,即makespan。

目标函数:

min Cmax

约束条件:

1、工件 i 比工件 j 先加工,则工件 j 必然比工件 i 后加工。即xij=1时xji=0,反之亦然。
在这里插入图片描述
2、若工件 i 比工件 j 先加工,则在任何机器上工件 j 的开始时间都不早于工件 i 的结束时间(用 Z 表示某一“足够大”的正实数)。
在这里插入图片描述

3、工件在后一机器上的开始时间不得早于前一机器上的结束时间。
在这里插入图片描述

4、最大完工时间定义。
在这里插入图片描述

5、变量的取值范围。
在这里插入图片描述

完整表达如下:

在这里插入图片描述

模型形式3

来自“运筹优化与数据科学”公众号。

变量:

·Xji:表示工件 j 被安排在位置i。
·Srj:表示机器 r 上第 i 个工序的开始加工时间。
·Trj:表示机器 r 加工工件 j 需要的时间。

目标函数:

最小化所有工件在最后一台机器上的完工时间(其实我并没有理解这里的表达式,有待后续深入
在这里插入图片描述

约束条件:

1、一个工件位置只有一台机器。
在这里插入图片描述

2、一台机器上只能安排一个工件位置。
在这里插入图片描述

3、第一台机器第一个工件的开始时间为0。
在这里插入图片描述

4、在第一台机器上,一个工件的开始时间等于上一个工件的完成时间。
在这里插入图片描述

5、在第 r+1 台机器上,第一个工件开始的时间等于第 r 台机器第一个工件的完成时间。
在这里插入图片描述
6&7、机器上某个工件开始的时间为 max{当前机器上一个工件的完成时间,上一个机器当前工件的完成时间}。
在这里插入图片描述
8、决策变量为0-1变量,Xji=1表示工件 j 被安排在位置 i。
在这里插入图片描述

9、机器 r 上第 i 个工件的开始加工时间为非负值。
在这里插入图片描述

总结

通过梳理这3种模型形式,我发现第2种形式是更为简洁的。对于flowshop问题来说,工件加工的机器顺序已经确定,就是要求解一组工件的先后顺序,从决策变量定义上看模型形式2更切中要害、易于理解。

参考资料

[1] 面对Flow-shop调度问题如何优化?可用MindOpt来决策
[2] 利用Pyhton+Gurobi求解置换Flowshop问题入门

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

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

相关文章

2007-2022年 国内各上市公司绿色化转型数据.(Excel文件、dta文件、参考文献、计算方法与说明)

上市公司绿色化转型数据为研究者提供了评估企业在生态文明建设、循环经济和绿色管理方面表现的重要视角。以下是对中国各上市公司绿色化转型数据的介绍: 数据简介 定义:上市公司绿色化转型是指企业在发展模式上向可持续发展转变,实现资源节…

成人高考报名条件及收费标准详解

成人高考报名条件及收费标准详解 您想通过成人高考改变自己的命运,但不知道报名条件和收费标准?本文将为您详细介绍成人高考报名条件和收费标准,并为您提供专业的成人教育服务。 深圳成人高考www.shenzhixun.com 成人高考报名条件 成人高考…

Amazon Bedrock 常用权限分类详解

Amazon Bedrock 是 AWS 提供的一项托管服务,它允许开发者通过 API 轻松访问各种基础模型(FMs)。为了确保安全和合规,Bedrock 提供了细粒度的权限控制。本文将详细介绍 Bedrock 常用的权限分类,并提供相应的 JSON 示例。 1. 基本访问权限 1.1 列出模型权限 允许用户列出…

CH11_JS的多重循环

第11章:Javascript的多重循环 本章目标 掌握二重循环的使用 掌握二重循环的控制语句的使用 课程回顾 循环控制有那几种方式 讲解内容 1. 回顾练习 需求说明 某次程序大赛,AI2101班有4名学员参加,学员的成绩由用户输入,计算…

那你真的了解方法调用吗?

方法调用是不是很熟悉?那你真的了解它吗?今天就让我们来盘一下它。 首先大家要明确一个概念,此处的方法调用并不是方法中的代码被执行,而是要确定被调用方法的版本,即最终会调用哪一个方法。 之前我们了解到&#xff…

Android C++系列:Linux Socket编程(三)CS模型示例

1. TCP通信 下图是基于TCP协议的客户端/服务器程序的一般流程: 服务器调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等待,处于 监听端口的状态,客户端调用socket()初始化后,调用connect()发出SYN段并阻塞等待服 务器应答,服务器应答一个SYN-ACK段,客户…

Blazor SPA 的本质是什么以及服务器端渲染如何与 Blazor 的新 Web 应用程序配合使用

Blazor 通常被称为单页应用程序 (SPA) 框架。当我第一次开始使用 Blazor 时,我对 SPA 的含义、组件如何为 SPA 架构做出贡献以及所有这些如何与交互性联系在一起感到困惑。 今天,我将解答大家可能关心的三个问题: 什么是 SPA?了…

【高中数学/基本不等式】当x是正实数时,求函数f(x)=x/(1+x^2)的最大值?

【问题】 当x是正实数时&#xff0c;求函数f(x)x/(1x^2)的最大值&#xff1f; 【解答】 解&#xff1a; f(x)x/(1x^2)1/(x1/x))<1/2倍根号下(x*1/x)1/2 所以函数在[0,∞)的区域最大值为0.5 【函数图像】 f(x)x/(1x^2)是奇函数&#xff0c;没有断点&#xff0c;是可以…

IPython 魔法重现:使用 %store -r 命令恢复变量全攻略

IPython 魔法重现&#xff1a;使用 %store -r 命令恢复变量全攻略 在 IPython 的强大功能中&#xff0c;%store 命令是管理变量持久化的一种独特方式。通过 %store&#xff0c;你可以将变量的值保存到磁盘上&#xff0c;之后即使在不同的会话中也能够恢复它们。本文将详细指导…

文心一言最常用的20条指令及指令说明,含增强指令

下面是20条文心一言的指令及其说明&#xff0c;每条指令尽量简洁明了&#xff0c;以便在有限的字数内提供尽可能多的信息。以下是这些指令及其说明&#xff1a; 1. 查询天气 指令&#xff1a;今天北京的天气怎么样&#xff1f;说明&#xff1a;此指令用于查询特定城市&#xf…

C#——操作ini文件格式

C#-操作ini文件格式 INI文件是一种简单的文本文件格式&#xff0c;通常用于存储配置信息。在Windows平台上&#xff0c;这种文件格式曾被广泛用于存储应用程序的配置数据。虽然XML和JSON等更现代的数据存储格式已经变得越来越流行&#xff0c;但在某些场景下&#xff0c;INI文…

SpringBoot新手快速入门系列教程三:Mysql基础生存命令指南

以下是一些基本的MySQL命令&#xff0c;帮助你创建数据库、创建表、定义各种类型的列、设置主键和外键、插入数据以及查询数据。 1. 创建数据库 CREATE DATABASE mydatabase;2. 使用数据库 USE mydatabase;3. 创建表 以下是一个示例&#xff0c;创建一个名为 users 的表&am…

HarmonyOS Next系列之Echarts图表组件(折线图、柱状图、饼图等)实现(八)

系列文章目录 HarmonyOS Next 系列之省市区弹窗选择器实现&#xff08;一&#xff09; HarmonyOS Next 系列之验证码输入组件实现&#xff08;二&#xff09; HarmonyOS Next 系列之底部标签栏TabBar实现&#xff08;三&#xff09; HarmonyOS Next 系列之HTTP请求封装和Token…

Redis高级篇之最佳实践

Redis高级篇之最佳实践 今日内容 Redis键值设计批处理优化服务端优化集群最佳实践 1、Redis键值设计 1.1、优雅的key结构 Redis的Key虽然可以自定义&#xff0c;但最好遵循下面的几个最佳实践约定&#xff1a; 遵循基本格式&#xff1a;[业务名称]:[数据名]:[id]长度不超过…

PCIe 规范核心知识线介绍

0&#xff0c;总体Topology x86 处理器系统中 PCIe的拓扑结构&#xff1a; PCIe Switch的总体结构 1&#xff0c;PCIe 枚举 BIOS 负责枚举与分派配置设备的 BusID[7:0] : DeviceID[4:0] : FunctionID[2:0]; cpu先识别 Host-PCI-Bridge&#xff0c;其下是Bus0&#xff1b; 在…

Django中模型的基于类的混入

在Django中&#xff0c;模型的基于类的混入&#xff08;Class-Based Mixin&#xff09;是一种设计模式&#xff0c;用于将可重用的功能添加到模型类中。 混入类通常包含一些通用的行为、方法或属性&#xff0c;可以被多个模型共享。通过继承这些混入类&#xff0c;可以使模型具…

树莓派学习笔记18:IIC驱动_PCA9685(16路舵机驱动模块)误发

今日继续学习树莓派4B 4G:(Raspberry Pi,简称RPi或RasPi) 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: ​ Python 版本3.7.3: ​ IIC驱动_PCA9685(16路舵机驱动模块) 文章提供测试代码讲解,整体代码贴出、测试效果图 目录 开启树莓…

什么是 HTTP POST 请求?初学者指南与示范

在现代网络开发领域&#xff0c;理解并应用 HTTP 请求 方法是基本的要求&#xff0c;其中 "POST" 方法扮演着关键角色。 理解 POST 方法 POST 方法属于 HTTP 协议的一部分&#xff0c;主旨在于向服务器发送数据以执行资源的创建或更新。它与 GET 方法区分开来&…

【linux】内核摸索心得

1、内核运行很快打印日志的位置要注意&#xff0c;平时运行linux是不显示日志的&#xff0c;但是要学习内核运行细节&#xff0c;则需要打开 2、内核代码量大阅读困难&#xff0c;有很多代码文件都是几大千行代码乃至更多 3、代码分支多阅读容易走偏 4、代码中宏的定义错宗复…

深入WebKit:揭秘复杂文档的高效渲染之道

深入WebKit&#xff1a;揭秘复杂文档的高效渲染之道 在当今信息爆炸的时代&#xff0c;网页不再仅仅是简单的文本和图片的集合&#xff0c;而是充满了复杂布局和丰富媒体内容的交互式平台。WebKit 作为众多流行浏览器的心脏&#xff0c;其布局引擎承担着将 HTML、CSS 代码转换…