# JuMP optimization problem

**URL:** <https://discourse.julialang.org/t/jump-optimization-problem/100096>\
**Category:** General Usage\
**Created:** [June 9, 2023, 11:11am UTC](https://discourse.julialang.org/t/jump-optimization-problem/100096 "2023-06-09T11:11:28Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![hitam](https://avatars.discourse-cdn.com/v4/letter/h/e9bcb4/32.png) [@hitam](https://discourse.julialang.org/u/hitam)\
**Post date:** [June 9, 2023, 11:11am UTC](https://discourse.julialang.org/t/jump-optimization-problem/100096/1 "2023-06-09T11:11:28Z")

</div>

I want to write a function

---

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/27854_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [June 9, 2023, 11:35am UTC](https://discourse.julialang.org/t/jump-optimization-problem/100096/2 "2023-06-09T11:35:45Z")

</div>

Hey there! I think you need to actually run the optimization with `optimize!(model)` to get a solution

Unless something else isn’t working? I haven’t tried to run your code

See here: [Getting started with JuMP · JuMP](https://jump.dev/JuMP.jl/stable/tutorials/getting_started/getting_started_with_JuMP/#Step-by-step)

---

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/27854_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [June 9, 2023, 11:59am UTC](https://discourse.julialang.org/t/jump-optimization-problem/100096/4 "2023-06-09T11:59:34Z")

</div>

Could you be a little more precise as to what “not working” means to you? It would make it easier to help 🙂

> [@Please read: make it easier to help you](https://discourse.julialang.org/t/please-read-make-it-easier-to-help-you/14757):
>
> Welcome to the Julia Discourse! We are enthusiastic about helping Julia programmers, both beginner and experienced. This public service announcement (PSA) outlines best practices when asking for help. Following these points makes it easier for us to help you and more likely you’ll get a prompt, useful answer. Keywords are highlighted to make it easier to refer to specific points. Choose a descriptive title that captures the key part of your question, eg “plots with multiple axes” instead of …

---

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/27854_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [June 9, 2023, 12:14pm UTC](https://discourse.julialang.org/t/jump-optimization-problem/100096/5 "2023-06-09T12:14:01Z")

</div>

> [@hitam](#):
>
> `optimize! m1`

This is not valid Julia syntax, it should be `optimize!(model)`. Was that the issue?

---

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/27854_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [June 9, 2023, 12:38pm UTC](https://discourse.julialang.org/t/jump-optimization-problem/100096/7 "2023-06-09T12:38:20Z")

</div>

Ok, but do you see an error or a wrong result? What do you get? How do you know the true value?

At first glance you still need to specify an optimizer for the code to run

---

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/27854_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [June 9, 2023, 12:50pm UTC](https://discourse.julialang.org/t/jump-optimization-problem/100096/8 "2023-06-09T12:50:18Z")

</div>

After adding an optimizer and fixing a few syntax mistakes, I get 12 instead of 14. Are you sure about your values?

```julia
julia> using JuMP, HiGHS

julia> costs = Dict("A" => [2.0, 2.0, 2.0], "B" => [3.0, 3.0, 3.0],);

julia> capacity = Dict("A" => [2.0, 2.0, 1.0], "B" => [1.0, 2.0, 4.0],);

julia> demand = [2.0, 1.0, 3.0];

julia> function op(capacity, costs, demand, optimizer)
           C = keys(capacity)
           D = keys(demand)
           m1 = Model(optimizer)
           @variable(m1, 0 <= x[c in C, d in D])
           @objective(m1, Min, sum(costs[c][d] * x[c, d] for c in C, d in D))
           @constraint(m1, [d in D], sum(x[c, d] for c in C) >= demand[d])
           optimize!(m1)
           print(m1)
           return m1
       end
op (generic function with 1 method)

julia> m1 = op(capacity, costs, demand, HiGHS.Optimizer);
Running HiGHS 1.5.3 [date: 1970-01-01, git hash: 45a127b78]
Copyright (c) 2023 HiGHS under MIT licence terms
Presolving model
3 rows, 6 cols, 6 nonzeros
0 rows, 0 cols, 0 nonzeros
Presolve : Reductions: rows 0(-3); columns 0(-6); elements 0(-6) - Reduced to empty
Solving the original LP from the solution after postsolve
Model status : Optimal
Objective value : 1.2000000000e+01
HiGHS run time : 0.00
Min 3 x[B,1] + 3 x[B,2] + 3 x[B,3] + 2 x[A,1] + 2 x[A,2] + 2 x[A,3]
Subject to
 x[B,1] + x[A,1] ≥ 2
 x[B,2] + x[A,2] ≥ 1
 x[B,3] + x[A,3] ≥ 3
 x[B,1] ≥ 0
 x[A,1] ≥ 0
 x[B,2] ≥ 0
 x[A,2] ≥ 0
 x[B,3] ≥ 0
 x[A,3] ≥ 0

julia> println(termination_status(m1))
OPTIMAL

julia> println(objective_value(m1))
12.0

julia> println(value.(m1[:x]))
2-dimensional DenseAxisArray{Float64,2,...} with index sets:
    Dimension 1, ["B", "A"]
    Dimension 2, [1, 2, 3]
And data, a 2×3 Matrix{Float64}:
 0.0 0.0 0.0
 2.0 1.0 3.0

```

---

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/27854_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [June 9, 2023, 4:03pm UTC](https://discourse.julialang.org/t/jump-optimization-problem/100096/11 "2023-06-09T16:03:33Z")

</div>

Have you tried running my corrected code? There were a few typos in yours, for instance you did `for c in c` whereas you should have separated the key from the key set

---

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/27854_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [June 9, 2023, 5:09pm UTC](https://discourse.julialang.org/t/jump-optimization-problem/100096/13 "2023-06-09T17:09:02Z")

</div>

The code I gave you runs on my computer, did you change the other bits too?
