optimizer

alo

alo

dramkit.optimizer.alo.alo(objf, func_opter_parms)

蚁狮优化算法(Ant Lion Optimizer) ALO algorithm

Todo

目前仅考虑自变量连续实数情况,以后可增加自变量为离散的情况

Parameters:
  • objf (function) – 目标函数。注:须事先转化为求极小值问题

  • func_opter_parms (FuncOpterInfo) –

    dramkit.optimizer.utils_heuristic.FuncOpterInfo 类, 须设置parms_func、parms_opter、parms_log

    parms_func为目标函数参数信息dict,key须包含:
    x_lb: 自变量每个维度取值下界,list或数值,为list时长度应等于dim
    x_ub: 自变量每个维度取值上界,list或数值,为list时长度应等于dim
    dim: 自变量维度数
    kwargs: 目标函数接收的其它参数
    parms_opter: 优化函数参数信息dict,key须包含:
    popsize: 群体数量(每轮迭代的样本数量)
    max_iter: 最大迭代寻优次数
    parms_log: 日志参数信息dict,key须包含:
    logger: 日志记录器
    nshow: 若为整数,则每隔nshow轮日志输出当前最优目标函数值

Returns:

func_opter_parms – 更新优化过程之后的func_opter_parms

Return type:

FuncOpterInfo

References

base_funcs

TestFuncs

class dramkit.optimizer.base_funcs.TestFuncs

Bases: object

测试函数集,输入x须为np.array

static ackley(x)
static ackley2(x)
static f1(x)

平方和

static f10(x)
static f11(x)
static f12(x)
static f2(x)

绝对值之和加上连乘

static f3(x)

x[0]^2 + (x[0]+x[1])^2 + (x[0]+x[1]+x[2])^2 + …

static f4(x)

最小绝对值

static f5(x)

最大绝对值

static f6(x)
static f7(x)
static f8(x)
static f9(x)
static griewank(x)
static rastrigin(x)
static rosenbrock(x)
static schwefel(x)
static sphere(x)

prod

dramkit.optimizer.base_funcs.prod(it)

it中的元素连乘

boa

boa

dramkit.optimizer.boa.boa(objf, func_opter_parms)

蝴蝶优化算法(Butterfly Optimization Algorithm) BOA

Todo

目前仅考虑自变量连续实数情况,以后可增加自变量为离散的情况

Parameters:
  • objf (function) – 目标函数。注:须事先转化为求极小值问题

  • func_opter_parms (FuncOpterInfo) –

    dramkit.optimizer.utils_heuristic.FuncOpterInfo 类, 须设置parms_func、parms_opter、parms_log

    parms_func为目标函数参数信息dict,key须包含:
    x_lb: 自变量每个维度取值下界,list或数值,为list时长度应等于dim
    x_ub: 自变量每个维度取值上界,list或数值,为list时长度应等于dim
    dim: 自变量维度数
    kwargs: 目标函数接收的其它参数
    parms_opter: 优化函数参数信息dict,key须包含:
    popsize: 群体数量(每轮迭代的样本数量)
    max_iter: 最大迭代寻优次数
    p: 全局/局部搜索转化概率
    power_exponent: a in BOA蝴蝶优化算法.pdf-Eq.(1)
    sensory_modality: c in BOA蝴蝶优化算法.pdf-Eq.(1)
    parms_log: 日志参数信息dict,key须包含:
    logger: 日志记录器
    nshow: 若为整数,则每隔nshow轮日志输出当前最优目标函数值

Returns:

func_opter_parms – 更新优化过程之后的func_opter_parms

Return type:

FuncOpterInfo

References

  • BOA蝴蝶优化算法.pdf

cs

cs

dramkit.optimizer.cs.cs(objf, func_opter_parms)

布谷鸟搜索算法(Cuckoo Search) CS algorithm

Todo

目前仅考虑自变量连续实数情况,以后可增加自变量为离散的情况

Parameters:
  • objf (function) – 目标函数。注:须事先转化为求极小值问题

  • func_opter_parms (FuncOpterInfo) –

    dramkit.optimizer.utils_heuristic.FuncOpterInfo 类, 须设置parms_func、parms_opter、parms_log

    parms_func为目标函数参数信息dict,key须包含:
    x_lb: 自变量每个维度取值下界,list或数值,为list时长度应等于dim
    x_ub: 自变量每个维度取值上界,list或数值,为list时长度应等于dim
    dim: 自变量维度数
    kwargs: 目标函数接收的其它参数
    parms_opter: 优化函数参数信息dict,key须包含:
    popsize: 群体数量(每轮迭代的样本数量)
    max_iter: 最大迭代寻优次数
    pa: 鸟巢被发现概率
    alpha, beta: Levy飞行参数
    parms_log: 日志参数信息dict,key须包含:
    logger: 日志记录器
    nshow: 若为整数,则每隔nshow轮日志输出当前最优目标函数值

