GEKKO/IPOPT - Оптимизация NL становится невозможной из-за изменения показателя степени ⇐ Python
GEKKO/IPOPT - Оптимизация NL становится невозможной из-за изменения показателя степени
Я пытаюсь запустить модель динамической оптимизации в дискретном времени с помощью GEKKO и IPOPT (v3.10.2). Моя модель следующая:
из gekko import GEKKO импортировать numpy как np # Время моделирования Т = 5 #экспонента а = 11,3 m = ГЕККО (дистанционное = Ложь) #Управляющая переменная Налог = m.Array(m.Var, T, значение = 100, lb = 0, ub = 100) # Переменные состояния H = m.Array( m.SV, T, lb = 1) Z = m.Array(m.Var, T) # Инициализация переменных состояния m.Equation(H[0] == 10) m.Equation(Z[0] == 5) # Уравнения перехода для t в диапазоне (1,T): m.Equation(H[t] == H[t-1] + ( 5 + 5/( (1 +Налог[t])**0,06) )**a ) m.Equation(Z[t] == H[t] - Налог[t]) m.Maximize(m.sum([ 0,97**t * Z[t] для t в диапазоне(0,T)]) ) m.options.MAX_ITER = 500 м.решить() Решателю не удается сходиться, и IPOPT возвращает результат:
ВЫХОД: Сведено к точке локальной невозможности. Проблема может оказаться невыполнимой. Произошла ошибка. Код ошибки 2. Я заметил, что если временной горизонт T уменьшить до 3 или показатель степени a уменьшить до 3,3, то решатель находит решение. Я не понимаю почему. Мне нужно запустить более сложную программу с более длительным временным горизонтом и более высокими показателями.
Есть ли способ справиться с этой дополнительной сложностью, чтобы решатель нашел решение?
Заранее спасибо.
Изменить = добавлены уточнения к номеру версии IPOPT
Я пытаюсь запустить модель динамической оптимизации в дискретном времени с помощью GEKKO и IPOPT (v3.10.2). Моя модель следующая:
из gekko import GEKKO импортировать numpy как np # Время моделирования Т = 5 #экспонента а = 11,3 m = ГЕККО (дистанционное = Ложь) #Управляющая переменная Налог = m.Array(m.Var, T, значение = 100, lb = 0, ub = 100) # Переменные состояния H = m.Array( m.SV, T, lb = 1) Z = m.Array(m.Var, T) # Инициализация переменных состояния m.Equation(H[0] == 10) m.Equation(Z[0] == 5) # Уравнения перехода для t в диапазоне (1,T): m.Equation(H[t] == H[t-1] + ( 5 + 5/( (1 +Налог[t])**0,06) )**a ) m.Equation(Z[t] == H[t] - Налог[t]) m.Maximize(m.sum([ 0,97**t * Z[t] для t в диапазоне(0,T)]) ) m.options.MAX_ITER = 500 м.решить() Решателю не удается сходиться, и IPOPT возвращает результат:
ВЫХОД: Сведено к точке локальной невозможности. Проблема может оказаться невыполнимой. Произошла ошибка. Код ошибки 2. Я заметил, что если временной горизонт T уменьшить до 3 или показатель степени a уменьшить до 3,3, то решатель находит решение. Я не понимаю почему. Мне нужно запустить более сложную программу с более длительным временным горизонтом и более высокими показателями.
Есть ли способ справиться с этой дополнительной сложностью, чтобы решатель нашел решение?
Заранее спасибо.
Изменить = добавлены уточнения к номеру версии IPOPT
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Решение IPOPT от Gekko по сравнению с алгоритмом GRG, используемым в Excel-Solver
Anonymous » » в форуме Python - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Решение IPOPT от Gekko по сравнению с алгоритмом GRG, используемым в Excel-Solver
Anonymous » » в форуме Python - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Решение IPOPT от Gekko по сравнению с алгоритмом GRG, используемым в Excel-Solver
Anonymous » » в форуме Python - 0 Ответы
- 12 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Решение IPOPT от Gekko по сравнению с алгоритмом GRG, используемым в Excel-Solver
Anonymous » » в форуме Python - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Решение IPOPT от Gekko по сравнению с алгоритмом GRG, используемым в Excel-Solver
Anonymous » » в форуме Python - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-