R语言-加快混合整数规划求解速度试验(1)
2017-01-08 16:04
645 查看
R语言中使用哪个求解器比较快
最近尝试了不少的免费最优化求解器,其中包括Rglpk、Rsymphony、 gurobi等求解包进行求解混合整数规划问题。以windows、8G内存、i7处理器进行方程的求解。
以一个625个变量,481个约束的问题分别进行求解测试。其中gurobi的不调整参数下求解时间最快大约61s,Rglpk和Rsymphony分别为393s,342s 。
相比之下,gurobi对于其他的求解器有着较快的提升,但较为麻烦的是它的验证码申请。gurobi免费版的申请方法和安装方法可以看:
http://blog.csdn.net/qq_27755195/article/details/54018074
R中调整gurobi参数加快求解速度
测试的例子是上次的求解问题0-1规划例子,,添加了上次末尾中提及的几点:1. 每组的最大最小值尽量的密集
2. 捆绑的人尽量和捆绑的人在一组
http://blog.csdn.net/qq_27755195/article/details/53965379
测试的人数是35人,和起来一共642个变量,491个约束。每次运算10次。
测试1:稀疏矩阵表达约束矩阵
当对约束进行表达时,存在不少的0、1的位置,在gurobi例子中看到不少使用稀疏矩阵进行表达的例子,尝试一下稀疏矩阵是否对求解速度有所帮助。test1 <- microbenchmark(result <- gurobi(model, params), times = 10) test1 # Unit: seconds # min lq mean median uq max neval # 60.96 61.12 61.43 61.32 61.87 61.89 10 library(Matrix) model$A <- Matrix(model$A, sparse = T) test2 <- microbenchmark(result <- gurobi(model, params), times = 10) test2 # Unit: seconds # min lq mean median uq max neval # 59.52 61.78 60.94 60.81 61.28 61.33 10
总体来说,在R中使用稀疏矩阵进行表达对于求解速度的变化近乎0,总体上没有什么差别,速度上快了1s不到。
测试2:MIP初始解的设置
尝试通过对Model的start参数进行设置,用贪婪算法以分差最小为目标快速构建一个初始解,尝试是否对gurobi的求解速度有所帮助。结果如下:# Unit: seconds min lq mean median uq max neval 56.26 56.31 56.50 56.52 56.58 56.81 10
自己尝试了一下,一个不同的初始解构建方式对于求解速度上有着不同的影响,一个好的初始解对于求解速度是有帮助的,试验的结果大概快乐4s中左右。初始解太过粗糙,对于求解速度一般没有影响,但是至少不会变慢。
测试3:其他参数设置
混合整数规划上,param的设置,OutputFlag设置为0,即不输出计算过程,对求解速度大概有2s左右的提升,在Method上设置为2,即Barrir的求解速度是最快的。相关文章推荐
- Mshflexgrid控件填写数据时的添加方式的改变,加快数据读取速度.
- 加快Outlook Express 6启动速度
- 加快XCode的编译链接速度(200%+)—XCode编译速度慢的解决方案
- 如何加快sql执行速度?
- SQL SERVER BACKUP DATABASE 加快备份速度方法(压缩-Compression)
- 有关android加快开机速度
- 加快mysql导入、导出速度
- 如何用O(nlogn)的的速度求解最长上升(下降)子序列
- m2014-architecture-imgserver->利用Squid反向代理搭建CDN缓存服务器加快Web访问速度
- 加快网页加载速度的五个有效的方法
- 【转】加快网站访问速度——Yslow极限优化
- 数据采集服务程序--ADO连续插入记录,2天后,插入速度明显变慢,求解原因?
- 通过观察pad点餐系统,当系统剩余内存达到130M以上时,应用程序的运行速度明显加快了
- 用DBSQL类加快开发MySQL数据库程序的速度
- android 快速开发(二)辅助类的使用:加快开发速度
- 试验设计两因子无交互作用方差分析的r语言代码
- 【加快cocos2d-x编译速度】cocos2d-x编译项目时避免拷贝文件夹和库
- 加快Gradle的构建速度
- 与CSDN客服交流解决“所属分类”无法使用,并访问CSDN速度明显加快
- 加快Android模拟器运行速度