# JuMP: optimizing in loop with an updated parameter does not work as I expect from experience with AMPL/GAMS behavior

**URL:** <https://discourse.julialang.org/t/jump-optimizing-in-loop-with-an-updated-parameter-does-not-work-as-i-expect-from-experience-with-ampl-gams-behavior/55245>\
**Category:** Optimization (Mathematical)\
**Tags:** jump\
**Created:** [February 14, 2021, 7:38am UTC](https://discourse.julialang.org/t/jump-optimizing-in-loop-with-an-updated-parameter-does-not-work-as-i-expect-from-experience-with-ampl-gams-behavior/55245 "2021-02-14T07:38:57Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![jovansam](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jovansam/32/15023_2.png) [@jovansam](https://discourse.julialang.org/u/jovansam)\
**Post date:** [February 14, 2021, 7:38am UTC](https://discourse.julialang.org/t/jump-optimizing-in-loop-with-an-updated-parameter-does-not-work-as-i-expect-from-experience-with-ampl-gams-behavior/55245/1 "2021-02-14T07:38:57Z")

</div>

Hi,

When I update a parameter of a predefined model, JuMP does not seem to update the parameter, at least when I call to optimize!. My solution for now is to put the whole model definition in a function as in the first illustration below and and call the function each time I change a parameter. But I was wondering whether there is another solution by way of the second model illustration below?

Any ideas are appreciated.

First code illustration

```julia
function NLP(ϕ)
    nlp = Model(optimizer_with_attributes(Ipopt.Optimizer))
    set_silent(nlp)
    @variable(nlp, x>=0, start = 1)
    @NLobjective(nlp, Max, log(x) - ϕ * x)
    optimize!(nlp)
    display(value(x))
    display(termination_status(nlp))
end

function solve()
    cnt = 100
    ϕ = 1
    while cnt > 95
        NLP(ϕ)
        ϕ = ϕ / cnt
        cnt -= 1
    end
end

@time solve()

```

Second code illustration

```julia
function solve()
    cnt = 100
    ϕ = 1

    nlp = Model(optimizer_with_attributes(Ipopt.Optimizer))
    set_silent(nlp)
    @variable(nlp, x>=0, start = 1)
    @NLobjective(nlp, Max, log(x) - ϕ * x)

    while cnt > 95
        optimize!(nlp)
        display(value(x))
        display(termination_status(nlp))
        ϕ = ϕ / cnt
        cnt -= 1
    end
end

@time solve()

```

---

<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:** [February 14, 2021, 8:02am UTC](https://discourse.julialang.org/t/jump-optimizing-in-loop-with-an-updated-parameter-does-not-work-as-i-expect-from-experience-with-ampl-gams-behavior/55245/2 "2021-02-14T08:02:23Z")

</div>

[https://jump.dev/JuMP.jl/stable/nlp/#Nonlinear-Parameters](https://jump.dev/JuMP.jl/stable/nlp/#Nonlinear-Parameters)

---

<div class="post-metadata">

**Author:** ![jovansam](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jovansam/32/15023_2.png) [@jovansam](https://discourse.julialang.org/u/jovansam)\
**Post date:** [February 14, 2021, 11:52am UTC](https://discourse.julialang.org/t/jump-optimizing-in-loop-with-an-updated-parameter-does-not-work-as-i-expect-from-experience-with-ampl-gams-behavior/55245/3 "2021-02-14T11:52:43Z")

</div>

Thanks @odow. I see how this works.
