2024电工杯数学建模 - 案例:最短时间生产计划安排

# 前言

2024电工杯(中国电机工程学会杯)数学建模思路解析

最新思路更新(看最新发布的文章即可):
https://blog.csdn.net/dc_sinor/article/details/138726153

最短时间生产计划模型

该模型出现在好几个竞赛赛题上,预测2022今年国赛也会与该模型相关。

1 模型描述

离散系统仿真在工业生产的工序安排中起到了相当重要的作用,如何就一些内部机制复杂的离散问题建立简单易行、可监测性强的数学模型一直是仿真技术的研究热点.

离散事件系统现有三种仿真建模策略,即:

  • 事件调度法
  • 活动扫描法
  • 进程交互法.

该模型demo学长采用了其中的活动扫描法对生产中的一个实际例子进行了处理.

活动扫描法对于各事件之间相关性很强的系统有着很好的适用性.

2 实例

2.1 问题描述

在许多工厂生产过程中,由于设备的数量、产品加工的次序限制,往往不能简单地安排生产任务.我们设想,应用强大的数学软件配合简单易行的方法进行安排.

设某重型机械厂产品都是单件性的,其中有一车间共有4种不同设备,现接受6件产品的加工任务,每件产品接受的程序在指定的设备上加工,其工序与加工周期如下表

在这里插入图片描述
现在我们根据这一实际问题,寻求安排的方法.

要求:

1、每件产品必须按规定的工序加工,不得颠倒.

2、每台设备在同一时间只能担任一项任务(每件产品的每个工序为一个任务).

3、在尽可能短的时间里,完成所接受的全部任务.

为了节省电能,合理分配生产任务,厂方还要求:

1、做出每件产品的每个工序开工、完工时间表.

2、给出每台设备承担任务的时间表.

2.2 数学模型
2.2.1 模型流程

在这里插入图片描述

2.2.2 符号约定

在这里插入图片描述

2.2.3 求解模型

在这里插入图片描述在这里插入图片描述在这里插入图片描述

