【问题标题】:LPSolve - specify constant coefficientsLPSolve - 指定常数系数
【发布时间】:2013-11-16 11:22:47
【问题描述】:

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

有什么方法可以让我保留通用模型,但可以根据需要指定常量吗?例如,如果我有以下约束:

A >= [c]*B

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

a) 似乎效率不高

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

【问题讨论】:

    标签: linear-programming lpsolve


    【解决方案1】:

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

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

    1. 您可以使用其他语言生成 lp 文件,例如python、bash 等。这是一个“又快又脏”的解决方案:运行时速度很慢,但实现起来可能更快。

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

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

      李>

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多