Returns:

func_opter_parms – 更新优化过程之后的func_opter_parms

Return type:

FuncOpterInfo

References

ga

ga

dramkit.optimizer.ga.ga(objf, func_opter_parms)

遗传算法(Genetic Algorithm) GA(实数编码)

Todo

目前仅考虑自变量连续实数情况,以后可增加自变量为离散的情况

Parameters:
  • objf (function) – 目标函数。注:须事先转化为求极小值问题

  • func_opter_parms (FuncOpterInfo) –

    dramkit.optimizer.utils_heuristic.FuncOpterInfo 类, 须设置parms_func、parms_opter、parms_log

    parms_func为目标函数参数信息dict,key须包含:
    x_lb: 自变量每个维度取值下界,list或数值,为list时长度应等于dim
    x_ub: 自变量每个维度取值上界,list或数值,为list时长度应等于dim
    dim: 自变量维度数
    kwargs: 目标函数接收的其它参数
    parms_opter: 优化函数参数信息dict,key须包含:
    popsize: 群体数量(每轮迭代的样本数量)
    max_iter: 最大迭代寻优次数
    p_crs: 交叉概率
    p_mut: 变异概率
    n_top: 每一轮(代)保留的最优个体数
    parms_log: 日志参数信息dict,key须包含:
    logger: 日志记录器
    nshow: 若为整数,则每隔nshow轮日志输出当前最优目标函数值

Returns:

func_opter_parms – 更新优化过程之后的func_opter_parms

Return type:

FuncOpterInfo

References

gwo

gwo

dramkit.optimizer.gwo.gwo(objf, func_opter_parms)

灰狼优化算法(Grey Wolf Optimizer) GWO algorithm

Todo

目前仅考虑自变量连续实数情况,以后可增加自变量为离散的情况

Parameters:
  • objf (function) – 目标函数。注:须事先转化为求极小值问题

  • func_opter_parms (FuncOpterInfo) –

    dramkit.optimizer.utils_heuristic.FuncOpterInfo 类, 须设置parms_func、parms_opter、parms_log

    parms_func为目标函数参数信息dict,key须包含:
    x_lb: 自变量每个维度取值下界,list或数值,为list时长度应等于dim
    x_ub: 自变量每个维度取值上界,list或数值,为list时长度应等于dim
    dim: 自变量维度数
    kwargs: 目标函数接收的其它参数
    parms_opter: 优化函数参数信息dict,key须包含:
    popsize: 群体数量(每轮迭代的样本数量)
    max_iter: 最大迭代寻优次数
    parms_log: 日志参数信息dict,key须包含:
    logger: 日志记录器
    nshow: 若为整数,则每隔nshow轮日志输出当前最优目标函数值

Returns:

func_opter_parms – 更新优化过程之后的func_opter_parms

Return type:

FuncOpterInfo

References

hcpsoboa

hcpsoboa

dramkit.optimizer.hcpsoboa.hcpsoboa(objf, func_opter_parms)

粒子群-柯西变异-蝴蝶混合优化算法

Todo

  • 添加文中的cubic map随机初始化方法

  • 目前仅考虑自变量连续实数情况,以后可增加自变量为离散的情况

Parameters:
  • objf (function) – 目标函数。注:须事先转化为求极小值问题

  • func_opter_parms (FuncOpterInfo) –

    dramkit.optimizer.utils_heuristic.FuncOpterInfo 类, 须设置parms_func、parms_opter、parms_log

    parms_func为目标函数参数信息dict,key须包含:
    x_lb: 自变量每个维度取值下界,list或数值,为list时长度应等于dim
    x_ub: 自变量每个维度取值上界,list或数值,为list时长度应等于dim
    dim: 自变量维度数
    kwargs: 目标函数接收的其它参数
    parms_opter: 优化函数参数信息dict,key须包含:
    popsize: 群体数量(每轮迭代的样本数量)
    max_iter: 最大迭代寻优次数
    p: 全局/局部搜索转化概率
    power_exponent: a in BOA蝴蝶优化算法.pdf-Eq.(1)
    sensory_modality: c in BOA蝴蝶优化算法.pdf-Eq.(1)
    parms_log: 日志参数信息dict,key须包含:
    logger: 日志记录器
    nshow: 若为整数,则每隔nshow轮日志输出当前最优目标函数值

