python:改进型鳟海鞘算法(SSALEO)求解23个基本函数

一、改进型鳟海鞘算法SSALEO

改进型鳟海鞘算法(SSALEO)由Mohammed Qaraad等人于2022年提出。

参考文献:M. Qaraad, S. Amjad, N. K. Hussein, S. Mirjalili, N. B. Halima and M. A. Elhosseini, "Comparing SSALEO as a Scalable Large Scale Global Optimization Algorithm to High-Performance Algorithms for Real-World Constrained Optimization Benchmark," in IEEE Access, vol. 10, pp. 95658-95700, 2022, doi: 10.1109/ACCESS.2022.3202894.

二、SSALEO求解23个测试函数

23个测试函数简介

测试集:23组基本测试函数简介及图像(提供python代码)_IT猿手的博客-CSDN博客

部分代码

from FunInfo import Get_Functions_details
from SSALEO import SSALEO
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['Microsoft YaHei']
#主程序
function_name =13 #测试函数1-23
SearchAgents_no = 50#种群大小
Max_iter = 100#迭代次数
lb,ub,dim,fobj=Get_Functions_details(function_name)#获取问题信息
BestX,BestF,curve = SSALEO(SearchAgents_no, Max_iter,lb,ub,dim,fobj)#问题求解

#画收敛曲线图
if BestF>0:
    plt.semilogy(curve,color='r',linewidth=2,label='SSALEO')
else:
    plt.plot(curve,color='r',linewidth=2,label='SSALEO')
plt.xlabel("Iteration")
plt.ylabel("Fitness")
plt.xlim(0,Max_iter)
plt.title("F"+str(function_name))
plt.legend()
plt.savefig(str(function_name)+'.png')
plt.show()
print('\nThe best solution is:\n'+str(BestX))
print('\nThe best optimal value of the objective funciton is:\n'+str(BestF))

部分结果

三、完整Python代码

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
多目标海鞘算法(Multi-objective Cnidarian Optimization Algorithm,MO-COA)是一种用于解决多目标优化问题的启发式算法。下面是一个用Python实现多目标海鞘算法基本思路: 1. 初始化种:生成初始的海鞘个体体,并为每个个体随机分配目标函数的初始值。 2. 计算适应度:根据目标函数的值计算每个个体的适应度。 3. 选择操作:采用非支配排序和拥挤距离来选择个体,保留较好的个体。 4. 变异操作:对选中的个体进行变异操作,引入新的个体到种中。 5. 更新种:根据新生成的个体更新整个种。 6. 重复步骤2-5,直到达到停止条件(如达到最大迭代次数)。 7. 输出结果:输出最终的帕累托前沿集合,即近似最优解集合。 下面是一个简单示例代码,演示如何实现多目标海鞘算法: ```python import random # 目标函数1 def objective_function1(solution): return solution[0] # 目标函数2 def objective_function2(solution): return solution[1] # 非支配排序 def non_dominated_sort(population): # 实现非支配排序算法 pass # 拥挤距离计算 def crowding_distance(population): # 实现拥挤距离计算算法 pass # 变异操作 def mutation(solution): # 实现变异操作 pass # 初始化种 def initialize_population(population_size, solution_size): population = [] for _ in range(population_size): solution = [random.random() for _ in range(solution_size)] population.append(solution) return population # 多目标海鞘算法函数 def mo_coa(population_size, solution_size, max_generations): population = initialize_population(population_size, solution_size) for _ in range(max_generations): # 计算适应度 fitness_values = [] for solution in population: fitness_values.append((objective_function1(solution), objective_function2(solution))) # 非支配排序和拥挤距离计算 fronts = non_dominated_sort(fitness_values) crowding_distances = crowding_distance(fronts) # 选择操作 selected_population = [] for front in fronts: selected_population += front[:population_size - len(selected_population)] # 变异操作 mutated_population = [] for solution in selected_population: mutated_solution = mutation(solution) mutated_population.append(mutated_solution) # 更新种 population = mutated_population # 输出结果 pareto_front = [population[i] for i in fronts[0]] return pareto_front # 测试示例 population_size = 100 solution_size = 2 max_generations = 100 pareto_front = mo_coa(population_size, solution_size, max_generations) print(pareto_front) ``` 请注意,上述代码中的目标函数和非支配排序、拥挤距离计算的实现需要根据具体问题进行定义。此外,变异操作的实现也需要根据问题进行调整。以上代码只是一个简单的示例,你需要根据具体情况进行修改和优化。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值