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

news2025/1/15 6:28:41

# 前言

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 0
     3 4 1 2 1 0 0 0
     2 3 4 1 4 3 0 0
     4 2 3 4 1 3 4 0
     1 2 1 3 4 1 3 1];
 tim=[8 2 4 24 6 0 0 0                   %加工对应使用的时间
      4 5 3 4 0 0 0 0
      3 7 15 20 8 0 0 0
      7 6 21 1 16 3 0 0
      10 4 8 4 12 6 1 0
      1 4 7 3 5 2 5 8];
whole=[0 0 0 0];
for i=1:6
    for j=1:8
        if(seq(i,j)~=0)
            whole(seq(i,j))=whole(seq(i,j))+tim(i,j);
        end
    end
end
whole                          %生产各件产品所需的总时间

mes=cell(4,1);                   %记录各个设备的工作时间(对应于上面tim的位置)
for k=1:4
    mes{k,1}=zeros(6,8);
    for j=1:8
        for i=1:6
            if(seq(i,j)==k)
            mes{k,1}(i,j)=tim(i,j);
        else
            mes{k,1}(i,j)=100;
            end
        end
    end
end

turn=cell(5,100);               %记录四个设备的开关时间及加工对象(on(i)for i=1:4
    for j=1:100
        turn{i,j}='off';
    end
end
for i=1:100
    turn{5,i}=[num2str(i) '分'];
end

open=zeros(6,8);           
%记录6个产品的加工进度,0表示未进行,1表示已开始(或已结束),2表示可选,3表示没有这个程序
for i=1:6
    open(i,1)=2;
end
for i=1:6
    for j=1:8
        if seq(i,j)==0
            open(i,j)=3;
        end
    end
end

gongxu=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)==0
    on=[];
    for i=1:4
        if turn{i,j}=='off'  
%在turn矩阵中逐列搜索,若设备处于关机状态,则作记录(可用)
            on=[on i];
        end
    end
    l1=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)];
            end
        end
        if turn{on(m),j}=='off' & mes{on(m)}(a(1),a(2))~=100 
%若时间为100则意味着这个步骤不属于我们希望使用的那件设备
            while tim(a(1),a(2))>0
                turn{on(m),tim(a(1),a(2))+j-1}=a(1);
                tim(a(1),a(2))=tim(a(1),a(2))-1;
            end
        end
    end
    for i=1:4
        if turn{i,j}~='off'
            dai(i)=turn{i,j};
        end
    end
    for i=1:4
        if 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;
        end
        if 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;
        end
    end
    j=j+1;
end

2.4 模型求解结果

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

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

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

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

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

相关文章

ASP+ACCESS基于BS产品销售管理系统

2. 网页制作工具 a) 网页设计工具 网页主要使用Frontpage2003&#xff0c;Dreamweaver Mx辅助制作。 Frontpage 2003 frontpage2003是在frontpage2000基础上的网页工具。frontpage2003保留和发展了frontpage 2000的优秀功能&#xff0c;并根据用户的的要求再次增加了九大新…

【MATLAB】基于EMD-PCA-LSTM的回归预测模型

有意向获取代码&#xff0c;请转文末观看代码获取方式~ 1 基本定义 基于EMD-PCA-LSTM的回归预测模型是一种结合了经验模态分解&#xff08;Empirical Mode Decomposition, EMD&#xff09;、主成分分析&#xff08;Principal Component Analysis, PCA&#xff09;和长短期记忆…

STM32使用DMA+空闲中断方式实现串口数据接收

欢迎入群共同学习交流 时间记录&#xff1a;2024/5/23 一、概念介绍 &#xff08;1&#xff09;DMA&#xff1a;直接存储器存取(DMA)(Direct Memory Access)也是一个挂载在AHB总线上的外设&#xff0c;用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须…

超详细的前后端实战项目(Spring系列加上vue3)(一步步实现+源码)前端篇(一)

最近想着一步步搭建一个前后端项目&#xff0c;将每一步详细的做出来。&#xff08;如果有不足或者建议&#xff0c;也希望大佬们指出哦&#xff09; 前端初始化 1.根据vue脚手架创建vue项目 这里可以用很多方法创建vue项目&#xff0c;大家看着创建吧&#xff0c;只要能创建…

H4vdo 台湾APT-27视频投放工具

地址:https://github.com/MartinxMax/H4vdo 视频 关于 H4vdo RTMP lock 屏播放视频工具&#xff0c;可以向目标发送有效载荷&#xff0c;播放目标的屏幕内容。目标无法曹作计算机 使用方法 安装依赖 根据你的操作系统选择一个安装程序 RTMP 服务端 ./rtsp-simple-server.…

HiWoo Box边缘计算网关

​在数字化浪潮汹涌的今天&#xff0c;边缘计算网关成为了连接物理世界与数字世界的桥梁&#xff0c;其重要性日益凸显。HiWoo Box&#xff0c;作为一款功能强大的边缘计算网关&#xff0c;不仅具备了传统网关的基本功能&#xff0c;更在数据采集、处理、传输等方面展现出了卓越…

不闭合三维TSP:蛇优化算法SO求解不闭合三维TSP(起点固定,终点不定,可以更改数据集),MATLAB代码

