Mac/Xcode/C++ 与 GAMS 连接

计算科学 软件 非线性规划
2021-12-18 19:36:54

基本上,我未能尝试在 C++/Xcode/Mac 系统中实现单个全局 MINLP 求解器(alphaBB、ANTIGONE、BARON、Couenne、LindoAPI 和 SCIP)。另一方面,我意识到 GAMS 已经集成了很多求解器。所以我正在考虑使用 C++/Xcode/Mac 系统来构建模型并让 GAMS 解决这个问题。这方面的标准做法是什么?谢谢你。

1个回答

标准做法往往是以下之一:

  • 在 GAMS 中制定模型并在 GAMS 中求解
  • 在 C++ 中制定模型并在 C++ 中求解

在任何一种情况下,您都可以从文本文件中读取数据并使用它来填充您的模型,而不是硬编码输入。

GAMS 确实有一个 C++ API。有一次,我使用过它,基于这种经验,我不会推荐它,因为混合语言编程往往难以维护。不过,如果您想在 C++ 中生成数据,然后使用 GAMS API 将该数据导入 GAMS,您也可以这样做。

您引用的某些求解器在 C++ 中不可用。例如,BARON 与 GAMS 和 MATLAB 接口,但没有可调用的 C++ 接口。ANTIGONE 也有一个 GAMS 接口,但没有公开可用的 C++ 接口。(也许您有直接来自作者的版本?) alphaBB 是一种求解 MINLP 的算法,但我不知道有什么软件叫做 alphaBB 可以解决 MINLP。

我没有任何使用 Xcode 作为软件开发 IDE 的经验,但至少,您应该能够通过编译并适当地链接您的软件来让 Couenne 和 SCIP 在 Mac 上工作。如果您在这一步遇到问题,我建议您将数据生成和 MINLP 模型制定解耦。使用 C++ 程序生成数据,然后在 GAMS 中读取数据并在 GAMS 中制定您的 MINLP,然后调用 GAMS 来求解您的模型。