【调度】基于遗传算法实现医院资源静态和动态调度优化附matlab代码

✅作者简介:热爱科研的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.

⛄ 完整代码

❤️部分理论引用网络文献,若有侵权联系博主删除

❤️ 关注我领取海量matlab电子书和数学建模资料

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值