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