2.3 相关代码
clear
clc
seq=[3 1 2 3 4 0 0 0                     %各产品加工时所用的设备的次序1 4 2 3 0 0 0 03 4 1 2 1 0 0 02 3 4 1 4 3 0 04 2 3 4 1 3 4 01 2 1 3 4 1 3 1];tim=[8 2 4 24 6 0 0 0                   %加工对应使用的时间4 5 3 4 0 0 0 03 7 15 20 8 0 0 07 6 21 1 16 3 0 010 4 8 4 12 6 1 01 4 7 3 5 2 5 8];
whole=[0 0 0 0];
for i=1:6for j=1:8if(seq(i,j)~=0)whole(seq(i,j))=whole(seq(i,j))+tim(i,j);endend
end
whole                          %生产各件产品所需的总时间mes=cell(4,1);                   %记录各个设备的工作时间(对应于上面tim的位置)
for k=1:4mes{k,1}=zeros(6,8);for j=1:8for i=1:6if(seq(i,j)==k)mes{k,1}(i,j)=tim(i,j);elsemes{k,1}(i,j)=100;endendend
endturn=cell(5,100);               %记录四个设备的开关时间及加工对象(on(i)for i=1:4for j=1:100turn{i,j}='off';end
end
for i=1:100turn{5,i}=[num2str(i) '分'];
endopen=zeros(6,8);           
%记录6个产品的加工进度,0表示未进行,1表示已开始(或已结束),2表示可选,3表示没有这个程序
for i=1:6open(i,1)=2;
end
for i=1:6for j=1:8if seq(i,j)==0open(i,j)=3;endend
endgongxu=zeros(6,1);
dai=zeros(4,1);
j=1;
s=[1	1	1	1	1	3	3	3
1	1	1	1	3	3	3	3
1	1	1	1	1	3	3	3
1	1	1	1	1	1	3	3
1	1	1	1	1	1	1	3
1	1	1	1	1	1	1	1];
while isequal(open,s)==0on=[];for i=1:4if turn{i,j}=='off'  
%在turn矩阵中逐列搜索,若设备处于关机状态,则作记录(可用)on=[on i];endendl1=length(on);for m=1:l1          %在整个生产计划中(对设备逐个)寻找能够选作操作的步骤[x,y]=find(open==2);l2=length(x);a=[x(1) y(1)];for k=1:l2   %对某个设备on(m),找出当前它能操作的步骤中耗时最小的一个if mes{on(m)}(a(1),a(2))>mes{on(m)}(x(k),y(k))a=[x(k) y(k)];endendif turn{on(m),j}=='off' & mes{on(m)}(a(1),a(2))~=100 
%若时间为100则意味着这个步骤不属于我们希望使用的那件设备while tim(a(1),a(2))>0turn{on(m),tim(a(1),a(2))+j-1}=a(1);tim(a(1),a(2))=tim(a(1),a(2))-1;endendendfor i=1:4if turn{i,j}~='off'dai(i)=turn{i,j};endendfor i=1:4if turn{i,j}~='off' & turn{i,j+1}=='off'gongxu(turn{i,j})=gongxu(turn{i,j})+1;open(turn{i,j},gongxu(turn{i,j}))=1;endif gongxu(dai(i))<8 & open(dai(i),gongxu(dai(i))+1)~=3 & turn{i,j+1}=='off'open(dai(i),gongxu(dai(i))+1)=2;endendj=j+1;
end
2.4 模型求解结果

每件产品的每个工序开工、完工时间表

在这里插入图片描述
每台设备承担任务的时间表

在这里插入图片描述
从结果中我们可以看到,使用这种方法,只需78个单位时间就可以完成所有的工序.而我们同时也可以在论文的开始部分看到,单就完成 就需耗费75个单位时间.可见这种方法得出的结果还是相当使人满意的,而且操作简单,可监测性强.

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

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

相关文章

CoShNet:使用复数改进神经网络

使用复数改进神经网络 文章目录 一、说明二、了解卷积神经网络三、进入混合神经网络四、令人惊叹的 CoSh 网络五、复杂函数的神奇性质六、相位一致性七、结论 一、说明 本文题为“CoShNet&#xff1a;使用Shearlets的混合复杂值神经网络”&#xff0c;提出了在混合神经网络中使…

深入理解SVM和浅层机器学习算法的训练机制

深入理解SVM和浅层机器学习算法的训练机制支持向量机&#xff08;SVM&#xff09;的训练过程SVM的基本概念SVM的损失函数训练方法 浅层机器学习算法的训练机制决策树K-最近邻&#xff08;K-NN&#xff09;朴素贝叶斯 结论 深入理解SVM和浅层机器学习算法的训练机制 在探讨浅层…

nrf52832自定义蓝牙名字过长,广播显示不全

自定义蓝牙名字过长&#xff0c;广播显示不全 原因:nrf52832默认使用蓝牙4.x的广播&#xff0c;它的广播包数据只有32byte数据&#xff0c;当广播已经包含足够多的数据的时候&#xff0c;广播每次过长就会显示部分名称&#xff0c;即便你选择"BLE_ADVDATA_FULL_NAME"…

Python学习---基于多任务协程的并发下载器案例

目标&#xff1a;使用协程实现网络图片的下载&#xff08;适合网络io&#xff09; 多进程&#xff1a; 密集CPU任务&#xff0c;需要充分使用多核CPU资源&#xff08;服务器&#xff0c;大量的并行计算&#xff09;的时候&#xff0c;用多进程。 缺陷&#xff1a;多个进程之间通…

Python基础学习笔记(六)——列表

目录 一维列表1. 索引的查询与返回2. 切片3. 添加元素4. 删除元素5. 更改元素6. 排序7. 生成式 一维列表 列表&#xff0c;也称数组&#xff0c;是一种有序、可变、允许重复元素的组合数据结构&#xff0c;属于可变序列&#xff0c;由方括号[]内、用逗号分隔的一组元素组成。 列…

【Clickhouse】DB::Exception: Table is in readonly mode问题解决

1. 问题描述 公司电力检修&#xff0c;机房断电再上电之后clickhouse的一张表出现了只读现象 2024.05.20 16:58:08.702472 [ 173655 ] {17C25AD8068BBE9A} <Error> executeQuery: Code: 242, e.displayText() DB::Exception: Table is in readonly mode (version 20.5…

展现金融科技前沿力量,ATFX于哥伦比亚金融博览会绽放光彩

不到半个月的时间里&#xff0c;高光时刻再度降临ATFX。而这一次&#xff0c;是ATFX不曾拥有的桂冠—“全球最佳在线经纪商”(Best Global Online Broker)。2024年5月15日至16日&#xff0c;拉丁美洲首屈一指的金融盛会—2024年哥伦比亚金融博览会(Money Expo Colombia 2024) 于…

【华为OD机试-C卷D卷-200分】文本统计分析(C++/Java/Python)

【华为OD机试】-(A卷+B卷+C卷+D卷)-2024真题合集目录 【华为OD机试】-(C卷+D卷)-2024最新真题目录 题目描述 有一个文件,包含以一定规则写作的文本,请统计文件中包含的文本数量。 规则如下: 文本以 ";" 分隔,最后一条可以没有 ";" ,但空文本不能算…

数据对大模型预训练效果的影响

文章目录 数据数量的影响数据质量的影响数据集污染数据预处理实践 在训练大语言模型的过程中&#xff0c;预训练数据的质量对模型能力的影响至关重要。已有的研究表明&#xff0c;基于含有噪音、有毒和重复数据的低质量语料库进行预训练&#xff0c;会严重损害模型性能。 数据…

hdfs机器下线维修

HDFS&#xff08;Hadoop Distributed File System&#xff09;是Hadoop分布式文件系统&#xff0c;它设计用来跨多个物理服务器存储大量数据。当HDFS集群中的某个机器需要下线维修时&#xff0c;需要谨慎处理以避免数据丢失或服务中断。以下是处理HDFS机器下线的步骤&#xff1…

[C][C运算][取模/取余运算][隐式类型转换][算术转换]详细讲解

目录 1.取模/取余运算1.取整2.取模 2.隐式类型转换3.算术转换 1.取模/取余运算 1.取整 C语言默认向0取整 – trunc()同作用floor() -> 向-∞取整ceil() -> 向∞取整round() -> 四舍五入 2.取模 定义&#xff1a;如果a和d是两个自然数&#xff0c;d非零&#xff0c…

AI智能体|使用扣子Coze基于IDE创建自定义插件

大家好&#xff0c;我是无界生长。 在使用Coze的过程中&#xff0c;有些个性化场景无法通过插件商店已有的插件满足&#xff0c;这个时候就需要通过自定义插件的方式来实现业务需求。下面将通过一个实际案例来简单介绍下如何使用Coze基于IDE创建自定义插件&#xff0c;完成在Co…

Godot游戏引擎有哪些优势

哈喽呀&#xff0c;大家好呀&#xff0c;淼淼又来和大家见面啦&#xff0c;众所周知在当今游戏开发领域&#xff0c;各种游戏引擎如雨后春笋般涌现&#xff0c;为开发者提供了丰富的选择。而在这些众多的选择中&#xff0c;Godot游戏引擎以其独特的特性和开放源代码的优势&…

java.util.ConcurrentModificationException异常分析及解决

问题描述 有一个RecycleView视图组件&#xff0c;数据变更得时候进行了增加和删除操作&#xff0c;频繁触发 增加、删除数据得操作&#xff0c;低概率出现此问题&#xff0c;代码片段无法展示&#xff0c;可以语言描述一下代码片段 recycleview使用了adapter来展示数据adapte…

SpringBoot集成腾讯云敏感词校验API流程

1.pom.xml中引入腾讯云jar配置信息 <dependency><groupId>com.tencentcloudapi</groupId><artifactId>tencentcloud-sdk-java</artifactId><version>4.0.11</version> </dependency> 2.application.yaml中添加配置 tencent…

2024最新流媒体在线音乐系统网站源码| 音乐社区 | 多语言 | 开心版

简介&#xff1a; 2024最新流媒体在线音乐系统网站源码| 音乐社区 | 多语言 | 开心版 下载地址 https://www.kuaiyuanya.com/product/article/index/id/33.html 图片&#xff1a;

Microsoft.NET 框架程序设计 —— 基元类型、引用类型与值类型

本文讨论.NET 框架开发人员经常遇到的各种数据类型。熟悉这些类型的不同行为对于一个开发人员来说至关重要。当我刚开始接触.NET框架时,就没有完全理解基元类型、引用类型和值类型之间的一些差别。这种模糊的认识甚至无意间导致了一些难以査找的bug以及性能问题。我希望通过本…

【QT】实时语言切换

前言&#xff1a;一个完整的软件开发通常需要支持多种语言&#xff0c;本文主要讲述实时语言切换开发时的相关解决方案。 1. 制作字库文件 添加标识 在需要被翻译的字符串前面标识tr&#xff0c;如QString str&#xff1d;tr(“hello,world!”); &#xff0c;这很重要&#xf…

使用 Django Rest Framework 构建强大的 Web API

文章目录 安装 Django Rest Framework创建序列化器创建视图和 URL 路由配置认证和权限测试 API Django Rest Framework&#xff08;DRF&#xff09;是一个强大的工具&#xff0c;用于在 Django Web 框架中构建灵活且功能丰富的 Web API。它提供了许多功能&#xff0c;包括序列化…

ubuntu22.04 kubeadm安装k8s集群(从零到有)

ubuntu kubeadm安装k8s集群 前言一、初始化所有ubuntu服务器二、安装kubeadm三、kubeadm初始化节点、加入集群四、安装kubesphere1、下载yaml文件2、运行apply报错3、安装完成。4、忘记密码,强制修改5、Kubesphere其他组件安装前言 k8s 三master 三node所有节点hosts文件添加…