• 大小: 3KB
    文件类型: .py
    金币: 2
    下载: 1 次
    发布日期: 2021-06-13
  • 语言: Python
  • 标签: python  

资源简介

用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

评论

共有 条评论