当前位置: 首页 > news >正文

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

建模资料

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

相关文章:

2023年高教社杯数学建模思路 - 案例:最短时间生产计划安排

文章目录 0 赛题思路1 模型描述2 实例2.1 问题描述2.2 数学模型2.2.1 模型流程2.2.2 符号约定2.2.3 求解模型 2.3 相关代码2.4 模型求解结果 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 最短时…...

算法工程题(二叉树递归)

* 题意说明&#xff1a; * 给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 * 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 * * 示例 1&#xff1a; * 输入&#xff1a;p [1,2,3]…...

“指针跃动”受邀参加全球贸易服务峰会

“指针跃动”受邀参加全球贸易服务峰会 有“服”同享 共赢未来 引子 在全球化日益盛行的今天&#xff0c;贸易不再仅仅是物质的交流&#xff0c;更涉及到服务、理念、文化和科技的共享。中国国际服务贸易交易会全球贸易服务峰会&#xff0c;就是这个趋势的集中体现。在这次峰会…...

Go Web开发的高级技巧和最佳实践

Go Web开发的高级技巧和最佳实践 欢迎来到Go语言Web开发的高级技巧和最佳实践指南。在这篇文章中&#xff0c;我们将深入探讨Go语言Web应用程序的高级主题&#xff0c;包括性能优化、安全性、部署和微服务架构。 性能优化 性能是Web应用程序的关键因素之一。Go语言以其出色的…...

Verilog 基础知识

1、数值种类 Verilog HDL 有下列四种基本的值来表示硬件电路中的电平逻辑&#xff1a; 0&#xff1a;逻辑 0 或 “假”1&#xff1a;逻辑 1 或 “真”x 或 X&#xff1a;未知 x 意味着信号数值的不确定&#xff0c;即在实际电路里&#xff0c;信号可能为 1&#xff0c;也可能…...

element ui 表格组件与分页组件的二次封装

目录 组件封装 parseTime函数 debounce 函数 页面使用 【扩展】vue 函数式组件 函数式组件特点&#xff1a; 函数式组件的优点&#xff1a; 【扩展】vue中的render函数 一、初步认识render函数 二、为什么使用render函数 三、render函数的解析 组件封装 这段代码是一…...

递归算法学习——有效的数独,解数独

一&#xff0c;有效的数独 1.题意 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 &#xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#x…...

基于Alexnet深度学习网络的人员口罩识别算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 file_path1 test\mask\;% 图像文件夹路径 %获取测试图像文件夹下所有jpg格式的图像文件…...

【Java Web】利用Spring整合Redis,配置RedisTemplate

1. 在config中加入RedisConfig配置类 package com.nowcoder.community.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFacto…...

如何正确的写出第一个java程序:hello java

1 前言 最近公司由于项目需要&#xff0c;开始撸java代码了。学习一门新的编程语言&#xff0c;刚开始总是要踩很多坑&#xff0c;所以记录一下学习过程&#xff0c;也希望对java初学者有所帮助。 2 hello java 2.1 程序源码 程序内容十分简单&#xff0c;这里就不再过多赘…...

使用llvm 编译最新的linux 内核(LoongArch)

1. 准备交叉工具链 llvm 使用了最新的llvm-17, 编译方法见:编译LoongArch的llvm交叉工具链 gcc 从linux 官方下载&#xff1a;http://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/13.2.0/x86_64-gcc-13.2.0-nolibc-loongarch64-linux.tar.xz 发布llvm和g…...

Using Multiple RDF Knowledge Graphs for Enriching ChatGPT Responses

本文是LLM系列文章&#xff0c;针对《Using Multiple RDF Knowledge Graphs for Enriching ChatGPT Responses》的翻译。 使用多个RDF知识图来丰富ChatGPT响应 摘要1 引言2 相关工作3 GPT-LODS的过程和用例4 结束语 摘要 最近有一种趋势是使用新型人工智能聊天GPT聊天箱&…...

【Hive-小文件合并】Hive外部分区表利用Insert overwrite的暴力方式进行小文件合并

这里我们直接用实例来讲解&#xff0c;Hive外部分区表有单分区多分区的不同情况&#xff0c;这里我们针对不同情况进行不同的方式处理。 利用overwrite合并单独日期的小文件 1、单分区 # 开启此表达式&#xff1a;(sample_date)?. set hive.support.quoted.identifiersnon…...

位运算 |(按位或) (按位与) ^(按位异或)

目录 文章目录&#xff1a;本章讲解的主要是刷题系列 1&#xff1a;首先会介绍 I & ^这三个操作符的作用&#xff0c;性质 2&#xff1a;三道使用位运算操作符的经典 笔试题(来自剑指offer) 题目链接如下&#xff1a; 1:136. 只出现一次的数字 - 力扣&#xff08;LeetCode…...

Qt应用开发(基础篇)——复选按钮 QCheckBox 单选按钮 QRadioButton

一、前言 QCheckBox类与QRadioButton类继承于QAbstractButton&#xff0c;QCheckBox是一个带有文本标签的复选框&#xff0c;QRadioButton是一个带有文本标签的单选按钮。 按钮基类 QAbstractButton QCheckBox QCheckBox复选框是一个很常用的控件&#xff0c;拥有开关(选中和未…...

AERMOD模型大气环境影响评价

随着我国经济快速发展&#xff0c;我国面临着日益严重的大气污染问题。近年来&#xff0c;严重的大气污染问题已经明显影响国计民生&#xff0c;引起政府、学界和人们越来越多的关注。大气污染是工农业生产、生活、交通、城市化等方面人为活动的综合结果&#xff0c;同时气象因…...