旅行商从城市1出发&#xff0c;终点城市由算法求解而定 部分代码 close all clear clc global data load(data.txt)%导入TSP数据集 Dimsize(data,1)-1;%维度 lb-100;%下界 ub100;%上界 fobjFun;%计算总距离 SearchAgents_no100; % 种群大小&#xff08;可以修改&#xff09; …

【数据库基础】基本认识数据库--入门引导

文章目录 什么是数据库&#xff1f;主流数据库基本使用安装MySQL连接服务器服务器、数据库、表关系使用案例数据逻辑存储 MySQL架构SQL语句分类什么叫存储引擎 什么是数据库&#xff1f; 数据库是指在磁盘和内存中存储特定结构组织的数据。数据库通常用于存储于某个系统、组织或…

Python自带爬虫库urllib

一、什么是urllib 它是一个http请求的Python自带的标准库&#xff0c;无需安装&#xff0c;直接可以用。并且提供了如下功能&#xff1a;网页请求、响应获取、代理和cookie设置、异常处理、URL解析&#xff0c;可以说是一个比较强大的模块。 二、urllib模块 可分为以下模块&am…

2024中青杯数学建模C题:“X 疾病”在人群中的传播代码论文思路分析

2024中青杯数学建模C题论文和代码已完成&#xff0c;代码为C题全部问题的代码&#xff0c;论文包括摘要、问题重述、问题分析、模型假设、符号说明、模型的建立和求解&#xff08;问题1模型的建立和求解、问题2模型的建立和求解、问题3模型的建立和求解&#xff09;、模型的评价…

Docker Compose使用

Docker-Compose是什么 docker建议我们每一个容器中只运行一个服务,因为doker容器本身占用资源极少&#xff0c;所以最好是将每个服务单独分割开来&#xff0c;但是这样我们又面临了一个问题&#xff1a; 如果我需要同时部署好多个服务&#xff0c;难道要每个服务单独写Docker…

如何彻底搞懂迭代器(Iterator)设计模式?

说起迭代器&#xff08;Iterator&#xff09;&#xff0c;相信你并不会陌生&#xff0c;因为我们几乎每天都在使用JDK中自带的各种迭代器。那么&#xff0c;这些迭代器是如何构建出来的呢&#xff1f;就需要用到了今天内容要介绍的迭代器设计模式。在日常开发过程中&#xff0c…

刷题之将有序数组转换成二叉搜索树(leetcode)

将有序数组转换成二叉搜索树 正常递归&#xff0c;中序遍历 递归经常会把自己绕晕&#xff0c;还是得画图分析 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(null…

【LeetCode 随笔】面试经典 150 题【中等+困难】持续更新中。。。

文章目录 380.【中等】O(1) 时间插入、删除和获取随机元素238.【中等】除自身以外数组的乘积134.【中等】 加油站135.【困难】分发糖果42.【困难】接雨水 &#x1f308;你好呀&#xff01;我是 山顶风景独好 &#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面…

【Docker实操】启动redis服务

一、步骤 1、获取redis镜像 执行获取redis镜像命令&#xff1a;docker pull redis。打印镜像清单&#xff0c;可以看到新拉到的redis镜像。 2、创建redis.conf配置文件 linux主机 mkdir -p /root/www/redis/conf touch /root/www/redis/conf/redis.conf cat << EOF &…

vue中数据已经改变了,但是table里面内容没更新渲染!

解决方案&#xff1a; 给table或者el-table标签上添加一个动态key值&#xff0c;只要数据发生改变&#xff0c;key值变动一下即可 标签上&#xff1a; :key“timeStamp” 初始data&#xff1a;timeStamp:0, 更新数据&#xff1a;this.timeStamp 这样每次更新数据&#xff…

网络的基础理解

文章目录 网络的基础认识 网络协议协议分层OSI七层模型TCP/IP 五层/四层 模型 网络的基础认识 先来看下面几个问题 什么是网络&#xff1f; 网络就是有许多台设备包括计算机单不仅限于计算机&#xff0c;这些设备通过相互通信所组成起来系统&#xff0c;我们称之为网络所以如…

通过 Spring 操作 Redis

要想通过 Java 操作 redis&#xff0c;首先要连接上 redis 服务器&#xff0c;推荐看通过 Java 操作 redis -- 连接 redis 创建项⽬ 勾选 NoSQL 中的 Spring Data Redis 当然, 把 Web 中的 Spring Web 也勾选⼀下.⽅便写接进⾏后续测试. 配置 redis 服务地址 在 application.…

CF451E: Devu and Flowers(容斥原理 + 考虑反面 + golang组合模版)

题目截图 题目翻译 题目分析 正难则反&#xff0c;考虑所有不符合的例子 由于n很小&#xff0c;所以可以状态压缩二进制遍历完全部不符合例子的组合 对于不符合的例子&#xff0c;假设其中第i个不符合&#xff0c;那么就消耗掉fi 1个球 以此类推&#xff0c;减剩下s2个球 这时…

盘点28个免费域名申请大全

盘点28个免费域名申请大全 免费域名推荐学习使用&#xff0c;免费就意味着没任何保障。 名称稳定时间支持解析模式后缀格式说明地址EU.org28 年NS.eu.org/. 国家简写.eu.org需要审核&#xff0c;稳定性高&#xff0c;限制少&#xff0c;国内访问有问题&#xff0c;可 CFeu.orgp…