use*_*469 7 language-agnostic algorithm pseudocode linear-programming
我在课堂上一直在做线性编程问题,但是我想知道如何编写一个特定问题的程序来解决它.如果有太多的变量或约束,我永远无法通过绘图来做到这一点.
示例问题,使用约束最大化5x + 3y:
我画了这个,得到了一个有3个角的可见区域.x = 5 y = 2是最佳点.
如何将其转换为代码?我知道单纯形法.而且非常重要的是,所有LP问题都会被编码在同一个结构中吗?蛮力工作吗?
如果你搜索,你会发现很多Simplex实现.
除了评论中提到的那个(C中的数字食谱),您还可以找到:
解决你的另外两个问题:
是否所有LP都以相同的方式编码?是的,可以编写通用LP解算器来加载和解决任何LP.(阅读LP的行业标准格式有mps
和.lp
蛮力工作吗?请记住,许多公司和大型组织花费很长时间来对解算器进行微调.有些LP具有许多解算器试图利用的有趣属性.而且,某些计算可以并行解决.该算法是指数的,因此在一些大量的变量/约束下,暴力无效.
希望有所帮助.