c - 最小化 C 语言的线性规划系统

标签 c linear-programming solver

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

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

我之前在 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 CPLEXGurobi提供 C/C++。本质上,这些 API 允许您以逻辑 block (目标函数、约束等)构建模型。 API 的工作是将模型的逻辑转换为求解器求解模型实际需要的矩阵和 vector 。

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

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

关于c - 最小化 C 语言的线性规划系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56151149/

相关文章:

c - 向结构中添加更多数据

c - 检测写入字符串

python - 如何在 PuLP 中添加约束以使工厂在一段时间内保持打开或关闭状态?

C - 系统调用 - N 个子进程的数组分区 -

c - 下溢如何导致上溢?

matlab - 没有for循环的矩阵赋值元素

java - GLPK for Java 库似乎找不到

c# - 如何让我的程序猜测正确的单词?

同情 : order of solutions from solve

algorithm - 方程求解算法