Решение IPOPT от Gekko по сравнению с алгоритмом GRG, используемым в Excel-SolverPython

Программы на Python
Ответить
Anonymous
 Решение IPOPT от Gekko по сравнению с алгоритмом GRG, используемым в Excel-Solver

Сообщение Anonymous »

Целью является расчет термодинамически равновесного состава смеси при 1000К на основе энергии Гиббса образования продуктов реакции и эдуктов (пар+C2H6 в молярном соотношении 4:1) для реакции паровой газификации этана как следующее:
from gekko import GEKKO
m = GEKKO(remote=True)
x = m.Array(m.Var,13,value=1,lb=1e-27,ub=20.0)
H2,H2O,CO,O2,CO2,CH4,C2H6,C2H4,C2H2,lamda1,lamda2,lamda3,summe= x
H2.value = 3.0
H2O.value = 1.0
CO.value = 0.5
O2.value = 0.001
CO2.value = 0.5
CH4.value = 0.1
C2H6.value = 0.000215
C2H4.value = 0.00440125
C2H2.value = 0.0041294
summe.value = 8.0
lamda1.value = 1.0
lamda2.value = 1.0
lamda3.value = 1.0
eq1 = m.Param(value=14)
eq2 = m.Param(value=4)
eq3 = m.Param(value=2)
summe = m.Var(H2 + O2 + H2O + CO + CO2 + CH4 + C2H6 + C2H4 + C2H2)
lamda2 = m.Var((-1)*m.log(H2 / summe) / 2)
lamda1 = m.Var(46.03 / 1.9872 - m.log(H2O / summe) + 2 * lamda2)
lamda3 = m.Var(47.942 / 1.9872 - m.log(CO / summe) + lamda1)
m.Equation(m.exp(-4.61 / 1.9872 - 4 * lamda2 - lamda3) * summe == CH4)
m.Equation(m.exp(-28.249 / 1.9872 - 4 * lamda2 - 2 * lamda3) * summe == C2H4)
m.Equation(m.exp(-40.604 / 1.9872 - 2 * lamda2 - 2 * lamda3) * summe == C2H2)
m.Equation(m.exp(-26.13 / 1.9872 - 6 * lamda2 - 2 * lamda3) * summe == C2H6)
m.Equation(m.exp(94.61 / 1.9872 - 2 * lamda1 - lamda3) * summe == CO2)
m.Equation(m.exp(-2 * lamda1) * summe == O2)
m.Equation(2 * CO2 + CO + 2 * O2 + H2O == eq2)
m.Equation(4 * CH4 + 4 * C2H4 + 2 * C2H2 + 2 * H2 + 2 * H2O + 6 * C2H6 == eq1)
m.Equation(CH4 + 2 * C2H4 + 2 * C2H2 + CO2 + CO + 2 * C2H6 == eq3)
m.Minimize((summe-(H2 + O2 + H2O + CO + CO2 + CH4 + C2H6 + C2H4 + C2H2))**2)
m.options.IMODE = 3 #IPOPT
m.options.MAX_ITER = 1000
m.options.OTOL = 1e-10
m.options.RTOL = 1e-10
m.solve()
print('x: ', x)
print('Objective: ',m.options.OBJFCNVAL)


EXIT: Optimal Solution Found.
The solution was found.
The final value of the objective function is 81.0000000000000

---------------------------------------------------
Solver : IPOPT (v3.12)
Solution time : 1.169999998819549E-002 sec
Objective : 81.0000000000000
Successful solution
---------------------------------------------------

x: [[5.797458326] [1.202541674] [1.202541674] [1.6791020526e-21]
[0.79745832603] [1.6503662452e-22] [3.2694282596e-27] [1.1255712085e-27]
[1e-27] [2.185089969] [2.185089969] [2.185089969] [9.5605307091]]

Затем используйте GRG в качестве оптимизатора:
Изображение

Оба решения по-прежнему различаются. И что интересно, результат поиска корня (ограничения) по-прежнему отличается, но в то же время сходится:
Total number of equations: 13
Number of implicit equations: 4
Number of explicit equations: 9
Solution method CONSTRAINED
Convergence tolerance: 1e-07
# of iterations used: 8

CO 1.685236
H2 5.118105
H2O 1.387357
SUM 8.899115
C2H2 0.0041294
C2H4 0.0044224
C2H6 0.0092403
CH4 0.2269213
CO2 0.0522585
lamda1 1.537016
lamda2 0.2765838
lamda3 2.53957
O2 0.4114448

Indexed variables in the solution Vector x:
[[H2: 1] [H2O: 2] [CO: 3] [O2: 4]
[CO2: 5] [CH4: 6] [C2H6: 7] [C2H4: 8]
[C2H2: 9] [lamda1: 10] [lamda2: 11] [lamda3: 12] [summe: 13]]

Individual results are:

GEKKO >> x: [[5,797458326] [1,202541674] [1,202541674]
[1.6791020526e-21]
[0,79745832603] [1.6503662452e-22] [3.2694282596e-27]
[1.1255712085e-27]
[1e-27] [2.185089969] [2.185089969] [2.185089969]
[9.5605307091]]

Just another Root finder >> x:
[[5.118105] [1.387357] [1.685236] [0.4114448]
[0.0522585] [0.2269213] [0.0092403] [0.0044224]
[0.0041294] [1.537016] [0.2765838] [2.53957] [8.899115]]

EXCEL GRG >> x:
[[5.344360712] [1.521995663] [1.388351672] [5.82E-21]
[0.544826] [0.0668213] [1.70E-07] [9.74E-08]
[3.25E-10] [24.3878385] [0.253110984] [1.558979624]
[8.866356107]]


Подробнее здесь: https://stackoverflow.com/questions/792 ... -excel-sol
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»