Returns:

func_opter_parms – 更新优化过程之后的func_opter_parms

Return type:

FuncOpterInfo

References

  • BOA蝴蝶优化算法.pdf

  • HPSOBOA粒子群蝴蝶混合优化算法.pdf

  • 柯西变异和自适应权重优化的蝴蝶算法_高文欣.pdf

hho

hho

dramkit.optimizer.hho.hho(objf, func_opter_parms)

哈里斯鹰优化算法(Harris Hawks Optimizer) HHO algorithm

Todo

目前仅考虑自变量连续实数情况,以后可增加自变量为离散的情况

Parameters:
  • objf (function) – 目标函数。注:须事先转化为求极小值问题

  • func_opter_parms (FuncOpterInfo) –

    dramkit.optimizer.utils_heuristic.FuncOpterInfo 类, 须设置parms_func、parms_opter、parms_log

    parms_func为目标函数参数信息dict,key须包含:
    x_lb: 自变量每个维度取值下界,list或数值,为list时长度应等于dim
    x_ub: 自变量每个维度取值上界,list或数值,为list时长度应等于dim
    dim: 自变量维度数
    kwargs: 目标函数接收的其它参数
    parms_opter: 优化函数参数信息dict,key须包含:
    popsize: 群体数量(每轮迭代的样本数量)
    max_iter: 最大迭代寻优次数
    alpha, beta: Levy飞行参数
    parms_log: 日志参数信息dict,key须包含:
    logger: 日志记录器
    nshow: 若为整数,则每隔nshow轮日志输出当前最优目标函数值

Returns:

func_opter_parms – 更新优化过程之后的func_opter_parms

Return type:

FuncOpterInfo

References

hpsoboa

hpsoboa

dramkit.optimizer.hpsoboa.hpsoboa(objf, func_opter_parms)

粒子群蝴蝶混合优化算法(HPSOBOA粒子群蝴蝶混合优化算法.pdf)

Todo

  • 添加文中的cubic map随机初始化方法

  • 目前仅考虑自变量连续实数情况,以后可增加自变量为离散的情况

Parameters:
  • objf (function) – 目标函数。注:须事先转化为求极小值问题

  • func_opter_parms (FuncOpterInfo) –

    dramkit.optimizer.utils_heuristic.FuncOpterInfo 类, 须设置parms_func、parms_opter、parms_log

    parms_func为目标函数参数信息dict,key须包含:
    x_lb: 自变量每个维度取值下界,list或数值,为list时长度应等于dim
    x_ub: 自变量每个维度取值上界,list或数值,为list时长度应等于dim
    dim: 自变量维度数
    kwargs: 目标函数接收的其它参数
    parms_opter: 优化函数参数信息dict,key须包含:
    popsize: 群体数量(每轮迭代的样本数量)
    max_iter: 最大迭代寻优次数
    p: 全局/局部搜索转化概率
    power_exponent: a in HPSOBOA粒子群蝴蝶混合优化算法.pdf-Eq.(1)
    sensory_modality: c in HPSOBOA粒子群蝴蝶混合优化算法.pdf-Eq.(1)
    parms_log: 日志参数信息dict,key须包含:
    logger: 日志记录器
    nshow: 若为整数,则每隔nshow轮日志输出当前最优目标函数值

Returns:

func_opter_parms – 更新优化过程之后的func_opter_parms

Return type:

FuncOpterInfo

References

HPSOBOA粒子群蝴蝶混合优化算法.pdf

pso

pso

dramkit.optimizer.pso.pso(objf, func_opter_parms)

粒子群优化算法(Particle Swarm Optimization) PSO algorithm

Todo

目前仅考虑自变量连续实数情况,以后可增加自变量为离散的情况

