# JuMP constraint MethodError

**URL:** https://discourse.julialang.org/t/jump-constraint-methoderror/107752
**Category:** Optimization (Mathematical)
**Tags:** jump, optimization
**Created:** [December 18, 2023, 1:34am UTC](https://discourse.julialang.org/t/jump-constraint-methoderror/107752 "2023-12-18T01:34:02Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![AP\_profile](https://avatars.discourse-cdn.com/v4/letter/a/85f322/32.png) [@AP\_profile](https://discourse.julialang.org/u/AP_profile)
#### Post date: [December 18, 2023, 1:34am UTC](https://discourse.julialang.org/t/jump-constraint-methoderror/107752/1 "2023-12-18T01:34:02Z")

</div>

I’ve been trying to use a constraint that uses Distribution.cdf() in optimization using JuMP. An example of this usage would be similar to the below code.

```julia
model = JuMP.Model(NLopt.Optimizer);
set_optimizer_attribute(model, "algorithm", :LD_SLSQP);

@variable(model, x[1:11]);
@constraint(model, c2, Distributions.cdf(Normal(),x[1]) >= 0);

```

But this produces the error

```julia
ERROR: MethodError: no method matching cdf(::Normal{Float64}, ::VariableRef)

Closest candidates are:
  cdf(::UnivariateDistribution, ::AbstractArray)
   @ Distributions deprecated.jl:103
  cdf(::Normal, ::Real)
   @ Distributions C:\Users\gperera@ltu.edu.au\.julia\packages\Distributions\SUTV1\src\univariates.jl:637

Stacktrace:
 [1] macro expansion
   @ C:\Users\gperera@ltu.edu.au\.julia\packages\MutableArithmetics\NIXlP\src\rewrite.jl:321 [inlined]
 [2] macro expansion
   @ C:\Users\gperera@ltu.edu.au\.julia\packages\JuMP\D44Aq\src\macros.jl:717 [inlined]
 [3] top-level scope
   @ Untitled-1:34

```

Any help would be appreciated! Thanks!

---

<div class="post-metadata">

### Author: ![odow](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/odow/32/28685_2.png) [@odow](https://discourse.julialang.org/u/odow)
#### Post date: [December 18, 2023, 2:39am UTC](https://discourse.julialang.org/t/jump-constraint-methoderror/107752/2 "2023-12-18T02:39:54Z")

</div>

You cannot use arbitrary nonlinear functions with JuMP.

See [Should you use JuMP? · JuMP](https://jump.dev/JuMP.jl/stable/should_i_use/#You-want-to-optimize-a-complicated-Julia-function)

If you can provide the analytic gradient of the function with respect to your variables then you could use a user-defined operator: [Nonlinear Modeling · JuMP](https://jump.dev/JuMP.jl/stable/manual/nonlinear/#jump_user_defined_operators)
