编写典型数据预测算法 流行算法类工具盘点一
名称:lpsolve
解决问题:纯线性问题,混合的整型和二进制问题,半连续性与特殊命令集(SOS) 模型
应用平台:由ANSI C编写,可应用于Linux和WINDOWS等不同平台。
使用案例:
解决下图所示的最大流问题(这幅图已经标注出求解结果了):
lpsolve IDE环境中只需输入如下的文本,是不是非常简单直观:
然后按一个运行按钮(红框标注),出现以下的求解结果,红框标注的是结果,蓝框标注的是求解信息,包括耗费时间等等:
关于lpsolve IDE环境的详细使用说明可以参考其使用手册(lpsolve下载主页上可自由下载),看到这里也许有人会问,上面的例子很简单,如果对于复杂的网络拓扑,自己手动输入这些表达式显然是不现实的, 那该怎么办,好在lpsolve可以集成在别的开发环境中,它提供了一整套API,可供调用,具体也请参考使用手册,上面提到的博客里对于matlab调用lpsolve有简单的说明,这里补充说一下,mxlpsolve('write_lp',lp,'a.lp')这个语句可以生成IDE环境里可直接执行的脚本文件(C,JAVA等接口也有类似语句),这样复杂的问题可以用高级编程语言建模,然后生成LP脚本文件单独在IDE中运行,是不是很方便。
以上这个Max Flow的例子直接用matlab自带的linprog工具箱求解,写出代码是:
f = [ -1 -1 -1 0 0 0 0 0 0 0 0 0 ]; A = ; b = ; Aeq = [1 0 0 -1 -1 0 0 0 0 0 0 0 0 1 0 0 0 -1 -1 -1 0 0 0 0 0 0 1 0 0 0 0 0 -1 0 0 0 0 0 0 1 0 1 0 0 0 -1 0 0 0 0 0 0 1 0 1 0 1 0 -1 0 0 0 0 0 0 0 0 1 0 0 0 -1 ]; beq = zeros(6,1); lb = zeros(12,1); ub = [3;2;2;5;1;1;3;1;1;4;2;4]; x = linprog(f,A,b,Aeq,beq,lb,ub);
求解结果如下,可以看到虽然最大流的值是正确的,但其它边上的流却与lpsolve求解结果有很大差别:
- 01-20植发一次可以管一辈子吗?一年过去了免费植发的他
- 09-28奇痒无比的疹子一定是湿疹吗?绝非耸人听闻这种疹子重可休克
- 05-04情人之间真爱正确答案:落入俗世的恋情才是最好的爱情
- 02-01四川最后一个伙婚村落,四川最后一个伙婚村落
- 03-06英雄联盟手游源计划哪款皮肤最好:英雄联盟手游源计划2.0系列皮肤将于12.30上线
- 03-28关于各类催款函怎么写?催款函,范本
- 04-09喂奶奶水太急应采取什么姿势好?宝妈用这种办法给孩子喂奶
- 04-04合肥的历史地名变迁:了解安徽省合肥市从古到今的历史变迁
- 01-31二手车泡过水出过事能查到吗?高速上漏油维修花上万
- 09-24爱是宇宙的答案 爱是宇宙的终极答案
- 03-24新媒体大数据分析:如何分析短视频数据优化运营策略
- 02-09养猫的14个日记:养猫一日记
- 01-18印尼矿产资源出口:佐科发出收紧信号印尼严控矿产出口
- 02-09养猫的14个日记:养猫一日记
- 01-01秋天适合的广东猪骨汤,如果入秋后不懂煲汤那就错过滋补时机了
- 11-09重庆这10家神级苍蝇馆子,重庆这15家苍蝇馆子只有老司机才找得到
热门
推荐
- 1花朵唯美图片大全455
- 2吉他入门必学曲目439
- 32020年上半年乡镇安全生产大检查情况总结199
- 4关于梦想的班会开场白284
- 5慢跑有哪些好处342
- 6五四青年文艺汇演主持稿124
- 7一班和蜡烛紧相拥高中优秀作文404
- 8小小二班家长会发言稿219