您现在的位置:首页 >> 智能优化 >> 内容

基于GA遗传优化的flog任务调度算法matlab仿真

时间:2023/2/2 21:11:50 点击:

  核心提示:A327,包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/Y56amJlt

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览





3.算法概述

        遗传算法GA把问题的解表示成“染色体”,在算法中也即是以二进制编码的串。并且,在执行遗传算法之前,给出一群“染色体”,也即是假设解。然后,把这些假设解置于问题的“环境”中,并按适者生存的原则,从中选择出较适应环境的“染色体”进行复制,再通过交叉,变异过程产生更适应环境的新一代“染色体”群。这样,一代一代地进化,最后就会收敛到最适应环境的一个“染色体”上,它就是问题的最优解。

4.部分源码

....................................................

%GA

MaxIt = 60; % 最大迭代次数

nPop  = 50; % 人口规模

pc    = 0.8;                 % 交叉百分比

nc    = 2*round(pc*nPop/2);  % 子代数量(也包括Parnets)

pm    = 0.4;                 % 突变百分比

nm    = round(pm*nPop);      % 突变体数量

mu    = 0.05;                % 突变率

UseRandomSelection =true; 

pause(0.01); 

Best_Orchestration=[];

%初始化

for step=1:1

    S=CreatTask(S,1);

    for i=1:length(S)

        Tasks(i)=S{i}.Tasks;

    end

    empty_individual.Position = [];

    empty_individual.Cost = [];

    pop = repmat(empty_individual, nPop, 1);

    for i = 1:nPop

        %初始化位置

        pop(i).Position = randerr(SensorNum,FogNum)';

        %评价

        pop(i).Cost = NetworkModel(pop(i).Position,S,F,Tasks); 

    end

    %排序填充

    Costs = [pop.Cost];

    [Costs, SortOrder] = sort(Costs,'descend');

    pop = pop(SortOrder);

    %存储最佳解决方案

    BestSol = pop(1);

    %保持最佳成本值的阵列

    BestCost = zeros(MaxIt, 1);

    %成本

    WorstCost = pop(end).Cost;

    for it = 1:MaxIt

        it

        % Crossover

        popc = repmat(empty_individual, nc/2, 2);

        for k = 1:nc/2

            i1 = randi([1 nPop]);

            i2 = randi([1 nPop]);

            % Select

            p1 = pop(i1);

            p2 = pop(i2);

            % Perform Crossover

            [popc(k, 1).Position, popc(k, 2).Position] =MyCrossOver(p1.Position, p2.Position);

            % Evaluate Offsprings

            popc(k, 1).Cost = NetworkModel(popc(k,1).Position,S,F);

            popc(k, 2).Cost = NetworkModel(popc(k,2).Position,S,F);

        end

        popc = popc(:);

...........................................................................

        % Create Merged Population

        pop = [pop

            popc

            popm]; %#ok

        % Sort Population

        Costs = [pop.Cost];

        [Costs, SortOrder] = sort(Costs,'descend');

        pop = pop(SortOrder);

        % Update Worst Cost

        WorstCost = max(WorstCost, pop(end).Cost);

        % Truncation

        pop = pop(1:nPop);

        Costs = Costs(1:nPop);

        BestSol = pop(1);

        BestCost(it) = BestSol.Cost;

    end

    %Results

    [cost_func,total_cost(step),make_span(step),total_distance(step)]=NetworkModel(BestSol.Position,S,F)

    [rx,cx]                   = size(BestSol.Position);

    Best_Nodes_For_Tasks      = ChromosomeEncoding(BestSol.Position,rx,cx);

    Best_Orchestration(step,:)= Best_Nodes_For_Tasks;

    PlotFogCluser(F,S,Best_Nodes_For_Tasks,step);

    

    figure;

    plot(BestCost,'-bs',...

    'LineWidth',2,...

    'MarkerSize',8,...

    'MarkerEdgeColor','k',...

    'MarkerFaceColor',[0.0,0.9,0.0]);

    xlabel('Iteration');

    ylabel('Cost');

    title(['Cost function for task: ',num2str(step)])

end

A327

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168