递归组装树结构的数据

开发中&#xff0c;经常遇到存在树形结构的数据&#xff0c;如行政区划这类数据&#xff0c;一级一级分层&#xff0c;后端需要组装好树形结构数据返回给前端。 由于返给前端的json数据中&#xff0c;如果是叶子节点了&#xff0c;说明它没有子节点&#xff0c;那么就没必要返…...

企业架构LNMP学习笔记7

PHP介绍&#xff1a; HTML&#xff1a;超文本标记语言 http: 超文本传输协议 端口80 浏览器将html代码解析成web页面。 PHP&#xff1a;超文本预处理器。后端语言开发&#xff0c;页面上需要动态改变修改的&#xff0c;需要连接数据库查询数据&#xff0c;转为html。 主要…...

开店星小程序上架教程和后台Request failed with status code 500[undefined]问题处理

开店星小程序上架教程和后台Request failed with status code 500[undefined]问题处理 刚刚安装好开店星网站后台之后都会出现这个code 500[undefined]的错误&#xff0c;需要改一下代码。改好了之后就可以正常使用了。如果大家不懂得这样处理的可以私聊我&#xff0c;帮忙处理…...

第一百三十六回 WillPopScope组件

文章目录 概念介绍使用方法示例代码 我们在上一章回中介绍了下拉刷新组件相关的内容&#xff0c;本章回中将介绍 WillPopScope组件.闲话休提&#xff0c;让我们一起Talk Flutter吧。 概念介绍 我们在本章回中介绍的WillPopScope组件是一种事件拦截类组件&#xff0c;它没有具…...

【论文爬虫】自动将论文详细信息直送notion并自动下载(含源码)

输入论文标题&#xff0c;本爬虫将自动在semanticscholar.com和arxiv.com搜索该文章&#xff0c;自动获取其日期、作者、url、摘要等信息&#xff0c;并自动发送到你提前设置好的notion数据库里&#xff0c;同时自动从arxiv下载论文&#xff0c;然后将论文的保存地址在notion页…...

Android知识点整理

关键点 Activity Fragment 调试应用 处理应用程序配置 Intent 和 Intent 过滤器 会使用Context 后台处理指南 Android 的数据隐私 Android 网络数据安全教程 Android 中的依赖项注入 内容提供程序 Android 内存管理概览 一些重要的库 1.Glide 是一个 Android 上的…...

JSON与电子表格

一、介绍 电子表格是一种常见的电子数据处理工具&#xff0c;而JSON是一种数据交换格式。电子表格和JSON之间可以进行数据的导入和导出&#xff0c;以实现数据的相互转换和交互。 在电子表格中&#xff0c;数据以行和列的形式组织&#xff0c;并可以包含不同的数据类型。每个…...

Oracle创建用户、授权视图权限

1、创建用户密码 create user 用户名 identified by 密码;2、创建视图 CREATE VIEW 用户1.表名1 AS SELECT * FROM 用户2.表名2 t;3、授权 GRANT SELECT ON 用户2.表名2 TO 用户1 with GRANT OPTION &#xff1b;grant connect to 用户名; grant select on 用户1.表名1 t…...

MT4移动端应用指南:随时随地进行交易

如今&#xff0c;随着科技的不断发展&#xff0c;我们可以随时随地通过手机进行各种操作&#xff0c;包括进行金融交易。本文将为大家介绍一款优秀的金融交易软件——MT4&#xff08;可在mtw.so/6gwPno这点下&#xff09;移动端应用&#xff0c;并提供详细的使用指南&#xff0…...

【数据挖掘】学习笔记

文章目录 < 数据预处理 > 聚集&#xff1a;多个样本或特征进行合并&#xff08;减少样本规模、转换标度、更稳定&#xff09;抽样&#xff1a;抽取一部分样本降维&#xff1a;在地位空间中表示样本&#xff08;PCA、SVD&#xff09;特征选择&#xff1a;选取重要特征&am…...

MyBatis-Plus排除不必要的字段

查询学生信息排除年龄列表 &#x1f4da;&#x1f50d; 使用MyBatis-Plus排除某些字段。如果你想要进行查询&#xff0c;但又不需要包含某些字段&#xff0c;那么这个功能将非常适合你。&#x1f50d;&#x1f393;&#x1f4dd; 1. 学生信息查询-排除年龄列表 在使用 MyBat…...

webpack打包

文章目录 一、什么是webpack二、使用步骤1.创建一个新的文件夹,并将其初始化2.在当前目录下安装webpack以及webpack-cli3.配置webpack自定义命令,使之生效4.运行自定义命令,打包webpack5.打包成功之后会将内容打包到dist文件夹下6.配置webpack1)修改webpack打包入口和出口2)配置…...

【Java SE】抽象类与接口

目录 【1】抽象类 【1.1】抽象类概念 【1.2】抽象类语法 【1.3】抽象类特性 【1.4】抽象类的作用 【2】接口 【2.1】接口的概念 【2.2】语法规则 【2.3】接口使用 【2.4】接口特性 【2.5】实现多个接口 【2.6】接口间的继承 【2.7】接口使用实例 【2.8】Clonable …...

HTML <time> 标签

实例 如何定义时间和日期&#xff1a; <p>我们在每天早上 <time>9:00</time> 开始营业。</p><p>我在 <time datetime"2008-02-14">情人节</time> 有个约会。</p>定义和用法 <time> 标签定义公历的时间&…...