我正在使用 LPSolve IDE 来解决 LP 问题。我必须针对大约 10 或 20 组不同的参数来测试模型并进行比较。

有没有办法让我保留一般模型,但按照我的意愿指定常量?例如,如果我有以下约束:

A >= [c]*B

我想测试模型在以下情况下的行为 [c] = 10, [c] = 20, , 等等。现在,我只是通过搜索和替换准备不同的 .lp 文件,但是:

a) 看起来效率不太高

b)在某些时候,我需要考虑形式的约束 A >= B/[c] // =(1/[c]*B). 。然而,LPSolve 似乎无法识别除法运算符。正在指定 1/[c] 每次直接直接是唯一的选择吗?

有帮助吗?

解决方案

目前尚不完全清楚 lp_solve 使用什么格式。以 cplex lp 格式为例,没有更好的方法:您不能使用除法来计算系数(甚至不能使用乘法),并且没有函数可以“包含”另一个文件或为参数引入符号名称。它是一种非常简单的语言,不适合任何复杂的任务。

您的问题有多种解决方案;这取决于您是否对快速实现或“干净”、可重用且运行时间短的东西感兴趣(当然这是一个折衷方案)。

  1. 您可以从其他语言生成 lp 文件,例如蟒蛇、bash 等这是一个“快速而肮脏”的解决方案:运行时非常慢,但实施起来可能更快。

  2. 正如我所知道的每个 lp 求解器一样,lp_solve 带有几个建模接口:例如,您可以使用 GNU mp 格式 而不是当前的。它识别乘法、除法、条件等。(您要查找的所有内容,请参阅第 3.1 节“数字表达式”)

  3. 最后,您可以直接使用另一种编程语言的 lp_solve 接口(例如C) 这将是最灵活的选项,但可能需要更多的工作。

请参阅 lp_solve 文档 有关支持的输入格式和 API 参考的更多详细信息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top