scikit-opt——DE(差分进化)

Differential Evolution

差分进化算法(Differential Evolution,DE)于1997年由Rainer Storn和Kenneth Price在遗传算法等进化思想的基础上提出的,本质是一种多目标(连续变量)优化算法(MOEAs),用于求解多维空间中整体最优解。

差分进化算法相对于遗传算法而言,相同点都是通过随机生成初始种群,以种群中每个个体的适应度值为选择标准,主要过程也都包括变异、交叉和选择三个步骤。不同之处在于遗传算法是根据适应度值来控制父代杂交,变异后产生的子代被选择的概率值,在最大化问题中适应值大的个体被选择的概率相应也会大一些。而差分进化算法变异向量是由父代差分向量生成,并与父代个体向量交叉生成新个体向量,直接与其父代个体进行选择。显然差分进化算法相对遗传算法的逼近效果更加显著。

详细介绍见 差分进化算法(Differential Evolution)

Quick Start

Step1: 定义你的问题

‘‘‘
min f(x1, x2, x3) = x1^2 + x2^2 + x3^2
s.t.
    x1*x2 >= 1
    x1*x2 <= 5
    x2 + x3 = 1
    0 <= x1, x2, x3 <= 5
‘‘‘

# 目标函数
def obj_func(p):
    x1, x2, x3 = p
    return x1 ** 2 + x2 ** 2 + x3 ** 2

# 线性约束
constraint_eq = [
    lambda x: 1 - x[1] - x[2]
]

# 非线性约束
constraint_ueq = [
    lambda x: 1 - x[0] * x[1],
    lambda x: x[0] * x[1] - 5
]

Step2: 进行差分进化

from sko.DE import DE

de = DE(func=obj_func, n_dim=3, size_pop=50, max_iter=800, lb=[0, 0, 0], ub=[5, 5, 5],
        constraint_eq=constraint_eq, constraint_ueq=constraint_ueq)

best_x, best_y = de.run()
print(‘best_x:‘, best_x, ‘\n‘, ‘best_y:‘, best_y)

参考链接:

1. scikit-opt官方文档-DE部分

2. CSDN金良山庄-差分进化算法(Differential Evolution)

3. CSDN口袋的天空-差分进化算法(Differential Evolution)

原文地址:https://www.cnblogs.com/lfri/p/12241557.html

时间: 2024-10-02 08:18:39

scikit-opt——DE(差分进化)的相关文章

差分进化算法优化集成参数

一.差分进化的思想 差分进化是在遗传算法的基础上发展而来的,与遗传算法相似,有变异.交叉.选择等操作,但是实现简单,收敛速度快.差分进化的过程是随机生成一个初始化群体,经过交叉.变异.选择三个操作,反复迭代,保留有用的个体,寻找最优解. 差分进化利用了贪婪的思想,在每一次的迭代中,保留最优解.通过当前种群个体跟经过交叉.变异后的个体以适应度值为标准,进行比较,保留最优的个体. (1)初始化 (2)变异 (3)交叉 (4)选择 其中,F是变异因子,用来控制两个随机个体差分向量的缩放程度.CR是交叉

差分进化算法 (Differential Evolution)

Differential Evolution(DE)是由Storn等人于1995年提出的,和其它演化算法一样,DE是一种模拟生物进化的随机模型,通过反复迭代,使得那些适应环境的个体被保存了下来.但相比于进化算法,DE保留了基于种群的全局搜索策略,采用实数编码.基于差分的简单变异操作和一对一的竞争生存策略,降低了遗传操作的复杂性.同时,DE特有的记忆能力使其可以动态跟踪当前的搜索情况,以调整其搜索策略,具有较强的全局收敛能力和鲁棒性,且不需要借助问题的特征信息,适于求解一些利用常规的数学规划方法所

差分进化算法-python实现

DEIndividual.py 1 import numpy as np 2 import ObjFunction 3 4 5 class DEIndividual: 6 7 ''' 8 individual of differential evolution algorithm 9 ''' 10 11 def __init__(self, vardim, bound): 12 ''' 13 vardim: dimension of variables 14 bound: boundaries

查分进化算法DE

% 差分进化算法程序  function DE        t0 = cputime;  %计时     %% 种群初始化     T = 1000;               % 最大迭代次数      F0 = 0.5;               % 变异率      N = 100;                % 种群大小      D = 10;                 % 每个个体染色体的个数,即所求问题的维数      CR = 0.3;              

VRP相关知识整理

一.扩展问题分类: ★ the capacitated vehicle routing problem (CVRP) , 即classical VRP ★ the vehicle routing problem with time windows (VRPTW) , 带时间窗    - VRPHTW 硬时间窗   |   VRPSTW 软时间窗   |   VRPTD(VRP with Time Deadlines)带顾客最迟服务时间 ★ (VRPSD) the Vehicle Routing

史上最全的机器学习资料(上) 转

转自:http://www.afenxi.com/post/18593 摘要: 机器学习牵涉的编程语言十分之广,包括了MATLAB.Python.Clojure.Ruby等等.为了让开发者更加广泛.深入地了解机器学习,云栖社区组织翻译了GitHub Awesome Machine Learning 资源,涵盖24种编程语言的机器学习的框架.库以及其他相关资料. 机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论.统计学.逼近论.凸分析.算法复杂度理论等多门学科.

[与老师讨论] 采用最新的好的方法,做出卓越的成绩

老师说,当他在博士的时候,要做一个继电保护的控制系统时,大量的查看了当时最新的关于计算机编程算法的文章,并与很多编程高手对编程的问题进行讨论,系统给的编程语言的选取和都用了很长时间.是的,最近在编写最大供电能力系统时,发现编程语言的选取是很重要的,比如你那c语言去建模那就显得非常不合适,这也就是我本科毕设的时候采用差分进化算法有点小失误的原因.我现在不足之处就在于对当前的新的.比较好的算法的了解和掌握. 今天老师还提到了数学算法和智能算法的区别,数学算法计算速度快,但是编程复杂,要求数学基础要好

5 12种生成对抗样本的方法

1 Box-constrained L-BFGS Szegedy[22] 等人首次证明了可以通过对图像添加小量的人类察觉不到的扰动误导神经网络做出误分类.他们首先尝试求解让神经网络做出误分类的最小扰动的方程.但由于问题的复杂度太高,他们转而求解简化后的问题,即寻找最小的损失函数添加项,使得神经网络做出误分类,这就将问题转化成了凸优化过程. 2 Fast Gradient Sign Method (FGSM) Szegedy 等人发现可以通过对抗训练提高深度神经网络的鲁棒性,从而提升防御对抗样本攻

使用修补算子求解MKP问题的文献总结

使用修补算子求解MKP问题的文献总结 按顺序进行丢弃--增加操作 决策变量根据规则排序(一般是根据效用排序),直接进行丢弃--增加操作.5,6,7是同一作者,5和6使用的效用和Chu是一样的,7则改进了效用的计算方式.8和9是清华大学王凌实验室的文章,与其他文章思路不一样,是按照约束进行丢项操作. 1)求解多维背包问题的改进二进制粒子群算法 2)改进二进制人工蜂群算法求解多维背包问题 3)无参数变异的二进制差分进化算法 4)利用改进的二进制狼群算法求解多维背包问题 5)A new ant col