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個單位時間.可見這種方法得出的結果還是相當使人滿意的,而且操作簡單,可監測性強.

建模資料

資料分享: 最強建模資料
在這里插入圖片描述
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/40592.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40592.shtml
英文地址,請注明出處:http://en.pswp.cn/news/40592.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Kotlin開發筆記:使用委托進行拓展

Kotlin開發筆記&#xff1a;使用委托進行拓展 導言 在OO語言(面向對象)中&#xff0c;我們經常會用到委托或者代理的思想。委托和代理在乍一看很相似&#xff0c;其實其各有各的側重點&#xff0c;這里我引用ChatGpt的回答&#xff1a; 委托&#xff08;Delegation&#xff09…

探索C語言中的常見排序算法

探索C語言中的常見排序算法 排序算法是計算機科學中至關重要的基礎知識之一&#xff0c;它們能夠幫助我們對數據進行有序排列&#xff0c;從而更高效地進行搜索、插入和刪除操作。在本篇博客中&#xff0c;我們將深入探討C語言中的一些常見排序算法&#xff0c;包括它們的工作…

在C中使用Socket實現多線程異步TCP消息發送

目錄 基礎知識開始實現主要函數說明結束語 在本篇文章中&#xff0c;我們會探討如何在C語言中使用socket來實現多線程&#xff0c;異步發送TCP消息的系統。雖然C標準庫并沒有原生支持異步和多線程編程&#xff0c;但是我們可以結合使用POSIX線程&#xff08;pthread&#xff09…

Java解決四大查找(一)

