Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.35 KB | None | 0 0
  1. using JuMP,CPLEX
  2.  
  3. const C = 300000
  4. const N = 100
  5.  
  6. function memuse()
  7. pid = getpid()
  8. return round(Int,parse(Int,read(`ps -p $pid -o rss=`,String))/1024)
  9. end
  10.  
  11. function addconstraints(m,x,Θ,coef,p)
  12. if p == 1
  13. @constraint(m, Θ .<= coef*x )
  14. elseif p == 2
  15. for i in 1:size(coef,1)
  16. @constraint(m, Θ <= sum(coef[i,j]*x[j] for j = 1:size(coef,2)))
  17. end
  18. elseif p == 3
  19. @constraint(m,[i = 1:size(coef,1)], Θ <= sum(coef[i,j]*x[j] for j = 1:size(coef,2)))
  20. elseif p == 4 # With JuMP 0.18.5
  21. rhs = zeros(C)
  22. coef = hcat(-coef,ones(C))
  23. CPLEX.add_constrs!(m.internalModel.inner, coef, '<', rhs)
  24. elseif p == 5 # With JuMP 0.19.0
  25. rhs = zeros(C)
  26. coef = hcat(-coef,ones(C))
  27. CPLEX.add_constrs!(m.moi_backend.optimizer.model.inner, coef, '<', rhs)
  28. end
  29. end
  30. function test_const(constype; direct=false)
  31. m = if !direct
  32. Model(with_optimizer(CPLEX.Optimizer, CPX_PARAM_SCRIND=0))
  33. else
  34. JuMP.direct_model(CPLEX.Optimizer(CPX_PARAM_SCRIND=0))
  35. end
  36. @variable(m, 0 <= x[1:N] <= 1)
  37. @variable(m, 0 <= Θ <= 1000)
  38.  
  39. @objective(m, Max, Θ )
  40. optimize!(m)
  41. #solve(m)
  42.  
  43. coef = rand(C,N)
  44. GC.gc()
  45. m1= memuse()
  46. val, time, = @timed addconstraints(m,x,Θ,coef,constype)
  47. GC.gc()
  48. #sleep(30)
  49. m2 = memuse()
  50. println("Memory consumption $(m2-m1) Mb and Time $(time)")
  51. val, time2, = @timed if constype < 4
  52. optimize!(m)
  53. #solve(m)
  54. elseif constype == 4
  55. CPLEX.optimize!(m.internalModel.inner)
  56. elseif constype == 5
  57. CPLEX.optimize!(m.moi_backend.optimizer.model.inner)
  58. end
  59.  
  60. println("Time to solve model $(time2)")
  61. end
  62.  
  63. println("########### Vectorized - WithoutDirect ###########")
  64. test_const(1)
  65. test_const(1)
  66.  
  67. println("########### Scalar 1 - WithoutDirect ###########")
  68. test_const(2)
  69. test_const(2)
  70.  
  71. println("########### Scalar 2 - WithoutDirect ###########")
  72. test_const(3)
  73. test_const(3)
  74.  
  75. println("########### Low-level API ###########")
  76. test_const(5)
  77. test_const(5)
  78.  
  79.  
  80. println("########### Vectorized - WithDirect ###########")
  81. test_const(1; direct = true)
  82. test_const(1; direct = true)
  83.  
  84. println("########### Scalar 1 - WithDirect ########### ")
  85. test_const(2; direct = true)
  86. test_const(2; direct = true)
  87.  
  88. println("########### Scalar 2 - WithDirect ###########")
  89. test_const(3; direct = true)
  90. test_const(3; direct = true)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement