当前位置: 首页 > 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 最短时…...

Spring MVC介绍

MVC模式是什么 MVC 模式&#xff0c;全称为 Model-View-Controller&#xff08;模型-视图-控制器&#xff09;模式&#xff0c;它是一种软件架构模式&#xff0c;其目标是将软件的用户界面&#xff08;即前台页面&#xff09;和业务逻辑分离&#xff0c;使代码具有更高的可扩展…...

5年测试在职经验之谈:2年功能测试、3年自动化测试,从入门到不可自拔...

毕业3年了&#xff0c;学的是环境工程专业&#xff0c;毕业后零基础转行做软件测试。 已近从事测试行业8年了&#xff0c;自己也从事过2年的手工测试&#xff0c;从事期间越来越觉得如果一直在手工测试的道路上前进&#xff0c;并不会有很大的发展&#xff0c;所以通过自己的努…...

【Python数据分析】数据分析之numpy基础

实验环境&#xff1a;建立在Python3的基础之上 numpy提供了一种数据类型&#xff0c;提供了数据分析的运算基础&#xff0c;安装方式 pip install numpy导入numpy到python项目 import numpy as np本文以案例的方式展示numpy的基本语法&#xff0c;没有介绍语法的细枝末节&am…...

Swift 如何从图片数据(Data)检测原图片类型?

功能需求 如果我们之前把图片对应的数据(Data)保持在内存或数据库中,那么怎么从 Data 对象检测出原来图片的类型呢? 如上图所示:我们将 11 张不同类型的图片转换为 Data 数据,然后从 Data 对象正确检测出了原图片类型。 目前,我们的代码可以检测出 jpeg(jpg), tiff,…...

【ES6】 JavaScript 中的Object.assign

Object.assign() 是 JavaScript 中的一个方法&#xff0c;它用于复制源对象的所有可枚举属性到目标对象。该方法会返回目标对象。 这是其基本用法&#xff1a; let target Object.assign({}, source);在这个例子中&#xff0c;source 对象的所有可枚举属性都被复制到了 targ…...

Redis缓存和持久化

目录 Redis缓存 什么是缓存 缓存更新策略​编辑 业务场景 缓存穿透 常见的解决方案 缓存雪崩 解决方案 缓存击穿 解决方案 Redis持久化 RDB持久化 执行时机 RDB方式bgsave的基本流程 AOF持久化 RDB和AOF的对比​编辑 Redis主从 数据同步原理 总结 Redis缓存 …...

OpenCV(六):多通道分离与合并

目录 1.多通道分离split() 2.多通道合并merge() 3.Android JNI demo 1.多通道分离split() void cv::split ( InputArray m, OutputArrayOfArrays mv &#xff09; m:待分离的多通道图像。 mv:分离后的单通道图像&#xff0c;为向量vector形式。 2.多通道合并merge…...

Sql单行数据查询为多行

数据量小可以&#xff0c;数据量大时间太久 select distinct regexp_substr("fixed_option", [^,],1,level) c1 from "MATERIAL"."BasicInfo_Dishes_Summary" A where "fixed_option" is not NULL AND "dish_name"地三鲜…...

网络协议分析-http/https/tcp/udp

文章目录 TCP三次握手/TCP三次挥手TCP三次握手TCP四次挥手完整报文 实例代码HttpSampleClientHttpSampleServerHttpsSampleClientHttpsSampleServerTcpSampleClientTcpSampleServerUdpSampleClientUdpSampleSever 资料 TCP三次握手/TCP三次挥手 “三次握手”的目的是“为了防止…...

基于aarch64分析kernel源码 四:printk 内核打印

一、参考 Message logging with printk — The Linux Kernel documentation 如何获得正确的printk格式占位符 — The Linux Kernel documentation 使用printk记录消息 — The Linux Kernel documentation printk 内核打印 – 人人都懂物联网 (getiot.tech) 内核printk原理…...

机器人中的数值优化(六)—— 线搜索最速下降法

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考&#xff0c;主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等&#xff0c;本系列文章篇数较多&#xff0c;不定期更新&#xff0c;上半部分介绍无约束优化&#xff0c;…...

postman调试注意事项

Postman是一个强大的API调试工具&#xff0c;它可以帮助开发人员测试和调试API端点&#xff0c;以确保它们按预期工作。在使用Postman进行接口调试时&#xff0c;以下是一些注意事项和可能出现的问题&#xff0c;以及如何解决这些问题。 确保请求参数正确 在测试API接口时&am…...

【C#】泛型

【C#】泛型 泛型是什么 泛型是将类型作为参数传递给类、结构、接口和方法&#xff0c;这些参数相当于类型占位符。当我们定义类或方法时使用占位符代替变量类型&#xff0c;真正使用时再具体指定数据类型&#xff0c;以此来达到代码重用目的。 泛型特点 提高代码重用性一定…...

CLIP:连接文本-图像

Contrastive Language-Image Pre-Training CLIP的主要目标是通过对比学习&#xff0c;学习匹配图像和文本。CLIP最主要的作用&#xff1a;可以将文本和图像表征映射到同一个表示空间 这是通过训练模型来预测哪个图像属于给定的文本&#xff0c;反之亦然。在训练过程中&#…...

MFC网络编程简单例程

目录 一、关于网络的部分概念1 URL(网址)及URL的解析2 URL的解析3 域名及域名解析3 IP及子网掩码4 什么是Web服务器5 HTTP的基本概念6 Socket库概念7 协议栈8 Socket库收发数据基本步骤 二、基于TCP的网络应用程序三、基于UDP的网络应用程序 一、关于网络的部分概念 1 URL(网址…...

云原生简介 (Cloud Native)

云原生&#xff08;cloud Native&#xff09; 云原生的概念诞生于10年前&#xff0c;netflix 在 AWS 上的一次演讲中。有趣的是当初没有明确的定义&#xff0c;现在也没有明确的定义&#xff0c;对不同的人来说&#xff0c;有不同的概念。 概念 云原生&#xff1a;是在云上构…...

【SpringBoot系列】 测试框架之@SpringBootTest的使用

SpringBootTest的详细介绍 SpringBootTest 是 Spring Boot 测试框架中的注解&#xff0c;用于标识一个测试类&#xff0c;以指示该类是一个 Spring Boot 应用程序的测试类。它允许你在测试环境中加载整个 Spring Boot 应用程序上下文&#xff0c;测试应用程序的各种组件、服务…...

【数据结构与算法篇】手撕八大排序算法之交换排序

​&#x1f47b;内容专栏&#xff1a; 《数据结构与算法篇》 &#x1f428;本文概括&#xff1a;常见交换排序包括冒泡排序与快速排序&#xff0c;本篇讲述冒泡排序与快速排序的思想及实现、复杂度分析。 &#x1f43c;本文作者&#xff1a; 花 蝶 &#x1f438;发布时间&#…...

ArcGIS Pro实践技术应用、制图、空间分析、影像分析、三维建模、空间统计分析与建模、python融合

GIS是利用电子计算机及其外部设备&#xff0c;采集、存储、分析和描述整个或部分地球表面与空间信息系统。简单地讲&#xff0c;它是在一定的地域内&#xff0c;将地理空间信息和 一些与该地域地理信息相关的属性信息结合起来&#xff0c;达到对地理和属性信息的综合管理。GIS的…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...