‘壹’ 基于蚁群算法的工作流任务调度算法与CloudSim仿真
你这个解决了吗,我毕设也做这个,能不能共享一下代码
‘贰’ 什么算法能解决多对多调度问题
我们也纠结啊
‘叁’ 急求一个车辆调度问题的蚁群算法matlab源程序,谢谢
亲,程序搞到了吗?能传一个吗?万分感谢哈
‘肆’ 你好,我想问一下,你能给我一个基于蚁群算法解决车辆优化调度问题最简单的matlab程序吗
亠
‘伍’ 如何将蚁群算法植入cloudsim作为资源调度策略
cloudsim是澳大利亚墨尔本大学的网格实验室和Gridbus项目宣布推出的云计算仿真软件。
主要类的介绍:
- Cloudlet类:构建云环境下的任务。
- DataCenter类:数据中心,支持虚拟化的网格资源,处理虚拟机上面的信息查询,也包含虚拟机对资源的分配策略的处理。
- DataCenterBroker类:隐藏了虚拟机的管理,如创建、任务提交、虚拟机的销毁等,即是一个代理业务。
- Host类:扩展了机器对虚拟机除处理单元(PE)之外的参数分配策略,如带宽、存储空间、内存等,一台Host可对应多台虚拟机。
- VirtualMachine类:虚拟机类,运行在Host上,与其它虚拟机共享资源,每台虚拟机由一个拥有者所有,可提交任务,并由VMScheler类定制该虚拟机的调度策略。
- VMScheler类:虚拟机的调度策略,用来管理执行任务,实现了任务接口。
- VMCharacteristics类:提供虚拟机描述。
- VMMAllocationPolicy类:虚拟机监视器策略类,描述同一Host上的多台虚拟机共享资源的策略。
- VMProvisioner类:实现数据中心的主机到虚拟机的映射。
主要过程:
①初始化一些值。
②创建数据中心,本实验中为两个数据中心:
DataCenter Mydatacenter_0 = createDatacenter(“MyDatacenter_0”);
DataCenter Mydatacenter_1 = createDatacenter(“MyDatacenter_1”);
③创建数据中心的代理业务:
DatacenterBroker broker = createBroker();
Int brokerId = broker.get_id();//获取代理的ID:
④创建虚拟机列表:
Private static VirtualMachineList cerateVm(int userID,int vms)
{
VirtualMachineList list = new VirtualMachineList();
//VM 一些基本参数
Long size = 10000;
Int vcpus = 1;
Int priority = 1;
String vmm = “bingchean”;//my name
//创建一个虚拟机列表数组
VirtualMachineList[] Myvm = new VirtualMachineList[vms];
For(int i = 0;i < vms;i++)
{
Vm[i] = new VirtualMachine
(new VMCharacteristics(i,usersID,size,memory,bw,vcpus,priority,
vmm,new TimeSharedVMScheler()));
//将每个创建好的虚拟机放入列表
List.add(vm[i]);
}
Return list;}
//创建15个虚拟机.
vmlist = createVM(brokerID,15);
//创建40个任务
cloudletlist = createCloudletlist(brokerId,40);
⑤提交任务列表和虚拟机列表
Broker.submitVMList(vmlist);
Broker.submitCloudletList(cloudletlist);
⑥开始仿真.
GridSim.startGridSimulation();
CloudletList newList = broker.getCloudletList();
⑦仿真结束,停止实验,打印结果.
GridSim.stop GridSimulation();
printCloudletList(newList);
⑧打印每个数据中心的dept值.
Mydatacenter_0.printDepts();
Mydatacenter_1.printDepts();
实验里运用蚁群算法对资源分配,和普通的没使用蚁群算法的随机算法进行资源分配的实验进行了对比。创建了两个数据中心,15个虚拟机,分别执行20,30,40,50,60个任务,上图中选取的是执行40个任务时的状态.最后是通过QoS标准对交付给用户的服务进行评判.
结果:
。。。。。太长
(4*40 + 11*80 + 3*60 + 2*160) / 15 = 102.67
(16*80 + 6*120 + 8*160) / 15 = 218.67
(4*80+24*120+12*240) / 15 = 405.33
(12*120 + 16*160 + 9*180 + 9*240 + 4*320) / 15 = 601.33
(32*160 + 12*240 + 16*320) / 15 = 874.67
----------------------------------------------------------------------------------------------------------------
Qos中约束条件可以表述为:
要最终寻找的路径要保证最短,且保证T(R)要最小,在图G中寻找的范围约束条件为满足上式中的ABC.这样做就可以保证云计算在资源分配策略上满足QoS标准.
‘陆’ 蚁群算法的应用范围
蚁群算法的应用非常广泛,包括:数据挖掘,模糊建模,群体智能,聚类分析,网络路由优化,物流配送车辆调度及无线传感器网络。其中的应用都有很多成功的实例。
‘柒’ 如何将蚁群算法植入cloudsim作为资源调度策略
你上面好像只是创建和提交了任务,并没有提到蚁群算法如何实现,在哪里实现,希望大神说说……
‘捌’ ,请问有利用蚁群算法实现道路全封锁的matlab程序吗急求,,,,该市地点P(第32个节点)处发生了重大刑
个人觉得蚁群算法不合适。
建议用a*算法实现。
‘玖’ 蚁群算法的核心是什么,怎么能和传统算法相结合
蚁群算法 (ant colony optimization, ACO,Ant colony optimization algorithms ) 将最优解比喻成食物,而把搜索过程比拟成蚁群在空间中寻找食物的过程,对解空间结构的认知通过“信息素”的“浓度”来表达,较好的解(路径、节点)会吸引更多的搜索力量(蚂蚁)。
ACO 本身是一种进化算法,在调度研究中取得了一些应用,但对于实际规模的问题,通常也是束手无策,解决的关键在于问题本身结构的分析和利用。
‘拾’ 蚁群算法车辆路径优化问题信息素如何选择
述了。
目前蚁群算法主要用在组合优化方面,基本蚁群算法的思路是这样的:
1. 在初始状态下,一群蚂蚁外出,此时没有信息素,那么各自会随机的选择一条路径。
2. 在下一个状态,每只蚂蚁到达了不同的点,从初始点到这些点之间留下了信息素,蚂蚁继续走,已经到达目标的蚂蚁开始返回,与此同时,下一批蚂蚁出动,它们都会按照各条路径上信息素的多少选择路线(selection),更倾向于选择信息素多的路径走(当然也有随机性)。
3. 又到了再下一个状态,刚刚没有蚂蚁经过的路线上的信息素不同程度的挥发掉了(evaporation),而刚刚经过了蚂蚁的路线信息素增强(reinforcement)。然后又出动一批蚂蚁,重复第2个步骤。
每个状态到下一个状态的变化称为一次迭代,在迭代多次过后,就会有某一条路径上的信息素明显多于其它路径,这通常就是一条最优路径。
关键的部分在于步骤2和3:
步骤2中,每只蚂蚁都要作出选择,怎样选择呢?
selection过程用一个简单的函数实现:
蚂蚁选择某条路线的概率=该路线上的信息素÷所有可选择路线的信息素之和
假设蚂蚁在i点,p(i,j)表示下一次到达j点的概率,而τ(i,j)表示ij两点间的信息素,则:
p(i,j)=τ(i,j)/∑τ(i)
(如果所有可选路线的信息素之和∑τ(i)=0,即前面还没有蚂蚁来过,概率就是一个[0,1]上的随机值,即随机选择一条路线)
步骤3中,挥发和增强是算法的关键所在(也就是如何数学定义信息素的)
evaporation过程和reinforcement过程定义了一个挥发因子,是迭代次数k的一个函数
ρ(k)=1-lnk/ln(k+1)
最初设定每条路径的信息素τ(i,j,0)为相同的值
然后,第k+1次迭代时,信息素的多少
对于没有蚂蚁经过的路线:τ(i,j,k+1)=(1-ρ(k))τ(i,j,k),显然信息素减少了
有蚂蚁经过的路线:τ(i,j,k+1)=(1-ρ(k))τ(i,j,k)+ρ(k)/|W|,W为所有点的集合
为什么各个函数要如此定义,这个问题很难解释清楚,这也是算法的精妙所在。如此定义信息素的挥发和增强,以及路径选择,根据马尔可夫过程(随机过程之一)能够推导出,在迭代了足够多次以后,算法能够收敛到最佳路径。
组合优化很有意思的,像禁忌搜索、模拟退火、蚁群算法、遗传算法、神经网络这些算法能够解决很多生活中的实际问题,楼主有空可以招本书看看。