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

2024-05-23 22:20

本文主要是介绍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个单位时间.可见这种方法得出的结果还是相当使人满意的,而且操作简单,可监测性强.

这篇关于2024电工杯数学建模 - 案例:最短时间生产计划安排的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/996573

相关文章

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

使用C#代码计算数学表达式实例

《使用C#代码计算数学表达式实例》这段文字主要讲述了如何使用C#语言来计算数学表达式,该程序通过使用Dictionary保存变量,定义了运算符优先级,并实现了EvaluateExpression方法来... 目录C#代码计算数学表达式该方法很长,因此我将分段描述下面的代码片段显示了下一步以下代码显示该方法如

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像

MySQL不使用子查询的原因及优化案例

《MySQL不使用子查询的原因及优化案例》对于mysql,不推荐使用子查询,效率太差,执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,本文给大家... 目录不推荐使用子查询和JOIN的原因解决方案优化案例案例1:查询所有有库存的商品信息案例2:使用EX

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

Oracle数据库执行计划的查看与分析技巧

《Oracle数据库执行计划的查看与分析技巧》在Oracle数据库中,执行计划能够帮助我们深入了解SQL语句在数据库内部的执行细节,进而优化查询性能、提升系统效率,执行计划是Oracle数据库优化器为... 目录一、什么是执行计划二、查看执行计划的方法(一)使用 EXPLAIN PLAN 命令(二)通过 S

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于