gpt4 book ai didi

python - 带整数的 Scipy 微分进化

转载 作者:太空狗 更新时间:2023-10-30 02:57:57 25 4
gpt4 key购买 nike

我正在尝试使用 scipy.optimize.differential_evolution 运行优化。代码为 x 中的每个变量调用边界。但我想要一个解决方案,其中 x 的部分必须是整数,而其他部分可以作为 float 自由变化。我的代码的相关部分看起来像

    bounds = [(0,3),(0,3),(0,3),???,???]
result = differential_evolution(func, bounds)

我应该用什么替换 ??? 以强制这些变量为给定范围内的整数?

最佳答案

如评论中所述,不直接支持“整数约束”。

但是您可以最小化修改后的目标函数,例如:

def func1(x):
return func(x) + K * (x[3] - round(x[3]))**2

这将迫使 x[3] 变为整数值(不幸的是,您必须调整 K 参数)。

另一种方法是在评估目标函数之前舍入(某些)实值参数:

def func1(x):
z = x;
z[3] = round(z[3])
return func(z)

这两种都是使用差分进化来解决离散优化问题的常用技术,而且效果很好。

关于python - 带整数的 Scipy 微分进化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35494782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com