我正在使用Julia 1.0和JuMP包来解决优化问题。这是我使用该语言的第一天。因此,我对语法不太满意。
继Quick Start Guide之后,我能够解决下面的问题:
我使用了这个完美的代码:
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))
由于上面的实现取得了成功,我尝试将代码调整为一个新问题:
我知道经典线性编程问题和明确定义整数值的问题之间的差异。
为了简单起见,我将问题视为浮点问题,考虑到x1大于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.
我试图改变一些事情并阅读文档。尽管如此,对我来说,宏似乎是一个奇怪的概念。
经过一番尝试,我决定寻求帮助。
提前致谢。
我认为这个信息很清楚。所以尝试类似的东西:
@constraint(model, con1, x + y <= 8)
@constraint(model, con2, -x + y <= 2)
@constraint(model, con3, x - y <= 4)
当然,在实际模型中,您应该使用有意义的名称。
匿名意味着没有名字。例如。:
@constraint(model, x + y <= 8)
@constraint(model, -x + y <= 2)
@constraint(model, x - y <= 4)