Advertisement
Guest User

Untitled

a guest
Oct 24th, 2016
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.44 KB | None | 0 0
  1. I am a beginner in julia coding and trying to optimize an objective function that consits of normal CDF perecentage.
  2. I tried to do this in several ways but it didn't work. In this version of code I put STD = to constant becuase I keep getting the error
  3. LoadError: ArgumentError: Normal: the condition σ > zero(σ) is not satisfied. Even when I define all xs to be >1 or adding a constriant for STD.
  4. Also when specifying STD as constant I still get error, and this model can't be solved.
  5.  
  6. The code is as follows:
  7. m=Model(solver=IpoptSolver())
  8. @variable(m,x1>=0)
  9. @variable(m,x2>=0)
  10. @variable(m,x3>=0)
  11.  
  12. function mue(x1,x2,x3)
  13. 5x1+15x2+2x3
  14. end
  15. function std(x1,x2,x3)
  16. x1+2x2+5x3
  17. end
  18.  
  19. function dist(x1,x2,x3)
  20. Normal(mue(x1,x2,x3),5)
  21. end
  22.  
  23. function cpro(x,y)
  24. cdf(x,y)
  25. end
  26.  
  27.  
  28. JuMP.register(:dist, 3, dist, autodiff=true)
  29. JuMP.register(:cpro, 2, cpro, autodiff=true)
  30.  
  31. @constraint(m, std(x1,x2,x3)>=1)
  32. @NLobjective(m, Max, (cpro(dist(x1,x2,x3),130) -cpro(dist(x1,x2,x3),70)*100)
  33.  
  34.  
  35. print(m)
  36. status = solve(m)
  37.  
  38. println("objective value: ", getobjectivevalue(m))
  39. println("x1: ", getvalue(x1))
  40. println("x2: ", getvalue(x2))
  41. println("x2: ", getvalue(x3))
  42.  
  43.  
  44. The error I get currently is as follows:
  45.  
  46. LoadError: TypeError: eval_f: in typeassert, expected Float64, got Distributions.Normal{Float64}
  47. in eval_f(::JuMP.UserFunctionEvaluator, ::SubArray{Float64,1,Array{Float64,1},Tuple{UnitRange{Int64}},true}) at C:\Users\*\.julia\v0.5\JuMP\src\nlp.jl:1324
  48. in forward_eval(::Array{Float64,1}, ::Array{Float64,1}, ::Array{ReverseDiffSparse.NodeData,1}, ::SparseMatrixCSC{Bool,Int64}, ::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}) at C:\Users\nourma\.julia\v0.5\ReverseDiffSparse\src\forward.jl:128
  49. in forward_eval_all(::JuMP.NLPEvaluator, ::Array{Float64,1}) at C:\Users\*\.julia\v0.5\JuMP\src\nlp.jl:435
  50. in eval_grad_f(::JuMP.NLPEvaluator, ::Array{Float64,1}, ::Array{Float64,1}) at C:\Users\*\.julia\v0.5\JuMP\src\nlp.jl:488
  51. in initialize(::JuMP.NLPEvaluator, ::Array{Symbol,1}) at C:\Users\*\.julia\v0.5\JuMP\src\nlp.jl:394
  52. in loadproblem!(::Ipopt.IpoptMathProgModel, ::Int64, ::Int64, ::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}, ::Symbol, ::JuMP.NLPEvaluator) at C:\Users\nourma\.julia\v0.5\Ipopt\src\IpoptSolverInterface.jl:44
  53. in _buildInternalModel_nlp(::JuMP.Model, ::JuMP.ProblemTraits) at C:\Users\*\.julia\v0.5\JuMP\src\nlp.jl:1219
  54. in #build#93(::Bool, ::Bool, ::JuMP.ProblemTraits, ::Function, ::JuMP.Model) at C:\Users\*\.julia\v0.5\JuMP\src\solvers.jl:314
  55. in (::JuMP.#kw##build)(::Array{Any,1}, ::JuMP.#build, ::JuMP.Model) at .\<missing>:0
  56. in #solve#88(::Bool, ::Bool, ::Bool, ::Array{Any,1}, ::Function, ::JuMP.Model) at C:\Users\*\.julia\v0.5\JuMP\src\solvers.jl:134
  57. in solve(::JuMP.Model) at C:\Users\*\.julia\v0.5\JuMP\src\solvers.jl:116
  58. in include_string(::String, ::String) at .\loading.jl:441
  59. in include_string(::Module, ::String, ::String) at C:\Users\*\.julia\v0.5\CodeTools\src\eval.jl:32
  60. in (::Atom.##54#57{String,String})() at C:\Users\*\.julia\v0.5\Atom\src\eval.jl:79
  61. in withpath(::Atom.##54#57{String,String}, ::String) at C:\Users\*\.julia\v0.5\CodeTools\src\utils.jl:30
  62. in withpath(::Function, ::String) at C:\Users\*\.julia\v0.5\Atom\src\eval.jl:45
  63. in macro expansion at C:\Users\*\.julia\v0.5\Atom\src\eval.jl:77 [inlined]
  64. in (::Atom.##53#56{String,String})() at .\task.jl:60
  65. while loading C:\Users\*\Desktop\Julia codes\nonlinear exp, in expression starting on line 33
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement