资源简介

RGV动态调度问题,通过严格限定其单步时间操作完成时间最短而得到的最优化方案,在无故障率的前提下,只要限定初始RGV机车位置,便可以得到唯一的行驶轨迹和规律,通过对其初始下料顺序全排列进行优化,得到的最理想解即为接近最优解。而在有故障率的情况下,通过weibull曲线可以得出其故障时间相关期望,由期望结合实况模拟仿真,并不断循环,可以得到无数确定初始下料顺序下的调度优解,反应出RGV运行过程在不同场景下的不同规律。

资源截图

代码片段和文件信息

%%%%%%%%%%%%%%%%%%国赛单工序无故障代码

clc
clear
ord_all=perms([1 2 3 4 5 6 7 8]);
n=[];
for j=1:40320
ord=ord_all(j:);
ord=[8 5 4 2 6 1 3 7]
%para=[0 20 33 46 560 400 378 28 31 25];
%para=[0 23 41 59 580 280 500 30 35 30];
para=[0 18 32 46 545 455 182 27 32 25];
t=para(1:4);
step1=para(5);%CNC加工完成一个一道工序的物料所需时间 560
step21=para(6);%CNC加工完成一个两道工序物料的第一道工序所需时间 400
step22=para(7);%CNC加工完成一个两道工序物料的第二道工序所需时间 378
updown1=para(8);%RGV为CNC1#,3#,5#,7#一次上下料所需时间 28
updown2=para(9);%RGV为CNC2#,4#,6#,8#一次上下料所需时间 31
t_wash=para(10);%RGV完成一个物料的清洗作业所需时间 25

cnc=zeros(85);%cnc的状态01、上料开始时间、加工剩余时间、距离、上下料时间每次清洗完更新
cnc_position=[11223344];
grv_position=1;
%初始化
cnc(:1)=1;%初始都在加工状态
dist=zeros(18);
ts=zeros(18)‘;
for i=1:8
    dist(i)=abs(cnc_position(ord(i))-grv_position);
    ts(i)=t(dist(i)+1);
    grv_position=cnc_position(ord(i));
end
cnc(:5)=[updown1updown2updown1updown2updown1updown2updown1updown2];
cnc(ord(:)2)=cumsum([ts(1)cnc(ord(1)5)+ts(2)cnc(ord(2)5)+ts(3)cnc(ord(3)5)+ts(4)...
                 cnc(ord(4)5)+ts(5)cnc(ord(5)5)+ts(6)cnc(ord(6)5)+ts(7)cnc(ord(7)5)+ts(8)]);
t_work0=cnc(ord(8)2)-cnc(:2);
cnc(:3)=step1-t_work0;
cnc(:4)=abs(cnc_position-grv_position);

t_global=cnc(ord(8)2);%全局进行时
output_final=[];
% para=[0 20 33 46 560 400 378 28 31 25];
% t=para(1:4);
% %RGV移动1个单位所需时间 20
% %RGV移动2个单位所需时间 33
% %RGV移动3个单位所需时间 46
% step1=para(5);%CNC加工完成一个一道工序的物料所需时间 560
% step21=para(6);%CNC加工完成一个两道工序物料的第一道工序所需时间 400
% step22=para(7);%CNC加工完成一个两道工序物料的第二道工序所需时间 378
% updown1=para(8);%RGV为CNC1#,3#,5#,7#一次上下料所需时间 28
% updown2=para(9);%RGV为CNC2#,4#,6#,8#一次上下料所需时间 31
% t_wash=para(10);%RGV完成一个物料的清洗作业所需时间 25

% cnc=zeros(85);%cnc的状态01、上料开始时间、加工剩余时间、距离、上下料时间每次清洗完更新
% %初始化
% cnc(:1)=1;%初始都在加工状态
% cnc(:2)=cumsum([0updown1updown2+t(2)updown1updown2+t(2)updown1updown2+t(2)updown1]);
% t_work0=cnc(82)-cnc(:2);
% cnc(:3)=step1-t_work0;
% cnc(:4)=[33221100];
% cnc(:5)=[updown1updown2updown1updown2updown1updown2updown1updown2];
% t_global=cnc(82);%全局进行时
% grv_position=4;
% cnc_position=[11223344];
% output_final=[];

while(t_global<=8*3600)
    if(length(find(cnc(:1)==0))==0)
        [t_left_mini_min]=min(cnc(:3));
        t_global=t_global+t_left_min;%如果所有cnc都在加工状态,时间推移至有信号
        cnc(i_min1)=0;%更新cnc状态
        cnc(:3)=cnc(:3)-t_left_min;%更新cnc加工剩余时间
    end
    
    if(length(find(cnc(:1)==0))==1)
        po=find(cnc(:1)==0);
        t_s=t(cnc(po4)+1);
        t_updown=cnc(po5);
        t_total=t_s+t_updown+t_wash;%rgv运行至cnc并完成下上料及清洗工作总时间
        t_global=t_global+t_total;%更新时间至清洗完成
        t_left=cnc(:3)-t_total;
        %在rgv工作和清洗期间cnc完成后,状态和加工剩余时间更新
        for i=1:8
            if(t_left(i)<=0)
                cnc(i3)=0;   
                cnc(i1)=0;
            else
                cnc(i3)=cnc(i3)-t_total;   
                cnc(i1)=1;
            end
        end
        t_up=cnc(po2);
        t_down=

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5127  2018-09-16 13:40  18国赛b题\guosaib1.m

     文件      10538  2018-09-16 16:02  18国赛b题\guosaib2.m

     文件      15418  2018-09-23 13:51  18国赛b题\guosaib31.m

     文件      17480  2018-09-16 18:31  18国赛b题\guosaib32.m

     目录          0  2018-09-23 13:53  18国赛b题

----------- ---------  ---------- -----  ----

                48563                    5


评论

共有 条评论