2023亚太杯数学建模思路 - 案例:最短时间生产计划安排

文章目录

  • 0 赛题思路
  • 1 模型描述
  • 2 实例
    • 2.1 问题描述
    • 2.2 数学模型
      • 2.2.1 模型流程
          • 2.2.2 符号约定
          • 2.2.3 求解模型
    • 2.3 相关代码
    • 2.4 模型求解结果
  • 建模资料

0 赛题思路

(赛题出来以后第一时间在CSDN分享)

https://blog.csdn.net/dc_sinor?type=blog

最短时间生产计划模型

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

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

建模资料

资料分享: 最强建模资料
在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

六、Big Data Tools安装

1、安装 在Jetbrains的任意一款产品中&#xff0c;均可安装Big Data Tools这个插件。 2、示例 下面以DadaGrip为例&#xff1a; &#xff08;1&#xff09;打开插件中心 &#xff08;2&#xff09;搜索Big Data Tools&#xff0c;下载 3、链接hdfs &#xff08;1&#xff0…

将kali系统放在U盘中插入电脑直接进入kali系统

首先准备一个空白的 U 盘。 Kali Linux | Penetration Testing and Ethical Hacking Linux Distribution 在 Windows 上制作 Kali 可启动 USB 驱动器 Making a Kali Bootable USB Drive on Windows | Kali Linux Documentation 1. 首先下载 .iso 镜像 Index of /kali-images…

Logstash同步MySQL数据到ES

简介 1.1 什么是Logstash&#xff1f; Logstash作为一个具备实时流水线功能的开源数据收集引擎&#xff0c;拥有强大的能力。它能够从不同来源收集数据&#xff0c;并将其动态地汇聚&#xff0c;进而根据我们定义的规范进行转换或者输出到我们定义的目标地址。 1.2 Logstash的…

【数据结构-零基础学习】线索二叉树(代码+图示+解析)

【数据结构-零基础学习】线索二叉树(代码图示解析) 文章目录 【数据结构-零基础学习】线索二叉树(代码图示解析)[toc]定义产生背景种类示意图1)未加入线索的普通二叉树示意图1.12)线索添加的规则3)中序线索二叉树示意图1.24)中序线索二叉树分析示意图1.3 设计代码逻辑(重点)代码…

2023年软件团队的六款最佳API文档工具

API开发的增长导致了大量的API文档工具的出现&#xff0c;这一点在使用谷歌搜索“API文档工具”时可以明显看到很多的搜索结果。这些工具的激增与全球API开发的扩张和对准确文档的需求增加相一致。值得关注的是&#xff0c;不仅小型创业公司进入了API市场&#xff0c;许多成熟企…

磐舟CI使用说明及案例

整体介绍 磐舟作为一个devops产品&#xff0c;它具备基础的CI流水线功能。同时磐舟的流水线是完全基于云原生架构设计的&#xff0c;在使用时会有一些注意事项。这里首先我们要了解磐舟整体的流水线打包逻辑。 文档结构说明 一般来说&#xff0c;磐舟推荐单个业务的标准git库…

外卖小程序系统:数字化餐饮的编码之道

在当今数字化时代&#xff0c;外卖小程序系统成为了餐饮业的一项技术巨制。这个系统不仅提供了便捷的点餐体验&#xff0c;更通过先进的技术手段&#xff0c;实现了高效订单处理、实时配送追踪以及个性化推荐。让我们深入了解外卖小程序系统的技术魔法&#xff0c;一起揭秘数字…

初识JVM(简单易懂),解开JVM神秘的面纱

目录 一、什么是JVM&#xff08;Java虚拟机&#xff09;&#xff1f; 二、JVM的功能 三、JVM的功能-即时编译 四、常见的JVM 五、JVM的组成 五、JVM的工作流程 参考资料 一、什么是JVM&#xff08;Java虚拟机&#xff09;&#xff1f; 在Java的世界里&#xff0c;Java虚…

维纳滤波器小结

维纳滤波器小结 一、问题概述 1.1 维纳滤波器简介 维纳滤波器是在最小均方误差&#xff08;mmse&#xff09;准则下的线性最优滤波器&#xff0c;其利用平稳随机过程的相关特性和频谱特性&#xff0c;对混有噪声的信号进行滤波。 其输入信号为 u ( n ) d ( n ) v ( n ) u…

