『壹』 基於蟻群演算法的工作流任務調度演算法與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為所有點的集合
為什麼各個函數要如此定義,這個問題很難解釋清楚,這也是演算法的精妙所在。如此定義信息素的揮發和增強,以及路徑選擇,根據馬爾可夫過程(隨機過程之一)能夠推導出,在迭代了足夠多次以後,演算法能夠收斂到最佳路徑。
組合優化很有意思的,像禁忌搜索、模擬退火、蟻群演算法、遺傳演算法、神經網路這些演算法能夠解決很多生活中的實際問題,樓主有空可以招本書看看。