Я использую Julia 1.0 с пакетом JuMP для решения задач оптимизации.Это мои первые дни с использованием языка.Следовательно, мне не очень нравится синтаксис.
Следуя Краткое руководство по началу работы , я смог решить проблему ниже:
![enter image description here](https://i.stack.imgur.com/4aCGC.png)
Я использовал этот код, который отлично работал:
using JuMP
using GLPK
model = Model(with_optimizer(GLPK.Optimizer))
@variable(model, 0 <= x <= 6000)
@variable(model, 0 <= y <= 4000)
@objective(model, Max, (25*x) + (30*y))
@constraint(model, con, ((1/200)*x) + ((1/140)*y) <= 40)
optimize!(model)
termination_status(model)
primal_status(model)
dual_status(model)
println(objective_value(model))
println(value(x))
println(value(y))
Вследствие успеха вышеописанной реализации я попытался адаптировать код к новой проблеме:
![enter image description here](https://i.stack.imgur.com/pOUR5.png)
Я знаю различия между классической задачей линейной программы и задачей, которая явно определяет только целочисленные значения.
Для того, чтобы сделать этопросто я считал проблему плавающей, считая x 1 больше 0 и меньше 6.
Я решил разрешить целочисленный аспект проблемы в качестве будущего шага.
Это мой код:
using JuMP
using GLPK
model = Model(with_optimizer(GLPK.Optimizer))
@variable(model, 0 <= x <= 6)
@variable(model, y>=0 )
@objective(model, Max, (x) + (2*y))
@constraint(model, con, x + y <= 8)
@constraint(model, con, -x + y <= 2)
@constraint(model, con, x - y <= 4)
optimize!(model)
termination_status(model)
primal_status(model)
dual_status(model)
println(objective_value(model))
println(value(x))
println(value(y))
По какой-то причине я получаю следующее сообщение об ошибке:
ERROR: LoadError: An object of name con is already attached to this model. If this is intended, consider using the anonymous construction syntax, e.g., x = @variable(model, [1:N], ...) where the name of the object does not appear inside the macro.
Я пытался изменить некоторые вещи и прочитатьдокументация.Тем не менее, макросы кажутся мне странной концепцией.
После некоторых попыток я решил обратиться за помощью.
Заранее спасибо.