首页 文章

Rglpk_solve_lp和glpsol(由pulp glpk solver内部使用)为相同的LP返回不同的值

提问于
浏览
0

lp问题可以在Portfolio Optimization Problem找到 . 问题是基于man yollins演示文稿中的cvar优化R Tools for Portfolio Optimization .

当我在R中读取lp文件并执行它时,找到了最佳解决方案 . 而当我通过glpsol做同样的事情时,它会说"LP HAS NO PRIMAL FEASIBLE SOLUTION" . 我正在使用glpsol作为pulp内部使用glpsol来解决lp,当solver参数作为pulp.GLPK()给出时 .

在R中运行lp的步骤:

library("Rglpk")
problem <- Rglpk_read_file("path/to/problem.lp", "CPLEX_LP")
solution <- Rglpk_solve_LP(problem$objective, problem$constraints[[1]], problem$constraints[[2]], problem$constraints[[3]], problem$bounds, problem$types, problem$maximum, control=list("verbose" = TRUE))
print(solution$status)
print(solution$solution)

在glpsol中运行lp的步骤:

glpsol --cpxlp "path/to/problem.lp" -o output.sol

知道为什么吗?我试着在R中看到Rglpk_solve_lp函数的代码 . 它似乎是在调用glpk c库的glp_simplex函数 . 我猜glpsol也在内部调用glp_simplex .

环境细节:
操作系统:Ubuntu 12.04
R版本:3.02
Rglpk版本:0.5-1(GLPK版本4.52随源包一起提供)
glpsol版本:4.52

1 回答

  • 1

    添加选项--nopresol, - noscale, - std到glpsol命令给了我与Rglpk_solve_lp相同的结果 .

    glpsol --cpxlp ~/Downloads/PortfolioOptimization_minReturns_0.190000.lp -o output.sol --nopresol --noscale --std
    

    我不得不查看glpsol的代码并将其与Rglpk软件包的代码进行比较来解决这个问题 .

相关问题