Я попробовал использовать библиотеку Python Gekko для моделирования решателя. Мне нужно использовать большое количество условий if, для чего я использовал if2 и if3, предоставленные Gekko. Я понимаю, что m.if2 или m.if3 решаются возвратом вывода в виде переменной. Проблема возникает, особенно когда я использую эти условия if в цикле for. Каждое условие if дает переменную, и особенно когда я запускаю его через цикл for, количество этих переменных значительно увеличивается. Иногда это портит решение.
Мне нужно лучше понять, как именно работают условия if.
Например:
Код: Выделить всё
xlr = self.m.Const(18)
xor = self.m.Intermediate("_some intermediate equation_")
for i in range(2, 6):
x = self.m.Intermediate("_some intermediate equation_")
y = self.m.if3(
self.m.abs(xlr - xor) - 1e-6,
self.m.Intermediate(t11 - dan * i / 6),
self.m.Intermediate(
t11
- dan
* (1 - self.m.exp(-i / (6 * x0)))
/ (1 - self.m.exp(-1 / x0))
)
)
Здесь 'y' возвращается как переменная по условию m.if3, и поскольку оно выполняется в цикле for, создается впечатление, что переменные создаются каждый раз. Я полагаю, что это иногда приводит к сбою модели Gekko.
Мне было бы очень полезно, если бы кто-нибудь помог мне с объяснением условий if2/if3 в Gekko.
Подробнее здесь:
https://stackoverflow.com/questions/793 ... conditions