2013-05-30 3 views
7

Я пытаюсь использовать пакет scipy.optimize для оптимизации задачи дискретной оптимизации (глобальная оптимизация). В соответствии с документом имитационный отжиг, реализованный в scipy.optimize.anneal, должен быть хорошим выбором для него. Но я не уверен, как заставить оптимизатора искать только целые значения пространства поиска. Может кто-нибудь помочь?Дискретная оптимизация в python

Наглядный пример:

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

where, $x1, x2 \in I$

ответ

4

Я проверил scipy.optimize.anneal, и я не могу видеть способ использовать дискретные значения. Способ реализовать его самостоятельно - это создать пользовательскую функцию «move», но то, как вы должны указывать расписание (по строке), не позволяет вам это делать.

Я думаю, что это большая ошибка, если вы можете просто передать собственный класс расписания в качестве параметра, вы можете настроить его для использования дискретных переменных и многое другое.

Решения, которое я нашел, чтобы использовать эту другую реализацию вместо: https://github.com/perrygeo/python-simulated-annealing

Потому что вы должны предоставить функцию, которая изменяет состояние, у вас есть контроль над какими значениями он может иметь, или если они являются дискретными или непрерывен.

Надеюсь, это поможет.

+0

спасибо большое .. super: Я искал что-то вроде этого. В то же время я внедрил SA сам, чтобы иметь контроль, который вы сказали – goofd

Смежные вопросы