Я пытаюсь решить проблему MINLP, чтобы генерировать сеть теплообменника (HE) с тепловыми насосами (HP), используя надстройку на сцене с 9 этапами, которая имеет около 7,7K переменные. Я нахожу это очень запутанным, потому что изменение начальных значений некоторых переменных, таких как тепловые нагрузки обменников/тепловых насосов с помощью проб и ошибок, каким -то образом определяет, найдено ли решение или нет после относительно длинного времени решения. Есть ли правильный подход для решения этой проблемы? И какие возможные методы я могу использовать для улучшения своей модели? До сих пор я пытался минимизировать горячую утилиту, необходимую Q_HU , которая даст решение, которое можно использовать для минимизации TAC. Иногда это сработало, но только по чистому совпадению, когда я каким -то образом подключаю определенные значения inital. работа в моем случае. Однако использование 2 горячих и 2 холодных потока почти всегда давало, по крайней мере, субоптимальное решение, которое изменяется в соответствии с начальными значениями, которые я подключил. переформулировал формулу полиции, чтобы избежать сингулярности, когда разница температуры равен нулю. Я знаю, что полицейский на самом деле зависит от температуры исходной температуры, но я решил, что лучше сделать его зависимым исключительно от температурного подъема.from gekko import GEKKO
import numpy as np
import pandas as pd
m = GEKKO(remote=False) # create GEKKO model
# Input data with 2 Hot 2 Cold
# Ts_h = np.array([90,100])
# Tt_h = np.array([89,99])
# Ts_c = np.array([120,130])
# Tt_c = np.array([121,131])
# C_h = np.array([500,250])
# C_c = np.array([500,500])
# alt input data with more streams
Ts_h = np.array([100,100,100.0,108.0,91.0,130.0,135.0,150.0,120.0])
Tt_h = np.array([99,99,99,107.0,90.0,30.0,30,65.0,30.0])
Ts_c = np.array([30,120.0,100.0,127,159,155,189,182,172,187,158])
Tt_c = np.array([120.0,121.0,101.0,128,160,156,190,183,173,188,159])
C_h = np.array([650,1300,200.0,250.0,900,5.2,6.6,3.6,2.2])
C_c = np.array([13,380,240,1000,800,800,1000,230,350,230,170])
I = len(Ts_h) #hot stream
J = len(Ts_c) #cold stream
omega = 4000.0
gamma = 1000.0
eps = 1e-5
s = 9
Tmin = eps
ALMTD = 10
Cost_he_fix =29000.0
Cost_he_area =270.0
Cost_hp = 800
Cost_cu = 0.005*8000
Cost_hu = 0.085*8000
Cost_el = 0.1*8000
discount_rate = 0.07
lifetime = 20
CRF = discount_rate*(1+discount_rate)**lifetime/((1+discount_rate)**lifetime-1)
U=0.5
#Variables for temp intervals and constraints
T_h = m.Array(m.Var, (I, s+1))
T_c = m.Array(m.Var, (J, s+1))
for i in range(I):
m.Equation(T_h[i,0] == Ts_h)
for k in range(1,s+1):
T_h[i,k].lower = Tt_h
T_h[i,k].upper = Ts_h
m.Equation(T_h[i,k]
Подробнее здесь: https://stackoverflow.com/questions/794 ... e-solution
Как правильно решить эту проблему MINLP и убедиться, что выполнимое решение будет найдено с помощью Gekko? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Не найдено решение для простого нелинейного моделирования с использованием Gekko.
Anonymous » » в форуме Python - 0 Ответы
- 13 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Не найдено решение для простого нелинейного моделирования с использованием Gekko.
Anonymous » » в форуме Python - 0 Ответы
- 21 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Решение IPOPT от Gekko по сравнению с алгоритмом GRG, используемым в Excel-Solver
Anonymous » » в форуме Python - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-