JuMP minták

kevés valtozó és korlátozó feltétel
using JuMP, GLPK

mdl = Model(GLPK.Optimizer)

# változók
@variable(mdl, x>=0)
@variable(mdl, y>=0)

# korlátozó feltételek
@constraint(mdl, ... <= ...)
@constraint(mdl, ... == ...)


# célfüggvény
@objective(mdl, Max, )
@objective(mdl, Min, )


# optimizálás
optimize!(mdl)

# itt az a rész fontos, hogy 
# Termination status : OPTIMAL
# Message from the solver:
# "Solution is optimal"
# ha nem ezt látjuk akkor nincsen optimum (ures halmaz vagy nemkorlátos vagy egyéb hiba miatt)
solution_summary(mdl; verbose=true)|>print

println("\n--------------------------------\n")

V = value.([g,p])
println("az optimum értéke: ",objective_value(mdl))
println("az optimum helye:  ")
display(V)



sok valtozó és/vagy korlátozó feltétel
# ez a konzervgyáras feladat

using JuMP, GLPK

mdl = Model(GLPK.Optimizer)

# változók
@variable(mdl, x[1:3,1:2]>=0) 

# korlátozó feltételek

# a termelők korlátai
@constraint(mdl, sum(x[1,1:end])<=200)
@constraint(mdl, sum(x[2,1:end])<=310)
@constraint(mdl, sum(x[3,1:end])<=420)

# a gyáregységek korlátai
@constraint(mdl, sum(x[1:end,1])<=460)
@constraint(mdl, sum(x[1:end,2])<=560)


# a profit alkotórészei:
bevétel = 50*sum(x)

vásárlás = 11*sum(x[1,1:end])+10*sum(x[2,1:end])+9*sum(x[3,1:end])

# a szállítási költségek mátrixa
SZK = [ 3 3.5; 2 2.5; 6 4]
szállítás = sum(SZK .* x)

feldolgozás = 26*sum(x[1:end,1]) + 21*sum(x[1:end,2])

profit = bevétel - (vásárlás + szállítás + feldolgozás)

# célfüggvény
@objective(
  mdl,
  Max,
  profit
)

# optimizálás
optimize!(mdl)


# itt az a rész fontos, hogy 
# Termination status : OPTIMAL
# Message from the solver:
# "Solution is optimal"
# ha nem ezt látjuk akkor nincsen optimum (ures halmaz vagy nemkorlátos vagy egyéb hiba miatt)
solution_summary(mdl; verbose=true)|>print

println("\n--------------------------------\n")


V = value.(x)
println("az optimum értéke: ",objective_value(mdl))
println("az optimum helye: ")
display(V)



szállítási feladat
using JuMP, GLPK


mdl = Model(GLPK.Optimizer)

# változók
@variable(mdl, x[1:3,1:4]>=0) # >= 200 -> infeasible

# korlátozó feltételek

# a sor korlátai
@constraint(mdl, sum(x[1,1:end])=250)
@constraint(mdl, sum(x[2,1:end])=350)
@constraint(mdl, sum(x[3,1:end])=400)

# a oszlop korlátok
@constraint(mdl, sum(x[1:end,1])<=200)
@constraint(mdl, sum(x[1:end,2])<=300)
@constraint(mdl, sum(x[1:end,3])<=350)
@constraint(mdl, sum(x[1:end,4])<=150)


# a profit alkotórészei:
bevétel = 50*sum(x)

vásárlás = 11*sum(x[1,1:end])+10*sum(x[2,1:end])+9*sum(x[3,1:end])

# a szállítási költségek mátrixa
SZK = [ 3 1 7 4; 2 6 5 9; 8 3 3 2]
koszt = sum(SZK .* x)


# célfüggvény
@objective(
  mdl,
  Min,
  koszt,
)

# optimizálás
optimize!(mdl)
V = value.(x)

if termination_status(mdl)==MOI.OPTIMAL
  println("az optimum értéke: ",objective_value(mdl))
  println("az optimum helye: ")
  display(V)
else 
  print(solution_summary(mdl))
end