最小化 C 中的线性规划系统

Minimize a linear programming system in C

我需要最小化一个巨大的线性规划系统,其中所有相关数据(objective 函数、约束)都以数组和结构的形式存储在内存中,而不是以 lp 文件格式或 CPLEX

我看到有很多像 here and here 这样的求解器,但问题是如何在不从特殊格式的文件中调用它的情况下最小化模型?

我之前在 R 和 Python 中做了同样的工作,在生成模型后直接求解模型,而不需要最初将它保存在一个特殊文件中,然后由求解器调用它。这是 Python 中的示例:

from lpsolve55 import *
from lp_maker import *
from lp_solve import *

lp = lp_maker(obj_func, constraints , rhs, sense_equality)
solvestat = lpsolve('solve', lp)
obj = lpsolve('get_objective', lp)

我认为这在 C 中是可能的,但我真的不知道在哪里可以找到如何做到这一点。

一种选择是使用 CPLEX and Gurobi 等商业求解器为 C/C++ 提供的 API。本质上,这些 API 允许您在逻辑块(objective 函数、约束等)中构建模型。 API 负责将模型的 逻辑 转换为解算器实际需要的 矩阵和向量 以求解模型。

另一种方法是使用建模语言,如 AMPL 或 GAMS。例如,AMPL 还提供了 C/C++ API

您选择哪一个可能取决于您计划使用哪种求解器以及您需要以编程方式修改模型 and/or 数据的频率。