最小化Julia跳跃中的最大值
因此,我已经浏览了与Julia JuMP相关的各种网站,并使用函数作为@objective或@NLobjective的参数,但让我试着说明我的问题。我确信我在做一些愚蠢的事情,这是一个快速解决办法 下面是一个简短的代码片段以及我想做的事情:最小化Julia跳跃中的最大值,julia,julia-jump,mixed-integer-programming,Julia,Julia Jump,Mixed Integer Programming,因此,我已经浏览了与Julia JuMP相关的各种网站,并使用函数作为@objective或@NLobjective的参数,但让我试着说明我的问题。我确信我在做一些愚蠢的事情,这是一个快速解决办法 下面是一个简短的代码片段以及我想做的事情: using juMP; tiLim = 1800; x = range(1,1,M); # M stated elsewhere solver_opt = "bonmin.time_limit=" * "$tiLim"; m = Model(solver=
using juMP;
tiLim = 1800;
x = range(1,1,M); # M stated elsewhere
solver_opt = "bonmin.time_limit=" * "$tiLim";
m = Model(solver=AmplNLSolver("bonmin",[solver_opt]));
@variables m begin
T[x];
... # Have other decision variables which are matrices
end
@NLobjective(m,:Min,maximum(T[i] for i in x));
根据我的理解,“最大值”函数使问题非线性,不允许在跳跃目标函数内,因此人们会做两件事之一:
(1) 玩辅助变量+约束的把戏,或
(2) 创建一个函数,然后使用跳转“注册”该函数
然而,我似乎也做得不对
以下是使用辅助变量+约束技巧的尝试:
mymx(vec::Array) = maximum(vec) #generic function in Julia
@variable(m, aux)
@constraint(m, aux==mymx(T))
@NLobjective(m,:Min,aux)
我希望能得到一些帮助来完成这项看似微不足道的任务,即最大限度地减少最大值
另外,需要注意的是,这是一个MILP问题,我正在努力解决。我以前在CPLEX中使用用于OPL的ILOG脚本实现了这个问题,在这里,这个目标函数看起来更简单。虽然这可能只是我对使用跳跃的无知
谢谢。您可以将其建模为线性问题,如下所示:
@variable(m, aux)
for i in x
@constraint(m, aux >= T[i]
end
@objective(m, Min, aux)