Parameters:
  • objf (function) – 目标函数。注:须事先转化为求极小值问题

  • func_opter_parms (FuncOpterInfo) –

    dramkit.optimizer.utils_heuristic.FuncOpterInfo 类, 须设置parms_func、parms_opter、parms_log

    parms_func为目标函数参数信息dict,key须包含:
    x_lb: 自变量每个维度取值下界,list或数值,为list时长度应等于dim
    x_ub: 自变量每个维度取值上界,list或数值,为list时长度应等于dim
    dim: 自变量维度数
    kwargs: 目标函数接收的其它参数
    parms_opter: 优化函数参数信息dict,key须包含:
    popsize: 群体数量(每轮迭代的样本数量)
    max_iter: 最大迭代寻优次数
    v_maxs: 自变量每个维度单次绝对变化量上界,list或数值,为list时长度应等于dim
    w_max: 惯性因子w最大值,w用于平衡全局搜索和局部搜索,w值越大全局寻优能力更强
    w_min: 惯性因子最小值
    w_fix: 若w_fix设置为(0, 1)之间的值,则惯性因子w固定为w_fix,不进行动态更新
    默认动态更新w时采用线性递减方法
    c1, c2: 学习因子
    parms_log: 日志参数信息dict,key须包含:
    logger: 日志记录器
    nshow: 若为整数,则每隔nshow轮日志输出当前最优目标函数值

Returns:

func_opter_parms – 更新优化过程之后的func_opter_parms

Return type:

FuncOpterInfo

References

utils_heuristic

FuncOpterInfo

class dramkit.optimizer.utils_heuristic.FuncOpterInfo(parms_func={}, parms_opter={}, parms_log={})

Bases: object

保存函数参数及优化过程信息

__init__(parms_func={}, parms_opter={}, parms_log={})

初始化目标函数和优化器信息

Parameters:
  • parms_func (dict) – 目标函数信息,默认应包含’func_name’, ‘x_lb’, ‘x_ub’, ‘dim’

  • parms_opter (dcit) – 优化函数需要用到的参数信息,默认应包含’opter_name’, ‘popsize’, ‘max_iter’

  • parms_log – 寻优过程中控制打印或日志记录的参数,默认应包含’logger’, ‘nshow’

property best_val

全局最目标优值

property best_x

全局最优解

property convergence_curve

收敛曲线(每轮最优)

property convergence_curve_mean

收敛曲线(每轮平均)

property end_time

结束时间

property exe_time

优化用时(单位秒)

set_best_val(val)

全局最目标优值设置

set_best_x(x)

全局最优解设置

set_convergence_curve(curve)

收敛曲线(每轮最优)设置

set_convergence_curve_mean(curve)

收敛曲线(每轮平均)设置

set_end_time(t)

结束时间设置

set_exe_time(t)

优化用时(单位秒)设置

set_start_time(t)

开始时间设置

property start_time

开始时间

rand_init

dramkit.optimizer.utils_heuristic.rand_init(popsize, dim, lb, ub)

自变量随机初始化

Parameters:
  • popsize (int) – 需要初始化的种群数(样本数)

  • dim (int) – 自变量维度数,dim的值应与lb和ub的长度相等

  • lb (list) – 自变量每个维度取值下界

  • ub (list) – 自变量每个维度取值上界

Returns:

pos – 随机初始化结果,形状为popsize * dim

Return type:

np.ndarray

sort_population

dramkit.optimizer.utils_heuristic.sort_population(population, fvals)

个体排序:按fvals值从小到大对population进行排序

Parameters:
  • population (np.ndarray) – 所有个体位置(所有解)

  • fvals (np.array) – 所有个体值列表

Returns:

  • population (np.ndarray) – 排序后的种群

  • fvals (np.array) – 排序后的个体值列表

woa

woa

dramkit.optimizer.woa.woa(objf, func_opter_parms)

鲸鱼优化算法(Whale Optimization Algorithm) WOA

Todo

目前仅考虑自变量连续实数情况,以后可增加自变量为离散的情况

Parameters:
  • objf (function) – 目标函数。注:须事先转化为求极小值问题

  • func_opter_parms (FuncOpterInfo) –

    dramkit.optimizer.utils_heuristic.FuncOpterInfo 类, 须设置parms_func、parms_opter、parms_log

    parms_func为目标函数参数信息dict,key须包含:
    x_lb: 自变量每个维度取值下界,list或数值,为list时长度应等于dim
    x_ub: 自变量每个维度取值上界,list或数值,为list时长度应等于dim
    dim: 自变量维度数
    kwargs: 目标函数接收的其它参数
    parms_opter: 优化函数参数信息dict,key须包含:
    popsize: 群体数量(每轮迭代的样本数量)
    max_iter: 最大迭代寻优次数
    parms_log: 日志参数信息dict,key须包含:
    logger: 日志记录器
    nshow: 若为整数,则每隔nshow轮日志输出当前最优目标函数值

Returns:

func_opter_parms – 更新优化过程之后的func_opter_parms

Return type:

FuncOpterInfo

References