Mysti c для невыпуклой MINLP - PullRequest
0 голосов
/ 28 марта 2020

Можно ли использовать оптимизатор mysti c для минимизации невыпуклой задачи нелинейного программирования со смешанным целым числом только с целочисленными входами? Поскольку целевая функция не является непрерывной по x (входное значение), она дискретизируется в целых числах.

1 Ответ

0 голосов
/ 29 марта 2020

Я mystic автор ... да. Mysti c может обрабатывать невыпуклые задачи с помощью решателя дифференциальной эволюции или одного из решателей ансамбля. Решателя MLP-специфицированного c не существует, но вместо этого он обрабатывает целочисленное программирование как пространственную карту, которая ограничивает пространство решения - либо передайте решателю np.round в качестве ограничения, либо используйте декоратор integers для ограничения.

Например, см .:

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

>>> import mystic as my
>>> squared = lambda x: [i*i for i in x]
>>> c = lambda x: my.constraints.impose_sum(24, squared(x))
>>> c([1.,2.,3.,4.])
[0.8, 3.2, 7.199999999999999, 12.8]
>>> sum(_)
24.0

mystic имеет несколько модулей, в которых вы можете найти готовые функции ограничений, но Лучшие места для начала: mystic.constraints и mystic.tools для общих ограничений, mystic.math.measures для статистических ограничений, mystic.symbolic для символов c ограничений и mystic.penalty для мягких ограничений (то есть штрафов).

...