在Python中离散优化

我正在尝试使用scipy.optimize包来优化离散优化问题(全局优化)。 根据文档,在scipy.optimize.anneal实现的模拟退火应该是一个不错的选择。 但我不知道如何强制优化器仅搜索搜索空间的整数值。 有人可以帮忙吗?

一个说明性例子:

f(x1,x2) = (1-0.4*x1)^2 + 100*(0.6*x2 -0.4*x1^2)^2

where, $x1, x2 in I$


我检查了scipy.optimize.anneal,我看不到使用离散值的方法。 自己实现它的方法是创建一个自定义的“移动”功能,但是您必须指定日程安排(通过字符串)的方式阻止您这样做。

我认为这是一个很大的错误,如果你可以传递一个自定义的时间表类作为参数,你可以使用离散变量和更多的东西来定制它。

我找到的解决方案是使用这个其他的实现:https://github.com/perrygeo/python-simulated-annealing

因为您必须提供修改状态的函数,所以您可以控制它可以具有的值,或者它们是离散的还是连续的。

希望能帮助到你。

链接地址: http://www.djcxy.com/p/71719.html

上一篇: Discrete optimzation in python

下一篇: Spring web services flow