Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- I am a beginner in julia coding and trying to optimize an objective function that consits of normal CDF perecentage.
- 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
- LoadError: ArgumentError: Normal: the condition σ > zero(σ) is not satisfied. Even when I define all xs to be >1 or adding a constriant for STD.
- Also when specifying STD as constant I still get error, and this model can't be solved.
- The code is as follows:
- m=Model(solver=IpoptSolver())
- @variable(m,x1>=0)
- @variable(m,x2>=0)
- @variable(m,x3>=0)
- function mue(x1,x2,x3)
- 5x1+15x2+2x3
- end
- function std(x1,x2,x3)
- x1+2x2+5x3
- end
- function dist(x1,x2,x3)
- Normal(mue(x1,x2,x3),5)
- end
- function cpro(x,y)
- cdf(x,y)
- end
- JuMP.register(:dist, 3, dist, autodiff=true)
- JuMP.register(:cpro, 2, cpro, autodiff=true)
- @constraint(m, std(x1,x2,x3)>=1)
- @NLobjective(m, Max, (cpro(dist(x1,x2,x3),130) -cpro(dist(x1,x2,x3),70)*100)
- print(m)
- status = solve(m)
- println("objective value: ", getobjectivevalue(m))
- println("x1: ", getvalue(x1))
- println("x2: ", getvalue(x2))
- println("x2: ", getvalue(x3))
- The error I get currently is as follows:
- LoadError: TypeError: eval_f: in typeassert, expected Float64, got Distributions.Normal{Float64}
- 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
- 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
- in forward_eval_all(::JuMP.NLPEvaluator, ::Array{Float64,1}) at C:\Users\*\.julia\v0.5\JuMP\src\nlp.jl:435
- in eval_grad_f(::JuMP.NLPEvaluator, ::Array{Float64,1}, ::Array{Float64,1}) at C:\Users\*\.julia\v0.5\JuMP\src\nlp.jl:488
- in initialize(::JuMP.NLPEvaluator, ::Array{Symbol,1}) at C:\Users\*\.julia\v0.5\JuMP\src\nlp.jl:394
- 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
- in _buildInternalModel_nlp(::JuMP.Model, ::JuMP.ProblemTraits) at C:\Users\*\.julia\v0.5\JuMP\src\nlp.jl:1219
- in #build#93(::Bool, ::Bool, ::JuMP.ProblemTraits, ::Function, ::JuMP.Model) at C:\Users\*\.julia\v0.5\JuMP\src\solvers.jl:314
- in (::JuMP.#kw##build)(::Array{Any,1}, ::JuMP.#build, ::JuMP.Model) at .\<missing>:0
- in #solve#88(::Bool, ::Bool, ::Bool, ::Array{Any,1}, ::Function, ::JuMP.Model) at C:\Users\*\.julia\v0.5\JuMP\src\solvers.jl:134
- in solve(::JuMP.Model) at C:\Users\*\.julia\v0.5\JuMP\src\solvers.jl:116
- in include_string(::String, ::String) at .\loading.jl:441
- in include_string(::Module, ::String, ::String) at C:\Users\*\.julia\v0.5\CodeTools\src\eval.jl:32
- in (::Atom.##54#57{String,String})() at C:\Users\*\.julia\v0.5\Atom\src\eval.jl:79
- in withpath(::Atom.##54#57{String,String}, ::String) at C:\Users\*\.julia\v0.5\CodeTools\src\utils.jl:30
- in withpath(::Function, ::String) at C:\Users\*\.julia\v0.5\Atom\src\eval.jl:45
- in macro expansion at C:\Users\*\.julia\v0.5\Atom\src\eval.jl:77 [inlined]
- in (::Atom.##53#56{String,String})() at .\task.jl:60
- 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