0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于matlab免疫算法求解生產(chǎn)調(diào)度零等待問題

嵌入式職場 ? 來源:數(shù)學(xué)建模CUMCM ? 2023-07-15 09:15 ? 次閱讀

生產(chǎn)調(diào)度零等待問題

經(jīng)典的優(yōu)化問題,免疫算法(IA)是求解該問題的常用方法之一。其數(shù)學(xué)原理公式如下:

定義問題:生產(chǎn)調(diào)度零等待問題可表示為在滿足各種制約條件下,找到最小化某個(gè)指標(biāo)(如總加工時(shí)間、平均加工時(shí)間等)的調(diào)度方案。

定義目標(biāo)函數(shù):目標(biāo)函數(shù)是對待優(yōu)化的調(diào)度方案進(jìn)行評(píng)估的函數(shù),通常為評(píng)估調(diào)度方案的效果的指標(biāo),例如總加工時(shí)間、平均加工時(shí)間等。

初始化免疫群體:生成一組隨機(jī)免疫體,作為初始免疫群體。

計(jì)算親和度:對免疫群體中每個(gè)免疫體,通過目標(biāo)函數(shù)計(jì)算其適應(yīng)值,得到其在免疫群體中的親和度。

選擇克隆體:根據(jù)親和度,選擇一定數(shù)量的高親和度免疫體進(jìn)行克隆,產(chǎn)生一批克隆體。

變異操作:對克隆體進(jìn)行變異操作,增加群體的多樣性。

競爭操作:將克隆體和原始免疫體進(jìn)行競爭,篩選出高親和度的免疫體作為下一代免疫群體。

迭代求解:循環(huán)執(zhí)行步驟4-7,直到達(dá)到預(yù)先設(shè)定的停止條件(如迭代次數(shù)或最優(yōu)適應(yīng)值達(dá)到一定程度)。

輸出結(jié)果:在最終免疫群體中選擇最優(yōu)免疫體作為最優(yōu)解輸出,得到最優(yōu)的調(diào)度方案。

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

function [fitness] = fitness_function(chromosome, job_times, machine_num)
    % chromosome 為染色體,表示作業(yè)的調(diào)度順序
    num_jobs = length(job_times);
    machine_end_time = zeros(1, machine_num); % 每臺(tái)機(jī)器的結(jié)束時(shí)間
    job_start_time = zeros(1, num_jobs); % 每個(gè)作業(yè)的開始時(shí)間
    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); % 目標(biāo)是最小化總加工時(shí)間
end


job_times = [2, 9, 4, 7, 5]; % 每個(gè)作業(yè)的耗時(shí)
machine_num = 3; % 機(jī)器數(shù)量
options = optimoptions('ga', 'MaxGenerations', 100, 'PopulationSize', 50); % 定義GA的參數(shù)
[x, fval] = ga(@(x)fitness_function(x, job_times, machine_num), length(job_times), options); % 調(diào)用 ga 函數(shù)求解


% 輸出最優(yōu)解
disp(x);
disp(fval);

以上代碼中,定義了一個(gè)適應(yīng)度函數(shù) fitness_function,該函數(shù)根據(jù)輸入的調(diào)度順序和每個(gè)作業(yè)的耗時(shí),計(jì)算出每臺(tái)機(jī)器的總加工時(shí)間,并將其作為函數(shù)的返回值。在主程序中,使用 MATLAB 中的 ga 函數(shù)進(jìn)行求解,得到最優(yōu)的調(diào)度順序和最小的總加工時(shí)間。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • matlab
    +關(guān)注

    關(guān)注

    179

    文章

    2946

    瀏覽量

    229455
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4551

    瀏覽量

    92016
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4235

    瀏覽量

    61965
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4670

    瀏覽量

    67760

原文標(biāo)題:【車間調(diào)度】基于matlab免疫算法求解生產(chǎn)調(diào)度零等待問題

