工作流调度中的蚁群优化算法(ACO)解读

P. S. 本文中由于没有额外介绍启发式方法,故将ACO算法中每个蚂蚁生成调度方案的方式成为“调度思路设计”以便于理解

  • Abastract

  • ACO (Ant Colony Optimization)是一种较为常用的优化算法,能够通过模拟蚁群觅食行为中信息素机制实现寻优。随着工作流调度要求的不断复杂化,凭借单纯设计调度方案已经无法满足日益增长的需求,那么ACO这样一种“智能”方法,便被应用在了工作流调度中——通过设置基本调度思路,结合ACO信息素机制、迭代,实现最终最优调度方案的获取。本文首先简要介绍了ACO算法的思路,以及将其应用在工作流调度的优点;之后以代码为例,介绍ACO算法在Java语言下的实现;最后分析ACO算法在工作流调度中存在的不足,以及改进方法。

  • 1. 什么是ACO算法?

  • 本小节将简要介绍ACO算法,并介绍在工作流调度中应用的优点,最后展开介绍ACO算法的流程。

  • 1.1. ACO算法概要

  • ACO算法,俗称蚁群算法(Ant Colony Optimization),通过蚁群中各个蚂蚁进行寻优得出一个解空间,在解空间比较得到局部最优,通过信息素机制使得蚂蚁更倾向于沿着局部最优解行进,进而不断迭代得到全局最优解。ACO算法,本质上是一种元启发式算法。

  • ACO算法的提出,是基于对自然界蚁群觅食行为的观察——单个蚂蚁的行为是简单的,然而整个蚁群可以实现一些“智能”的行为。这是因为蚁群内的蚂蚁可以通过信息素机制实现信息传递。经过研究,蚂蚁会在经过的路径上释放“信息素”物质,蚁群内的蚂蚁对“信息素”具有感知能力,它们会沿着“信息素”浓较高的路径搜寻——这形成了一种类似正反馈的机制。经过一段时间,整个蚁群就会沿着最优路径达到食物源。[1]

  • 1.2. 使用ACO进行工作流调度的优点?

  • ACO算法一般会比简易启发式算法等调度方法具有优势,并且在ACO算法上进行改进的方法也会比原算法有着一定的进步,那么为什么使用ACO算法或者以ACO算法为基础进行的改进算法会有着较优的效果呢,本小节将对这个问题进行介绍。

  • 1.2.1. 能够构建“丰富”的解空间

  • 对于一个工作流调度问题,以往的算法仅能生成一个方案,或者生成一个方案后不断调换(swap)任务与计算资源的对应顺序以满足约束条件或达到优化目的;解空间仅有1个或少量可行解。并且调度思路的设计则能够决定了可行解,同时也直接决定了最终生成调度方案。

  • ACO算法能够通过蚁群中每一个蚂蚁生成一个可行解,构建“丰富”的解空间以供选择,这也为效果提升奠定了基础。

  • 1.2.2. 具有“智能性”

  • 和普通启发式算法等调度算法不同,ACO算法由于能够信息素机制的存在能够在多次迭代中对可行解进行偏好行筛选,调度思路设计中存在的一些偏颇之处可以被迭代过程盖过,可以寻找到“特定”思路之外的方案。

  • 但是!这既是优点,也存在不足,因为这一点使得寻优过程是向着一个区域前去的,而这个区域会受思路设计影响,存在寻优区域不够广、不能覆盖最优解等问题。

  • 1.3. ACO算法流程

  • 本小节将对ACO算法的步骤进行简要介绍,流程图见下:

  • ACO算法流程图

  • 1.3.1. 初始化

  • 初始化,即蚁群生成相应数量蚂蚁,同时工作流DAG图中每一条边上信息素进行初始化。一般情况下,每一条边上的信息素浓度会被设定为统一值。

  • 1.3.2 蚂蚁生成调度方案

  • 蚁群中的每一只蚂蚁都依照1)排序生成任务调度序列;2)根据序列顺序,遵循调度思路设计调度——为每一个任务寻找计算资源上对应时间段进行租用、运行。

  • 在1)中,为了模拟蚂蚁探寻的不确定性,会概率地选择下一任务,这里就使用到了信息素浓度和启发式信息;由于启发式信息在工作流确定后就基本确定,所以存在变动的信息素浓度对着路径选择有着重要作用,这也是为什么会在后面步骤进行信息素沉积和蒸发。

  • 1.3.3. 可行解比较

  • 在一次迭代中生成的所有可行解中,依据满足约束条件、优化效果进行比较,得到局部最优可行解。并与“临时的全局最优解”比较,更新全局最优解。

  • 1.3.4. 更新信息素

  • 对所有路径等比例进行信息素政法,并对具有全局最优解的路径进行一定的信息素沉积,使蚂蚁在下一次迭代中更倾向于向最优解搜寻。

  • 1.3.5. 迭代

  • 迭代1.3.2——1.3.4步骤,直至迭代代数达到最大迭代代数,便输出最终的“全局最优解”。

  • 2. ACO算法的Java代码

  • 本小节将通过代码注释对Java语言下的ACO算法程序进行解读。

  • 本代码仅仅展示编写思路,使用代码为仿真程序中截取的代码,请学习者自行编写。

// 导入包
import static java.lang.Math.*;
import java.util.*;
import cloud.workflowScheduling.setting.*;

//此处Scheduler为整个workflow仿真程序中单独便携的调度器组件
public class ACO implements Scheduler {
   
	private static final double ALPHA = 1;//用于蚂蚁在选择下一任务过程中控制信息素浓度的影响因子
	private static final double BETA = 2;//用于蚂蚁在选择下一任务过程中控制启发式信息的影响因子
	private static final double EVAP_RATIO = 0.8;//每一代路径上信息素浓度挥发比例
	private static final int NO_OF_ITE = 50;//最大迭代代数
	private static final int NO_OF_ANTS = 20;//蚁群大小——蚁群中蚂蚁个数
	
	private double[][] pheromone; 
	private double[] heuristic;
	private Workflow wf;
	private double deadline;//最晚完成时间约束
	
	@Override
	public Solution schedule(Workflow wf) {
   
		this.wf = wf;
		int size = wf.size();
		heuristic 
  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
ga遗传算法是一种启发式搜索算法,模拟了生物进化的遗传和适应性思维,通过逐代演化进化的方式不断搜索最优解。该算法通过使用选择、交叉和变异等操作对种进行演化,并且利用适应度函数来评估个体的适应性,以进一步指导进化过程。ga遗传算法有很强的全局搜索能力和较优解搜索能力,适用于解决复杂优化问题。 aco算法是通过模拟蚂在搜索食物时留下的信息素和选择路径的行为来解决优化问题的一种算法。该算法通过不断调整蚂的路径选择,以信息素浓度为引导,从而使得整个在搜索过程逐步收敛到最优解。aco算法适用于求解具有离散或连续参数的组合优化问题,尤其在TSP问题等方面有较为广泛的应用。 pso粒子优化算法模拟了鸟或鱼体的协同行为,将每个个体视为粒子,并利用当前个体的历史最优和体最优来指导搜索。该算法通过不断更新粒子在解空间的位置和速度,以寻找最优解。pso粒子优化算法具有收敛速度快、全局搜索能力强等特点,广泛应用于多目标优化、参数优化等问题。 这三种优化算法都是启发式搜索算法,根据不同的问题特点选择合适的算法进行求解。每种算法都有其独特的特点和适用范围,通过不断迭代和优化,可以找到问题的较优解或者近似最优解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值