✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
FJSP算法操作说明:
1 静态数据表格(按照hospitaldata.xlsx文件格式填入预处理数据)
1.1病人表格
* 病人表格中包含病人个数,每位病人需要处理的时间长度和处理时占用的医疗资源,以及最早开始和最晚结束时间;
* 此处医疗资源填写的医疗资源类别,1是指医生,2是指护士,也可按实际情况增删
* 病人数量可以按实际情况增删
* 此表格中最早开始,最晚结束和处理时长都是以小时为单位,30分钟需要填写成0.5小时
1.2 医疗资源表格
* 此表格中代表医疗资源类别,与病人表格中对应
* 表格第一行第一列代表病人表格中1(医生)类别的个数
* 表格第一行第二列代表病人表格中2(护士)类别的个数
* 增加医疗资源类别时,需按顺序一次后续增加
1.3 医疗资源坐标表格
* 此表是对医疗资源表格的详细表达,即展示每种资源的坐标信息
2 动态数据表格(按照changedata.xlsx文件格式填入变动信息的数据)
(**重点:动态事件表格中的新增患者,删除患者,删除医疗资源 三个表格都能单独处理,而新增医疗资源表格需要和其他表格配合,因为没有患者增删等信息时,默认会按照静态方案执行)
2.1 新增患者表格
* 表格中包含病人个数,每位病人需要处理的时间长度和处理时占用的医疗资源,以及最早开始和最晚结束时间,与hospitaldata.xlsx文件中病人表格格式一致
* 此表格信息会累加到初始化病人数据信息中,譬如初始化病人个数是5,id标志是1,2,3,4,5,新增的2位患者的id标志将会是6和7
2.2 删除患者表格
* 此表格中包含需删除患者id信息和从该患者哪个任务开始进行删除
* 如果患者有4个待处理的任务,如果此表格中填写的处理阶段是2,则2,3,4三个任务都会删除掉,即从该任务开始,包含后续任务都会被删除(先默认如此)
* 如果需要删除的任务在已经在动态事件发生前处理或正在处理,则忽略此删除信息
2.3 新增医疗资源表格
* 此表格中包含新增资源的类别,和该类别新增的资源数量
* 新增资源的id会在已有资源的基础上累计,譬如原始资源信息是3位医生(在甘特图的id:1,2,3)和5位护士(在甘特图的id:4,5,6,7,8),如果新增2位医生,则对应甘特图的id信息为(9,10),再新增1位护士,则对应甘特图的id信息为11
2.4 删除医疗资源表格
* 此表格中包含删除资源的ID信息,此ID信息与甘特图中的纵坐标一致
* 如果在动态时刻开始前,该医疗资源已经处理和正在处理的任务将不受影响
⛄ 部分代码
%job_waittime 等待时间
%
% 获取mac的个数
nb_mac = mac_max_num(mac);
% 获取job个数
job_num = length(job);
job_start = cell(1,job_num);
job_end = cell(1,job_num);
for i = 1:job_num
job_start{i} = zeros(1, length(job{i}));
job_end{i} = zeros(1, length(job{i}));
end
job_wait = zeros(1,job_num);
for i=1:nb_mac
for j=1:length(mac_start{i})
job_start{mac_serial{i}(j,1)}(mac_serial{i}(j,2)) = mac_start{i}(j);
job_end{mac_serial{i}(j,1)}(mac_serial{i}(j,2)) = mac_end{i}(j);
end
end
for k = 1:job_num
for j = 2:length(job_start{k})
if job_start{k}(j) > job_end{k}(j-1)
job_wait(1,k) = job_wait(1,k) + job_start{k}(j) - job_end{k}(j-1);
end
end
end
end
⛄ 运行结果
⛄ 参考文献
[1]连芳. 基于遗传算法的自动化立体仓库调度优化研究[D]. 河北大学.
[2]杨晶, 曾斌. 基于遗传算法的维修任务调度优化及仿真[J]. 计算机工程, 2009, 35(18):4.
[3]于文超. 城市公共自行车系统智能调度优化算法研究[D]. 上海交通大学, 2015.