我需要最小化一个巨大的线性编程系统,其中所有相关数据(目标函数、约束)都以数组和结构的形式存储在内存中,但不是以 lp 文件格式或 CPLEX 存储
我看到有很多求解器,例如 here和 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 中做到,但实际上我不知道在哪里可以找到如何做到这一点。
最佳答案
一种选择是使用商业求解器喜欢的 API CPLEX和 Gurobi提供 C/C++。本质上,这些 API 允许您以逻辑 block (目标函数、约束等)构建模型。 API 的工作是将模型的逻辑转换为求解器求解模型实际需要的矩阵和 vector 。
另一种方法是使用 AMPL 或 GAMS 等建模语言。例如,AMPL 还提供 C/C++ API 。
您选择哪一个可能取决于您计划使用哪种求解器以及您需要以编程方式修改模型和/或数据的频率。
关于c - 最小化 C 语言的线性规划系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56151149/