91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 5KB
    文件類型: .py
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-16
  • 語言: Python
  • 標簽: python??蟻群算法??

資源簡介

基本蟻群算法python代碼,程序附帶測試數據

資源截圖

代碼片段和文件信息

import?randomcopy
class?Ant:
????#?任務個數
????n=9
????#?機器/集合個數
????m=3
????#?每個任務的代價
????A=[81402646598537115]
????#?信息素
????xxs=[]
????#?初始化每條邊的信息素值
????init_xxs_value=1
????#?信息素揮發因子
????p=0.4
????#?一次螞蟻搜索所釋放的信息素總量
????Q=600
????#?總迭代次數
????nc=3000
????#?搜索結果/符合條件的較好結果
????S=[A[][]]
????path=[0000000000]
????#?螞蟻數量
????ant_number=m
????#?初始化信息素列表
????def?init_xxs(self):
????????edge_value=[]
????????#?初始化第0層到第1層選擇信息素
????????for?i?in?range(0self.m):
????????????edge_value.append(self.init_xxs_value)
????????self.xxs.append(edge_value)
????????#?初始化第i層到第i+1層選擇信息素
????????for?i?in?range(1self.n):
????????????edge_value=[]
????????????for?j?in?range(0self.m):
????????????????temp_list?=?[]
????????????????for?z?in?range(0self.m):
????????????????????temp_list.append(self.init_xxs_value)
????????????????edge_value.append(temp_list)
????????????self.xxs.append(edge_value)

????#?一只螞蟻搜索過程,得到一個搜索路徑列表,第i個元素j代表在第i層選擇第j個集合/機器
????def?an_ant_search(self):
????????path_list?=?[0]
????????#?從第0層開始搜索,一直到第n-1層每層選擇下一層需要安排的任務
????????for?i?in?range(0self.n):
????????????#生成一個選擇隨機數[01)
????????????random_number?=?random.random()
????????????#?獲取選擇區間列表,如果隨機數落在區間[pp+1)上,則選擇p
????????????select_random_range_list?=?self.range_xss(ipath_list[path_list.__len__()-1])
????????????select_set_index?=?self.select_set(random_numberselect_random_range_list)
????????????path_list.append(select_set_index)
????????return?path_list
????#?獲取選擇區間列表(01)輸入第i層,選擇了第j個集合,返回第i+1層選擇集合的概率區間
????def?range_xss(selffloor_iset_j):
????????result_list=[0]
????????if?floor_i?==?0:
????????????sum_tao=?sum(self.xxs[0])
????????????sum_temp=0
????????????for?i?in?range(0self.m):
????????????????sum_temp+=self.xxs[0][i]/sum_tao
????????????????result_list.append(sum_temp)
????????????return?result_list
????????else:
????????????sum_temp?=?0
????????????sum_tao?=?sum(self.xxs[floor_i][set_j])
????????????for?i?in?range(0self.m):
????????????????sum_temp+=self.xxs[floor_i][set_j][i]/sum_tao
????????????????result_list.append(sum_temp)
?????

評論

共有 條評論