我使用Python中APM的Gekko解决了优化问题。两个主要决策变量(DV)是大型数组。该问题已成功收敛,但是,我需要Excel工作表中这些表的结果才能进行进一步的工作。
示例变量名是's'。由于在其中创建的数组Gekko是GKVariable / Object变量类型,因此我不能简单地使用:
pd.DataFrame(s).to_csv(r'C:\Users\...\s.csv')
因为结果为数组的每个单元提供了模型中定义的每个变量的标签(即v1,v2等)
print 's'在内核中使用会显示优化结果中的数组编号,但格式会由于列数众多而不能保证每一行都是矩阵的新行。
是否存在另一种解决方案,仅复制DV的结果值,使其成为常规np.array变量而不是对象类型变量?对此开放任何想法。
我正在研究一个相当大的 MINLP,模型大小约为 270,000 个变量和方程 - 5,000 个二进制文件。将 Gekko 与 APOPT 求解器结合使用,我可以在大约 868 秒(不到 15 分钟)内解决问题。但是,在超级计算机上解决它以增加内存,大约需要 27 小时才能产生结果。
它似乎把所有的时间都花在了创建模型上。在阅读有关 APOT 的一些内容时,它提到当自由度小于 2,000(我的约为 3,500)时效果最佳。但是,我还读到它是 Gekko 唯一可用的混合整数求解器?
我很好奇是否是这种情况,或者 Gekko 中是否有针对该程序的其他选项?(因为我更喜欢用 Python 编写代码)在应用程序中,我需要使用不同的上传的 excel 表多次运行此代码,因此如果无论如何要保存模型构造以供将来运行,这也可能会有所帮助。