【问题标题】:Minimize the maximum in Julia JuMP最小化 Julia JuMP 中的最大值
【发布时间】:2018-08-17 14:14:04
【问题描述】:

所以我梳理了与 Julia JuMP 相关的各种网站,并使用函数作为 @objective 或 @NLobjective 的参数,但让我尝试说明我的问题。我确定我在做一些愚蠢的事情,而且这是一个快速修复。

这是一个简短的代码 sn-p 和我想做的事情:

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));

现在根据我的理解,“最大值”函数使问题成为非线性问题,并且在 JuMP 目标函数中是不允许的,因此人们会做以下两件事之一:

(1)玩辅助变量+约束的把戏,或者

(2) 创建一个函数,然后在 JuMP 中“注册”这个函数。

但是,我似乎都无法正确执行。

这里尝试使用辅助变量+约束技巧:

mymx(vec::Array) = maximum(vec) #generic function in Julia

@variable(m, aux)
@constraint(m, aux==mymx(T))

@NLobjective(m,:Min,aux)

我希望在完成最小化最大值这一看似微不足道的任务时获得一些帮助。

另外,应该注意的是,这是我正在尝试解决的 MILP 问题。我之前使用 OPL 的 ILOG 脚本在 CPLEX 中实现了这个问题,其中这个目标函数看起来要简单得多。虽然这可能只是我对使用 JuMP 的无知。

谢谢。

【问题讨论】:

    标签: julia julia-jump mixed-integer-programming


    【解决方案1】:

    您可以将其建模为线性问题,如下所示:

    @variable(m, aux)
    for i in x
        @constraint(m, aux >= T[i]
    end
    @objective(m, Min, aux)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-10
      • 1970-01-01
      • 2020-07-07
      • 2013-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多