2023國(guó)賽數(shù)學(xué)建模思路 - 案例:最短時(shí)間生產(chǎn)計(jì)劃安排
0 賽題思路
(賽題出來以后第一時(shí)間在群內(nèi)分享)
2023高教社杯全國(guó)大學(xué)生數(shù)學(xué)建模競(jìng)賽
資料思路分享Q群:575833716
最短時(shí)間生產(chǎn)計(jì)劃模型
1 模型描述
離散系統(tǒng)仿真在工業(yè)生產(chǎn)的工序安排中起到了相當(dāng)重要的作用,如何就一些內(nèi)部機(jī)制復(fù)雜的離散問題建立簡(jiǎn)單易行、可監(jiān)測(cè)性強(qiáng)的數(shù)學(xué)模型一直是仿真技術(shù)的研究熱點(diǎn).
離散事件系統(tǒng)現(xiàn)有三種仿真建模策略,即:
事件調(diào)度法
活動(dòng)掃描法
進(jìn)程交互法.
該模型demo學(xué)長(zhǎng)采用了其中的活動(dòng)掃描法對(duì)生產(chǎn)中的一個(gè)實(shí)際例子進(jìn)行了處理.
活動(dòng)掃描法對(duì)于各事件之間相關(guān)性很強(qiáng)的系統(tǒng)有著很好的適用性.
2 實(shí)例
2.1 問題描述
在許多工廠生產(chǎn)過程中,由于設(shè)備的數(shù)量、產(chǎn)品加工的次序限制,往往不能簡(jiǎn)單地安排生產(chǎn)任務(wù).我們?cè)O(shè)想,應(yīng)用強(qiáng)大的數(shù)學(xué)軟件配合簡(jiǎn)單易行的方法進(jìn)行安排.
設(shè)某重型機(jī)械廠產(chǎn)品都是單件性的,其中有一車間共有4種不同設(shè)備,現(xiàn)接受6件產(chǎn)品的加工任務(wù),每件產(chǎn)品接受的程序在指定的設(shè)備上加工,其工序與加工周期如下表

現(xiàn)在我們根據(jù)這一實(shí)際問題,尋求安排的方法.
要求:
1、每件產(chǎn)品必須按規(guī)定的工序加工,不得顛倒.
2、每臺(tái)設(shè)備在同一時(shí)間只能擔(dān)任一項(xiàng)任務(wù)(每件產(chǎn)品的每個(gè)工序?yàn)橐粋€(gè)任務(wù)).
3、在盡可能短的時(shí)間里,完成所接受的全部任務(wù).
為了節(jié)省電能,合理分配生產(chǎn)任務(wù),廠方還要求:
1、做出每件產(chǎn)品的每個(gè)工序開工、完工時(shí)間表.
2、給出每臺(tái)設(shè)備承擔(dān)任務(wù)的時(shí)間表.
2.2 數(shù)學(xué)模型
2.2.1 模型流程

2.2.2 符號(hào)約定

2.2.3 求解模型



2.3 相關(guān)代碼
clear
clc
seq=[3 1 2 3 4 0 0 0 ? ? ? ? ? ? ? ? ? ? %各產(chǎn)品加工時(shí)所用的設(shè)備的次序
? ? 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 ? ? ? ? ? ? ? ? ? %加工對(duì)應(yīng)使用的時(shí)間
? ? ?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 ? ? ? ? ? ? ? ? ? ? ? ? ?%生產(chǎn)各件產(chǎn)品所需的總時(shí)間
mes=cell(4,1); ? ? ? ? ? ? ? ? ? %記錄各個(gè)設(shè)備的工作時(shí)間(對(duì)應(yīng)于上面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); ? ? ? ? ? ? ? %記錄四個(gè)設(shè)備的開關(guān)時(shí)間及加工對(duì)象(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個(gè)產(chǎn)品的加工進(jìn)度,0表示未進(jìn)行,1表示已開始(或已結(jié)束),2表示可選,3表示沒有這個(gè)程序
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矩陣中逐列搜索,若設(shè)備處于關(guān)機(jī)狀態(tài),則作記錄(可用)
? ? ? ? ? ?on=[on i];
? ? ? ?end
? ?end
? ?l1=length(on);
? ?for m=1:l1 ? ? ? ? ?%在整個(gè)生產(chǎn)計(jì)劃中(對(duì)設(shè)備逐個(gè))尋找能夠選作操作的步驟
? ? ? ?[x,y]=find(open==2);
? ? ? ?l2=length(x);
? ? ? ?a=[x(1) y(1)];
? ? ? ?for k=1:l2 ? %對(duì)某個(gè)設(shè)備on(m),找出當(dāng)前它能操作的步驟中耗時(shí)最小的一個(gè)
? ? ? ? ? ?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
%若時(shí)間為100則意味著這個(gè)步驟不屬于我們希望使用的那件設(shè)備
? ? ? ? ? ?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 模型求解結(jié)果
每件產(chǎn)品的每個(gè)工序開工、完工時(shí)間表

每臺(tái)設(shè)備承擔(dān)任務(wù)的時(shí)間表

從結(jié)果中我們可以看到,使用這種方法,只需78?jìng)€(gè)單位時(shí)間就可以完成所有的工序.而我們同時(shí)也可以在論文的開始部分看到,單就完成 就需耗費(fèi)75個(gè)單位時(shí)間.可見這種方法得出的結(jié)果還是相當(dāng)使人滿意的,而且操作簡(jiǎn)單,可監(jiān)測(cè)性強(qiáng).
建模資料
資料分享: 最強(qiáng)建模資料


2023高教社杯全國(guó)大學(xué)生數(shù)學(xué)建模競(jìng)賽
資料思路分享Q群:575833716