#python #python-3.x #gekko
#python #python-3.x #gekko
Вопрос:
Я хотел бы знать, возможно ли добавить с помощью решателя нелинейного программирования со смешанным целым числом (такого как решатель APOPT) целочисленное ограничение, например: переменная должна быть кратна 5.
Ответ №1:
Вы можете получить значения, отличные от 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 любезно дал мне это предложение.
Комментарии:
1. Янус, спасибо за добавление вашего вопроса и ответ от группы обсуждения по электронной почте. Это помогает задавать подобные вопросы в StackOverflow, где поисковые системы могут легче помочь тем, у кого есть похожие вопросы, найти ответы.
2. Привет, профессор, спасибо за вашу работу над пакетом! я буду время от времени пытаться получать больше вопросов от группы обсуждения электронной почты, размещенной здесь, начиная с самых последних. Я надеюсь, что это поможет как можно большему количеству людей!
3. Спасибо за добавление вопросов. В stackoverflow нам часто приходится сокращать вопрос до минимального примера, чтобы вопрос и ответ были более широко применимы.