Julia 在跳转中添加Argmax约束?

Julia 在跳转中添加Argmax约束?,julia,julia-jump,Julia,Julia Jump,我正在尝试向跳跃0.2.0(Gurobi作为解算器)模型添加一个约束,该模型在(第12页)中读取如下内容: c_t=argmax(N_kt)表示1…k中的k 此约束用于逐列读取矩阵,找到该列中具有最大值的单元格的索引,并将该索引分配给单元格c\t 虽然Julia在基本包中有一个argmax函数,但该函数在跳转中不起作用。试图执行 for t in 1:T @constraint(model, c_t == argmax(N_Kt[:,t]) end 抛出的错误为DenseAxisArr

我正在尝试向跳跃0.2.0(Gurobi作为解算器)模型添加一个约束,该模型在(第12页)中读取如下内容:

c_t=argmax(N_kt)表示1…k中的k

此约束用于逐列读取矩阵,找到该列中具有最大值的单元格的索引,并将该索引分配给单元格c\t

虽然Julia在基本包中有一个
argmax
函数,但该函数在跳转中不起作用。试图执行

for t in 1:T
    @constraint(model, c_t == argmax(N_Kt[:,t])
end
抛出的错误为
DenseAxisArray不支持此操作。
N_Kt
更改为非密集跳转数组可以消除该错误,但会抛出的错误为
MethodError:no method matching isless(::VariableRef,::VariableRef)

跳转中是否有我设法错过的
argmax
的等效函数,或者,是否有一种聪明的方法来重新表述此约束?我玩弄了列表的理解,例如

for t in t_l 
    for i in 1:num_features
        @constraint(model, [i for k in 1:6 if N_kt[i,t] >= N_kt[k,t]] == c_t[t])
    end
end
但是朱莉娅在尝试这种公式时犯了各种错误。“将c_t设置为对应值大于或等于此范围内所有其他值的索引”的最后一种方法似乎很有希望,但同样,即使上面的代码片段也会产生错误。有没有更好的方法将条件语句添加到我缺少的约束声明中


谢谢你在这里提供的任何帮助

参考文献第13页给出了如何线性化问题的说明。参考文献第13页给出了如何线性化问题的说明。