适合您的iPhone手机的 8 款最佳手机数据恢复软件

当谈到恢复已删除或丢失的 iPhone 文件时&#xff0c;您通常有两种解决方案&#xff1a;从备份恢复、使用 iPhone 数据恢复软件。 虽然前者听起来很简单&#xff0c;但您可能已经检查过并且没有备份。那么您的下一个选择是尝试 iPhone 数据恢复工具。 市场上有许多软件工具都…

搭个网页应用,让ChatGPT帮我写SQL

大家好&#xff0c;我是凌览。 开门见山&#xff0c;我搭了一个网页应用名字叫sql-translate。访问链接挂在我的个人博客(https://linglan01.cn/about)导航栏&#xff0c;也可以访问https://www.linglan01.cn/c/sql-translate/直达sql-translate。 它的主要功能有&#xff1a;…

酷开科技OS——Coolita,让智能大屏走向国际

10月23日&#xff0c;2023中国—东盟视听传播论坛在南宁举行。作为第五届中国—东盟视听周重要活动之一&#xff0c;本次论坛以“共享新成果、共创新视听、共建新家园”为主题。来自中国和东盟的300余名专家学者、业界代表通过主旨演讲、主题发言、圆桌对话等方式进行深入探讨&…

Linux操作系统使用及C高级编程-D9D10Linux 服务搭建与使用

TFTP服务器 TFTP&#xff08;Trivial File Transfer Protocol&#xff09;即简单文件传输协议&#xff0c;是TCP/IP协议中一个用来在客户机与服务器之间进行简单文件传输的协议&#xff0c;提供不复杂、开销不大的文件传输服务。端口号为69 1、使用客户服务器方式和使用UDP数据…

STL中set的基本概念与使用

1 定义 1.1 set内元素唯一 1.2 set内元素默认升序排序 1.3 set内元素增&#xff0c;删&#xff0c;查时间复杂度都是O(logn) 2 使用 2.1 声明 set<int> mySet;2.2 插入元素 /*插入元素*/mySet.insert(5);mySet.insert(4);mySet.insert(3);mySet.insert(2);mySet.in…

Ajax基础(应用场景|jquery实现Ajax|注意事项|Ajax发送json数据|Ajax携带文件数据)

文章目录 一、Ajax简介二、基于jquery实现Ajax三、使用Ajax注意的问题1.Ajax不要与form表单同时提交2.后端响应格式问题3、使用了Ajax作为请求后的注意事项 四、前后端数据传输的编码格式(content-Type)1.urlencoded2.formdata3.application/json 五、Ajax携带文件数据六、Ajax…

基于SSM的网盘管理系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

轻松上手Obsidian的图片操作 | Obsidian实践

前两天收到一位朋友留言&#xff0c;询问Obsidian笔记中图片的基本使用情况。 想到自己也好久没写文章了&#xff0c;便以此作为动力&#xff0c;基于自己有限经验&#xff0c;简单做个分享吧。 【问题1】图片是否可以通过截图粘贴板插入Obsidian笔记&#xff1f; 是可以实现的…

【C++】string类的介绍与使用

&#x1f9d1;‍&#x1f393;个人主页&#xff1a;简 料 &#x1f3c6;所属专栏&#xff1a;C &#x1f3c6;个人社区&#xff1a;越努力越幸运社区 &#x1f3c6;简 介&#xff1a;简料简料&#xff0c;简单有料~在校大学生一枚&#xff0c;专注C/C/GO的干货分…

并行与分布式 第7章 体系结构 下

文章目录 并行与分布式 第7章 体系结构 下7.3 互连结构7.3.1 网络拓扑的基本概念7.3.2 互连网络分类7.3.3 典型静态网络7.3.4典型动态互连网络 7.4 性能评测7.4.1 工作负载7.4.2 峰值速度7.4.3 并行执行时间7.4.4 性能价格比7.4.5多处理器性能定律 并行与分布式 第7章 体系结构…

普冉PY32系列(十一) 基于PY32F002A的6+1通道遥控小车II - 控制篇

目录 普冉PY32系列(一) PY32F0系列32位Cortex M0 MCU简介普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode开发环境普冉PY32系列(三) PY32F002A资源实测 - 这个型号不简单普冉PY32系列(四) PY32F002A/003/030的时钟设置普冉PY32系列(五) 使用JLink RTT代替串口输出日志普冉PY32…