最小化C语言中的线性编程系统

时间:2019-05-15 13:57:43

标签: 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语言中完成,但实际上我不知道在哪里可以找到实现方法。

1 个答案:

答案 0 :(得分:4)

一种选择是使用商业求解器(如CPLEXGurobi)为C / C ++提供的API。本质上,这些API使您可以按逻辑块(目标函数,约束等)构建模型。 API负责将模型的逻辑转换为求解器为求解模型实际需要的矩阵和向量

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

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