0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于matlab免疫算法求解生产调度零等待问题

嵌入式职场 来源:数学建模CUMCM 2023-07-15 09:15 次阅读

生产调度零等待问题

经典的优化问题,免疫算法(IA)是求解该问题的常用方法之一。其数学原理公式如下:

定义问题:生产调度零等待问题可表示为在满足各种制约条件下,找到最小化某个指标(如总加工时间、平均加工时间等)的调度方案。

定义目标函数:目标函数是对待优化的调度方案进行评估的函数,通常为评估调度方案的效果的指标,例如总加工时间、平均加工时间等。

初始化免疫群体:生成一组随机免疫体,作为初始免疫群体。

计算亲和度:对免疫群体中每个免疫体,通过目标函数计算其适应值,得到其在免疫群体中的亲和度。

选择克隆体:根据亲和度,选择一定数量的高亲和度免疫体进行克隆,产生一批克隆体。

变异操作:对克隆体进行变异操作,增加群体的多样性。

竞争操作:将克隆体和原始免疫体进行竞争,筛选出高亲和度的免疫体作为下一代免疫群体。

迭代求解:循环执行步骤4-7,直到达到预先设定的停止条件(如迭代次数或最优适应值达到一定程度)。

输出结果:在最终免疫群体中选择最优免疫体作为最优解输出,得到最优的调度方案。

77eae89c-2260-11ee-962d-dac502259ad0.png

function [fitness] = fitness_function(chromosome, job_times, machine_num)
    % chromosome 为染色体,表示作业的调度顺序
    num_jobs = length(job_times);
    machine_end_time = zeros(1, machine_num); % 每台机器的结束时间
    job_start_time = zeros(1, num_jobs); % 每个作业的开始时间
    for i = 1 : num_jobs
        job = chromosome(i);
        time = job_times(job);
        [~, machine_id] = min(machine_end_time);
        start_time = max(machine_end_time(machine_id), job_start_time(job));
        end_time = start_time + time;
        machine_end_time(machine_id) = end_time;
        job_start_time(job) = end_time;
    end
    fitness = sum(machine_end_time); % 目标是最小化总加工时间
end


job_times = [2, 9, 4, 7, 5]; % 每个作业的耗时
machine_num = 3; % 机器数量
options = optimoptions('ga', 'MaxGenerations', 100, 'PopulationSize', 50); % 定义GA的参数
[x, fval] = ga(@(x)fitness_function(x, job_times, machine_num), length(job_times), options); % 调用 ga 函数求解


% 输出最优解
disp(x);
disp(fval);

以上代码中,定义了一个适应度函数 fitness_function,该函数根据输入的调度顺序和每个作业的耗时,计算出每台机器的总加工时间,并将其作为函数的返回值。在主程序中,使用 MATLAB 中的 ga 函数进行求解,得到最优的调度顺序和最小的总加工时间。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • matlab
    +关注

    关注

    175

    文章

    2924

    浏览量

    228444
  • 算法
    +关注

    关注

    23

    文章

    4456

    浏览量

    90759
  • 函数
    +关注

    关注

    3

    文章

    3882

    浏览量

    61310
  • 代码
    +关注

    关注

    30

    文章

    4556

    浏览量

    66782

原文标题:【车间调度】基于matlab免疫算法求解生产调度零等待问题

文章出处:【微信号:嵌入式职场,微信公众号:嵌入式职场】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于Petri网与遗传算法的半导体生产线建模与优化调度

    能够反映生产线加工产品的多条加工路径及其资源约束,还可以对系统的设备维护、各种优先级特性进行描述,得到对生产系统更完善更精确的刻画.通过在遗传
    发表于 05-04 08:08

    AT32F403A 224K RAM 和非等待区关系详解

    刚上手雅特力的AT32F403A,里面有一些我在STM32F103上没用到的新功能,比如这个等待区,非等待区,一开始也是把我整懵逼了,但是后来搞明白之后,嗯
    发表于 11-20 21:25

    一种基于聚类和竞争克隆机制的多智能体免疫算法

    包含分布式电源的配电网无功优化matlab源代码,代码按照高水平文章复现,保证正确,可先发您文章看是否满足您的要求利用分布式电源的无功补偿能力,提出了一种基于聚类和竞争克隆机制的多智能体免疫算法
    发表于 12-29 06:50

    CH32V307等待区和非等待区的区别是什么?

    and non-0waiting areas),分为了等待区和非等待区,那么请问:1、这个非等待
    发表于 05-13 06:52

    如何提升非等待区Flash效能

    部分 AT32 带有非等待区,当代码超过等待区后,且时钟不高于 72MHz,读取Flash 的效能会降低。此时不改变外围时钟,如何快速修改程序以提高 Flash 效能?
    发表于 10-20 08:26

    闪存等待(ZW)和非等待(NZW)说明

    闪存等待区(ZW)和非等待区(NZW)有何区别?请说明。
    发表于 10-20 07:01

    擦除FLASH等待区期间需注意事项

    擦除FLASH等待区期间需注意事项有等待区的MCU 系列,在擦除等待区时需注意事项?
    发表于 10-23 07:36

    如何利用AT32系列MCU存储器中的等待区(ZW)

    本应用笔记详细描述了如何利用AT32系列MCU存储器中的等待区(ZW),实现在擦除或者编程过程中保证CPU重要内容正常运行,免受MCU失速影响。
    发表于 10-24 08:17

    免疫算法ppt

    免疫学习算法反面选择算法(Forrest);免疫学习算法(Hunt&Cooke);免疫遗传
    发表于 10-24 20:39 0次下载
    <b class='flag-5'>免疫</b><b class='flag-5'>算法</b>ppt

    基于实数编码免疫算法的分布式任务调度

    任务调度问题是一个NP难题,其算法是一个重要研究方向。该文通过对任务调度模型及已有免疫算法进行研究和比较,提出一种基于实数编码
    发表于 04-08 09:00 15次下载

    混合算法在钢构企业生产调度系统中的应用_雷兆明

    混合算法在钢构企业生产调度系统中的应用_雷兆明
    发表于 01-13 21:40 1次下载

    混合算法(GA+TS)求解作业车间调度问题—禁忌搜索部分

    种群进化+邻域搜索的混合算法(GA+TS)求解作业车间调度问题(JSP)-算法介绍
    的头像 发表于 12-24 17:12 548次阅读

    车间作业调度(jsp)智能算法求解精讲

    前言 本人之前接触了车间作业调度问题(jsp),凭借好奇之心,看了几篇论文,设计了智能算法进行了求解。 一、经典问题描述 直接借了一张图可以很好的描述经典JSP问题的本质。     其中提及的关键
    发表于 04-11 10:29 0次下载
    车间作业<b class='flag-5'>调度</b>(jsp)智能<b class='flag-5'>算法</b><b class='flag-5'>求解</b>精讲

    基于matlab遗传算法求解柔性车间调度问题

    柔性车间调度问题是在考虑到各种资源的约束下,将任务分配给机器以实现生产计划的最优化问题。遗传算法是一种启发式优化算法,能够在解决复杂的优化问题上具有很高效率和适用性。
    的头像 发表于 07-15 09:14 475次阅读

    基于matlab遗传算法求解置换流水车间调度问题

    遗传算法是一种搜索算法,通过模拟自然界生物进化过程中遗传和适应性的机制,从多个解中寻找最优解。在置换流水车间调度问题中,可以使用遗传算法求解
    的头像 发表于 07-15 09:16 604次阅读