异构分布式系统中一种新的基于无序遗传的任务调度算法(Matlab代码实现)

 👨‍🎓个人主页:研学社的博客 

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码及文章讲解


💥1 概述

网格和云计算等分布式系统为世界各地的用户提供web服务。服务提供商遇到的最重要的问题之一是处理总体拥有成本(TCO)。由于资源管理效率低下,TCO的很大一部分与功耗有关。任务调度模块作为一个关键组件,可以对用户响应时间和底层资源利用率产生巨大影响。这样的异构分布式系统具有以不同速度和架构互连的不同处理器。此外,通常以有向无环图(DAG)的形式呈现的用户应用程序必须在这种类型的并行处理系统上执行

由于此类复杂系统中的任务调度属于NP难问题,现有的启发式方法不再有效。因此,趋势是应用混合元启发式方法。在本文中,我们扩展了一种基于元启发式混合遗传的任务调度算法,以最小化用户应用程序的总执行时间(makespan)。在这方面,我们利用其他启发式方法,如异构最早完成时间(HEFT)方法,通过应用新的洗牌算子来生成智能初始种群,这将在搜索空间中探索可行和有前途的个体。我们还以正确的方式指导其他遗传算子,以产生最终接近最优的解。为了取得具体的结果,我们进行了几个场景。与其他现有方法(如HEFT版本和QGARAR)相比,我们提出的算法在平均完工时间方面优于其他现有方法。

详细文章讲解见第4部分。

📚2 运行结果

部分代码:

clc
clear
close all
%%
global nVM nTask DAG extP0 extP1 extP2 c
nVM=3; % Number of Hetergenous Virtual Machines
c=ones(nVM)-eye(nVM);  % communication time between servers
nTask=11; % Number of Tasks
DAG=[0 12 14 0 0 0 0 0 0 0 0  % Directed Acyclic Graph
     0 0 0 8 15 11 0 0 0 0 0
     0 0 0 0 0 0 13 0 0 0 0
     0 0 0 0 0 0 0 11 0 0 0
     0 0 0 0 0 0 0 8 0 0 0
     0 0 0 0 0 0 0 0 7 12 0
     0 0 0 0 0 0 0 0 0 14 0
     0 0 0 0 0 0 0 0 0 0 15
     0 0 0 0 0 0 0 0 0 0 7
     0 0 0 0 0 0 0 0 0 0 10
     0 0 0 0 0 0 0 0 0 0 0];
extP0=[7 10 5 6 10 11 12 10 8 15 8]; %Execution Time on Processor1
extP1=[9 9 7 8 8 13 15 13 9 11 9];
extP2=[8 14 6 7 6 15 18 7 10 13 10];
Wbar=[8 11 6 7 8 13 15 10 9 13 9]; % Average Computation Cost
npop=20; % population size
maxIter= 100; % maximum number of generation
%% The first generation:
population=INITp(npop);
%% Genetic optimization:
for iter=1:maxIter
    for i=1:npop
        cost(i)=MAPPER(population{i});
        fitness(i)=1/cost(i);
    end
    for i=1:npop
        probs(i)=fitness(i)/sum(fitness);
    end
    [val,idx]=sort(cost);
    best=population{idx(1)};
    min_cost=val(1);
    disp(['Generation ',num2str(iter),' ... min cost= ',num2str(min_cost)]);
    plot(iter,min_cost,'ko');
    hold on
    pause(0.000001)
    for i=1:npop
        if i<= 0.2 * npop
            newPopulation{i}=population{idx(i)};
        else
            id1=randsrc(1,1,[1:npop;probs]); % Roullete wheel 

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]Hosseini, M. (2018). A new Shuffled Genetic-based Task Scheduling Algorithm in Heterogeneous Distributed Systems. Journal of Advances in Computer Research, 9(4), 19-36.

 

🌈4 Matlab代码及文章讲解

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

荔枝科研社

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

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

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

打赏作者

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

抵扣说明:

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

余额充值