資源簡介
用python實現果蠅優化算法,并將該算法進行sphere函數的優化,注釋較為詳細。因初學python,對另外對果蠅優化算法的理解還不夠深入
代碼片段和文件信息
import?random
import?numpy?as?np
import?matplotlib.pyplot?as?plt
“““————————定義sphere函數————————“““
def?sphere(dimsmell):
????sum=0
????#?Z=[smell?for?x?in?range(0dim)]
????for?i?in?range(dim):
????????sum+=smell[i]**2
????????return?sum
“““————————算法開始————————————“““
#迭代次數
maxgen=1000
#種群數量
sizepop=100
#維度
dim=20
#在進行初始化操作之后,第一次finess統計時的適應度值
smellList=[]
#用于存放每次迭代的最優值
allFiness=[]
#用于存放果蠅的位置坐標
X=np.zeros((sizepopdim))
Y=np.zeros((sizepopdim))
#存放距離數值
Distance=np.zeros((sizepopdim))
#存放距離的倒數
Smell=np.zeros((sizepopdim))
“““-----找出第一次的最佳位置,用于和以后的迭代巡游進行對比----“““
for?i?in?range(sizepop):
????for?j?in?range(dim):
????????#根據果蠅種群數量和維度進行位置初始化附與果蠅個體利用嗅覺搜尋食物之隨機方向與距離
????????X[ij]=10.0*random.random()+2*random.random()-1
????????Y[ij]=10.0*random.random()+2?*?random.random()?-?1
for?i?in?range(sizepop):
????for?j?in?range(dim):
????????Distance[ij]=(X[ij]**2+Y[ij]**2)**0.5
????????Smell[ij]=1/Distance[ij]
????smellList.append(sphere(sizepop?Smell[i]))
#找出群體中適應度最小的值
finess=np.min(smellList)
#較好果蠅位置的坐標索引
index=smellList.index(min(smellList))
#存放第一次果蠅較好的適應度值
allFiness.append(finess)
#將第一次果蠅位置較好的坐標進行記錄
x=X[index]
y=Y[index]
“““-------迭代尋優開始------“““
for?i
- 上一篇:通過python實現批量excel轉pdf代碼
- 下一篇:dbfpy操作dbf文件
評論
共有 條評論