我正在使用LPSolve IDE来解决LP问题。我必须针对大约10或20组不同参数测试模型并进行比较。
有没有办法让我保留一般模型,但是按照我的意愿指定常量?例如,如果我有以下约束:
A >= [c]*B
我想测试模型在[c] = 10
,[c] = 20
等时的行为方式。现在,我只是通过搜索和替换来准备不同的.lp文件,但是:
a)看起来效率不高
b)在某些时候,我需要考虑A >= B/[c] // =(1/[c]*B)
形式的约束。然而,似乎LPSolve并没有认识到除法运算符。每次唯一选项时是否直接指定1/[c]
?
答案 0 :(得分:1)
目前还不完全清楚lp_solve使用的格式。以cplex lp格式为例,没有更好的方法:你不能对系数使用除法(甚至不能使用乘法),也没有“包含”另一个文件或为参数引入符号名称的功能。它是一种非常简单的语言,不适合任何复杂的任务。
您的问题有几种解决方案;这取决于你是否对快速实现的东西感兴趣,或者“干净”,可重复使用以及运行时间短(当然这是妥协)。
您可以使用其他语言生成lp文件,例如: python,bash等。这是一个“快速而肮脏”的解决方案:在运行时非常慢,但实现起来可能更快。
正如我所知道的每个lp解算器一样,lp_solve带有几个建模接口:例如,您可以使用GNU mp format而不是当前的接口。它识别乘法,除法,条件等(您要查找的所有内容,请参阅3.1'数字表达式')
最后,你可以直接使用另一种编程语言(例如C)的lp_solve接口,这将是最灵活的选择,但它可能需要更多的工作。
有关支持的输入格式和API参考的更多详细信息,请参阅lp_solve documentation。