Java解決四大查找 一.線性查找1.1 題目1.2 思路分析1.3 代碼演示 二.二分查找(雙指針法)2.1 題目2.2 思路分析(圖解加文字)2.3 代碼演示 一.線性查找 1.1 題目 在數組{1&#xff0c;8&#xff0c;1024&#xff0c;521&#xff0c;1889}中查找數字8&#xff0c;如果有&#xff…

【知識分享】高防服務器的防御機制

【知識分享】高防服務器的防御機制 易受到攻擊的網站選擇接入高防服務更安全&#xff0c;大家對于這個都清楚!但是對于高防服務如何實現防御來保障安全的&#xff0c;又了解多少呢?今天壹基比小源&#xff08;貳伍壹叁壹叁壹貳玖捌&#xff09;就來說說高防服務實現防御的常規…

地址解析協議-ARP

ARP協議 無論網絡層使用何種協議&#xff0c;在實際網絡的鏈路上傳輸數據幀時&#xff0c;最終必須使用硬件地址 地址解析協議&#xff08;Address Resolution Protocol&#xff0c;ARP&#xff09;&#xff1a;完成IP地址到MAC地址的映射&#xff0c;每個主機都有一個ARP高速緩…

【數據結構】二叉樹篇| 綱領思路02+刷題

博主簡介&#xff1a;努力學習的22級計算機科學與技術本科生一枚&#x1f338;博主主頁&#xff1a; 是瑤瑤子啦每日一言&#x1f33c;: 所謂自由&#xff0c;不是隨心所欲&#xff0c;而是自我主宰。——康德 目錄 一、前言二、刷題1、翻轉二叉樹 2、二叉樹的層序遍歷?3、 二…

線性代數再回顧

最近&#xff0c;在深度學習線性代數&#xff0c;之前大一的時候學過線性代數&#xff0c;但那純屬于是應試用的&#xff0c;考試一考完&#xff0c;啥都忘了&#xff0c;也說出不出個所以然&#xff0c;所以&#xff0c;在B站的MIT的線性代數以及3blue1brown線性代數的本質中去…

git命令使用

君子拙于不知己,而信于知己。——司馬遷 清屏&#xff1a;clear 查看當前面板的路徑&#xff1a;pwd 查看當前面板的文件&#xff1a;ls 創建文件夾&#xff1a;mkdir 文件夾名 創建文件&#xff1a;touch 文件名 刪除文件夾&#xff1a;rm -rf 文件夾名 刪除文件&#xff1a;r…

Remote Sensing,2023 | 基于SBL的分布式毫米波相干雷達成像的高效實現

Remote Sensing,2023 | 基于SBL的分布式毫米波相干雷達成像的高效實現 注1&#xff1a;本文系“無線感知論文速遞”系列之一&#xff0c;致力于簡潔清晰完整地介紹、解讀無線感知領域最新的頂會/頂刊論文(包括但不限于 Nature/Science及其子刊; MobiCom, Sigcom, MobiSys, NSDI…

爬蟲IP時效問題:優化爬蟲IP使用效果實用技巧

目錄 1. 使用穩定的代理IP服務提供商&#xff1a; 2. 定期檢測代理IP的可用性&#xff1a; 3. 配置合理的代理IP切換策略&#xff1a; 4. 使用代理IP池&#xff1a; 5. 考慮代理IP的地理位置和速度&#xff1a; 6. 設置合理的請求間隔和并發量&#xff1a; 總結 在爬蟲過…

python知識:什么是字符編碼?

前言 嗨嘍&#xff0c;大家好呀~這里是愛看美女的茜茜吶 我們的MySQL使用latin1的默認字符集&#xff0c; 也就是說&#xff0c;對漢字字段直接使用GBK內碼的編碼進行存儲&#xff0c; 當需要對一些有漢字的字段進行拼音排序時&#xff08;特別涉及到類似于名字這樣的字段時…

Docker網絡與資源控制

一、Docker 網絡實現原理 Docker使用Linux橋接&#xff0c;在宿主機虛擬一個Docker容器網橋(docker0)&#xff0c;Docker啟動一個容器時會根據Docker網橋的網段分配給容器一個IP地址&#xff0c;稱為Container-IP&#xff0c;同時Docker網橋是每個容器的默認網關。因為在同一宿…

Oracle外部表ORACLE_LOADER方式加載數據

當數據源為文本或其它csv文件時&#xff0c;oracle可通過使用外部表加載數據方式&#xff0c;不需要導入可直接查詢文件內的數據。 1、如下有一個文件名為&#xff1a;test1.txt 的數據文件。數據文件內容為&#xff1a; 2、使用sys授權hr用戶可讀寫 DATA_PUMP_DIR 目錄權限&a…

探索未來:元宇宙與Web3的無限可能

隨著科技的奇跡般發展&#xff0c;互聯網已經成為了我們生活的不可分割的一部分。然而&#xff0c;盡管它的便利性和普及性帶來了巨大的影響&#xff0c;但我們仍然面臨著傳統互聯網體驗的諸多限制。 購物需要不斷在實體店與電商平臺間切換&#xff0c;教育依然受制于時間與地…

Unity如何把游戲導出成手機安裝包

文章目錄 前言使用環境步驟添加場景構建APK 前言 本文章主要演示了&#xff0c;如何將制作好的游戲&#xff0c;導出成APK&#xff0c;安裝到手機上。 使用環境 Unity2022。 步驟 首先打開你的項目&#xff0c;然后選擇菜單欄的“File” > “Build Settings…”&#xf…

QMainwindow窗口

QMainwindow窗口 菜單欄在二級菜單中輸入中文的方法給菜單欄添加相應的動作使用QMenu類的API方法添加菜單項分隔符也是QAction類 工具欄添加工具欄在狀態欄中添加控件工具欄添加其他類型的工具工具欄的屬性添加多個工具欄使用窗口添加使用代碼添加 狀態欄常用API在狀態欄顯示信…

NeuralNLP-NeuralClassifier的使用記錄(一),訓練預測自己的【英文文本多分類】

NeuralNLP-NeuralClassifier的使用記錄&#xff0c;訓練預測自己的英文文本多分類 NeuralNLP-NeuralClassifier是騰訊開發的一個多層多分類應用工具&#xff0c;支持的任務包括&#xff0c;文本分類中的二分類、多分類、多標簽&#xff0c;以及層次多標簽分類。支持的文本編碼…

C語言庫函數之 qsort 講解、使用及模擬實現

引入 我們在學習排序的時候&#xff0c;第一個接觸到的應該都是冒泡排序&#xff0c;我們先來復習一下冒泡排序的代碼&#xff0c;來作為一個鋪墊和引入。 代碼如下&#xff1a; #include<stdio.h>void bubble_sort(int *arr, int sz) {int i 0;for (i 0; i < sz…

面試熱題(最大子數組和)

給你一個整數數組 nums &#xff0c;請你找出一個具有最大和的連續子數組&#xff08;子數組最少包含一個元素&#xff09;&#xff0c;返回其最大和。 子數組 是數組中的一個連續部分。 輸入&#xff1a;nums [-2,1,-3,4,-1,2,1,-5,4] 輸出&#xff1a;6 解釋&#xff1a;連續…