rey*_*nda 6 optimization genetic-algorithm python-3.x mixed-integer-programming gekko
我想使用我自己的遗传算法 (GA) 来解决混合整数问题:
https://mintoc.de/index.php/Batch_reactor
我可以在 GEKKO 中加入我的求解方法吗?
就像是...
m = GEKKO()
.
.
.
m.options.SOLVER = 'my_GA'
Run Code Online (Sandbox Code Playgroud)
GEKKO 目前仅支持基于梯度的内置求解器。如果您开始使用遗传算法(GA 概述的第 6 章),您可以使用 GEKKO 运行函数评估以在不同的试验条件下返回一个目标值。您需要m.solve()在每一代新一代 GA 的循环中放置一个命令。在 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
Run Code Online (Sandbox Code Playgroud)
以下是文档中的一些附加信息: SOLVER 选择要使用的求解器以尝试找到解决方案。有免费的求解器:1:APOPT,2:BPOPT,3:IPOPT 随软件的公共版本一起分发。还有一些额外的求解器不包含在公共版本中,需要商业许可证。IPOPT 通常最适合解决具有大量自由度的问题或开始时没有很好的初始猜测。已发现 BPOPT 是系统生物学应用的最佳选择。当从先前的解决方案热启动或当自由度数(变量数 - 方程数)小于 2000 时,APOT 通常是最好的。APOT 也是唯一处理混合整数问题的求解器。使用选项 0 比较所有可用的求解器。
| 归档时间: |
|
| 查看次数: |
373 次 |
| 最近记录: |