文章出處:【微信號(hào):嵌入式職場,微信公眾號(hào):嵌入式職場】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于Petri網(wǎng)與遺傳算法的半導(dǎo)體生產(chǎn)線建模與優(yōu)化調(diào)度

    能夠反映生產(chǎn)加工產(chǎn)品的多條加工路徑及其資源約束,還可以對系統(tǒng)的設(shè)備維護(hù)、各種優(yōu)先級(jí)特性進(jìn)行描述,得到對生產(chǎn)系統(tǒng)更完善更精確的刻畫.通過在遺傳
    發(fā)表于 05-04 08:08

    AT32F403A 224K RAM 和非等待區(qū)關(guān)系詳解

    剛上手雅特力的AT32F403A,里面有一些我在STM32F103上沒用到的新功能,比如這個(gè)等待區(qū),非等待區(qū),一開始也是把我整懵逼了,但是后來搞明白之后,嗯
    發(fā)表于 11-20 21:25

    一種基于聚類和競爭克隆機(jī)制的多智能體免疫算法

    包含分布式電源的配電網(wǎng)無功優(yōu)化matlab源代碼,代碼按照高水平文章復(fù)現(xiàn),保證正確,可先發(fā)您文章看是否滿足您的要求利用分布式電源的無功補(bǔ)償能力,提出了一種基于聚類和競爭克隆機(jī)制的多智能體免疫算法
    發(fā)表于 12-29 06:50

    CH32V307等待區(qū)和非等待區(qū)的區(qū)別是什么?

    and non-0waiting areas),分為了等待區(qū)和非等待區(qū),那么請問:1、這個(gè)非等待
    發(fā)表于 05-13 06:52

    如何提升非等待區(qū)Flash效能

    部分 AT32 帶有非等待區(qū),當(dāng)代碼超過等待區(qū)后,且時(shí)鐘不高于 72MHz,讀取Flash 的效能會(huì)降低。此時(shí)不改變外圍時(shí)鐘,如何快速修改程序以提高 Flash 效能?
    發(fā)表于 10-20 08:26

    閃存等待(ZW)和非等待(NZW)說明

    閃存等待區(qū)(ZW)和非等待區(qū)(NZW)有何區(qū)別?請說明。
    發(fā)表于 10-20 07:01

    擦除FLASH等待區(qū)期間需注意事項(xiàng)

    擦除FLASH等待區(qū)期間需注意事項(xiàng)有等待區(qū)的MCU 系列,在擦除等待區(qū)時(shí)需注意事項(xiàng)?
    發(fā)表于 10-23 07:36

    如何利用AT32系列MCU存儲(chǔ)器中的等待區(qū)(ZW)

    本應(yīng)用筆記詳細(xì)描述了如何利用AT32系列MCU存儲(chǔ)器中的等待區(qū)(ZW),實(shí)現(xiàn)在擦除或者編程過程中保證CPU重要內(nèi)容正常運(yùn)行,免受MCU失速影響。
    發(fā)表于 10-24 08:17

    免疫算法ppt

    免疫學(xué)習(xí)算法反面選擇算法(Forrest);免疫學(xué)習(xí)算法(Hunt&Cooke);免疫遺傳
    發(fā)表于 10-24 20:39 ?0次下載
    <b class='flag-5'>免疫</b><b class='flag-5'>算法</b>ppt

    基于實(shí)數(shù)編碼免疫算法的分布式任務(wù)調(diào)度

    任務(wù)調(diào)度問題是一個(gè)NP難題,其算法是一個(gè)重要研究方向。該文通過對任務(wù)調(diào)度模型及已有免疫算法進(jìn)行研究和比較,提出一種基于實(shí)數(shù)編碼
    發(fā)表于 04-08 09:00 ?15次下載

    基于多目標(biāo)免疫的任務(wù)調(diào)度算法

    針對云計(jì)算環(huán)境下任務(wù)調(diào)度問題,為減少任務(wù)完工時(shí)間,同時(shí)降低任務(wù)執(zhí)行費(fèi)用,提出一種改進(jìn)的基于多目標(biāo)免疫系統(tǒng)的任務(wù)調(diào)度算法IMISA來尋找較優(yōu)的可行分配方案。與傳統(tǒng)分配適應(yīng)度值不同,該
    發(fā)表于 12-22 14:51 ?0次下載
    基于多目標(biāo)<b class='flag-5'>免疫</b>的任務(wù)<b class='flag-5'>調(diào)度</b><b class='flag-5'>算法</b>

    MATLAB教程之如何使用MATLAB求解數(shù)學(xué)問題資料概述

    ,7曲面積分的MATLAB運(yùn)算,8 函數(shù)的點(diǎn),9 一元函數(shù)極值,10級(jí)數(shù),11微分方程問題的計(jì)算機(jī)求解,12概率統(tǒng)計(jì),13插值,14 曲線擬合,15小結(jié)
    發(fā)表于 01-04 14:55 ?0次下載
    <b class='flag-5'>MATLAB</b>教程之如何使用<b class='flag-5'>MATLAB</b><b class='flag-5'>求解</b>數(shù)學(xué)問題資料概述

    混合算法(GA+TS)求解作業(yè)車間調(diào)度問題—禁忌搜索部分

    種群進(jìn)化+鄰域搜索的混合算法(GA+TS)求解作業(yè)車間調(diào)度問題(JSP)-算法介紹
    的頭像 發(fā)表于 12-24 17:12 ?701次閱讀

    基于matlab遺傳算法求解柔性車間調(diào)度問題

    柔性車間調(diào)度問題是在考慮到各種資源的約束下,將任務(wù)分配給機(jī)器以實(shí)現(xiàn)生產(chǎn)計(jì)劃的最優(yōu)化問題。遺傳算法是一種啟發(fā)式優(yōu)化算法,能夠在解決復(fù)雜的優(yōu)化問題上具有很高效率和適用性。
    的頭像 發(fā)表于 07-15 09:14 ?643次閱讀

    基于matlab遺傳算法求解置換流水車間調(diào)度問題

    遺傳算法是一種搜索算法,通過模擬自然界生物進(jìn)化過程中遺傳和適應(yīng)性的機(jī)制,從多個(gè)解中尋找最優(yōu)解。在置換流水車間調(diào)度問題中,可以使用遺傳算法求解
    的頭像 發(fā)表于 07-15 09:16 ?900次閱讀