Ограничения по модулю в gekko - PullRequest
1 голос
/ 23 апреля 2019

Я хотел бы знать, возможно ли добавить с помощью решателя смешанного целочисленного нелинейного программирования (такого как решатель APOPT ) целочисленное ограничение, например: переменная должна быть кратна 5, для пример.

1 Ответ

2 голосов
/ 23 апреля 2019

Вы можете получить значения, отличные от 0,1,2 и т. Д., Введя коэффициент масштабирования с помощью целочисленной переменной. Это включает в себя определение новой переменной (y), такой как:

from gekko import GEKKO
m = GEKKO()
x = m.Var(integer=True,lb=0,ub=10)
y = m.Intermediate(x*5)
m.Obj((y-17)**2)
m.options.SOLVER=1
m.solve()

print(y.value)

Это находит значение y, кратное 5, которое ближе всего к значению 17. В этом случае он находит, что 15 является оптимальным.

Джон Хеденгрен из BYU любезно дал мне это предложение.

...