如何在GEKKO中使用自己的解决方法?

问题描述 投票:2回答:1

我想用我自己的遗传算法(GA)来解决混合整数问题:

https://mintoc.de/index.php/Batch_reactor

我可以在GEKKO中加入我的求解方法吗?

就像是...

m = GEKKO()
.
.
.

m.options.SOLVER = 'my_GA'
python-3.x optimization genetic-algorithm mixed-integer-programming gekko
1个回答
1
投票

GEKKO目前仅支持基于梯度的内置求解器。如果您使用遗传算法(Chapter 6 for GA overview),您可以使用GEKKO运行功能评估,以在不同的试验条件下返回目标值。您需要在每个新一代GA中将m.solve()命令放入循环中。在GEKKO中,您还需要使用m.options.TIME_SHIFT=0来更新初始条件。当您更改设计变量(例如,来自MintOC的T(t))以找到最佳目标函数值(例如来自MintOC的x2(tf))时,这将允许重复评估。

m = GEKKO()

# define model
x2 = m.Var()
T = m.Param()
.
.
.
m.options.TIME_SHIFT=0
m.options.IMODE = 4 # or 7
# GA loop
for i in range(generations):
    T.value = [values from GA]
    m.solve()
    obj = x2.value[-1] # objective

    # additional GA steps to decide new T values

Here is some additional information from the documentation:SOLVER选择要使用的求解器以尝试找到解决方案。有免费求解器:1:APOPT,2:BPOPT,3:IPOPT与软件的公共版本一起分发。公共版本中不包含其他解算器,需要商业许可证。对于具有大量自由度的问题或在没有良好的初始猜测的情况下启动,IPOPT通常是最佳的。 BPOPT已被发现是系统生物学应用的最佳选择。 APOPT通常是从先前解决方案热启动时或当自由度数(变量数 - 方程数)小于2000时最佳.APOPT也是处理混合整数问题的唯一求解器。使用选项0比较所有可用的求解器。

© www.soinside.com 2019 - 2024. All rights reserved.