import numpy as np
import time
# 定义目标函数(这里以一个简单的二维函数为例)
def objective_function(x):
return x[0] ** 2 + x[1] ** 2
# 差分进化算法
def differential_evolution(objective_function, bounds, population_size=100, max_generations=50, crossover_rate=0.7,
mutation_factor=0.5):
dimension = len(bounds)
best_solution = float('inf')
# 初始化种群
population = np.random.rand(population_size, dimension)
# population = bounds[:, 0] + population * (bounds[:, 1] - bounds[:, 0])
for generation in range(max_generations):
for i in range(population_size):
# 随机选择三个不同的个体
candidates = [index for index in range(population_size) if index != i]
selected_indices = np.random.choice(candidates, 3, replace=False)
a, b, c = population[selected_indices]
# 生成变异个体
mutant = a + mutation_factor * (b - c)
# 交叉操作
crossover_mask = np.random.rand(dimension) < crossover_rate
trial_vector = np.where(crossover_mask, mutant, population[i])
# 评估目标函数
if objective_function(trial_vector) < objective_function(population[i]):
population[i] = trial_vector
# 输出当前代的最优解
best_index = np.argmin([objective_function(individual) for individual in population])
best_solution = population[best_index]
# print(
# f"Generation {generation + 1}, Best Solution: {best_solution}, Best Objective Value: {objective_function(best_solution)}")
return best_solution
# 定义搜索空间范围
start = time.time()
bounds = np.array([[-10, 10], [-10, 10]])
# 运行差分进化算法
best_solution = differential_evolution(objective_function, bounds)
# print("\nOptimization Result:")
print(f"Best Solution: {best_solution}")
print(f"Best Objective Value: {objective_function(best_solution)}")
print("time", time.time() - start)
手推差分进化算法(多目标函数)
最新推荐文章于 2024-07-25 09:07:39 发布
本文介绍了如何使用差分进化算法在Python中解决一个二维函数的最小值问题,包括定义目标函数、搜索空间范围以及算法的核心步骤如初始化种群、变异和交叉操作等。
部署运行你感兴趣的模型镜像
您可能感兴趣的与本文相关的镜像
Python3.11
Conda
Python
Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本
2万+

被折叠的 条评论
为什么被折叠?



