Discrete optimzation in python

守給你的承諾、 提交于 2020-01-01 08:53:33

问题


I am trying to use the scipy.optimize package to optimize a discrete optimization problem (global optimization). Acc to the doc, simulated annealing implemented in scipy.optimize.anneal should be a good choice for the same. But I am not sure how to force the optimizer to search only integer values of the search space. Can someone help?

An illustrative example:

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

where, $x1, x2 \in I$


回答1:


I've checked scipy.optimize.anneal, and I can't see a way to use discrete values. The way to implement it yourself, is to create a custom "move" function, but the way you have to specify the schedule (by a string) prevents you from doing so.

I think it is a big mistake, if you could just pass a custom schedule class as the parameter, you could customize it for using discrete variables and many more things.

The solution I found is to use this other implementation instead: https://github.com/perrygeo/python-simulated-annealing

Because you have to provide the function which modifies the state, you have control on what values it can have, or if they are discrete or continuous.

Hope it helps.



来源:https://stackoverflow.com/questions/16844423/discrete-optimzation-in-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!