python中的离散优化

时间:2013-05-30 19:31:13

标签: python optimization scipy simulated-annealing

我正在尝试使用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$

1 个答案:

答案 0 :(得分:5)

我检查了scipy.optimize.anneal,我看不到使用离散值的方法。自己实现它的方法是创建一个自定义的“移动”功能,但是你必须指定时间表(用字符串)就可以阻止你这样做。

我认为这是一个很大的错误,如果您可以将自定义计划类作为参数传递,则可以使用离散变量和更多内容对其进行自定义。

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

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

希望它有所帮助。