gpt4 book ai didi

julia - 如何在 Julia JuMP 中使用 VariableRef 作为索引

转载 作者:行者123 更新时间:2023-12-04 07:51:36 26 4
gpt4 key购买 nike

在 Julia 中,当我这样做时:

model = Model();
set_optimizer(model, Cbc.Optimizer);

N=11;

model = Model();
set_optimizer(model, Cbc.Optimizer);
@variable(model, X[1:N,1:N,1:N], Bin);
@variable(model, 1<=K<=10, Int);

for k in K
@constraint(model, (sum(X[1,j,k] for j= 1:N)) ==1 )
end
我收到此错误:

ArgumentError: invalid index: K of type VariableRef


因为我使用了一个变量 reference(k)作为向量的索引 ( X )。
我怎么能解决这个问题?

最佳答案

如果您想 K要与其他变量交互,您需要使其成为具有 1 之和的二元向量。然后使用乘法对交互进行建模。

@variable(model, K[1:10], Bin);
@constraint(model, sum(K) == 1)
现在我不完全确定你想要完成什么。如果要根据 K 的值关闭和打开方程式这看起来像这样:
@constraint(model,con[k in 1:10], sum(X[1,j,k] for j= 1:N)*K[k] == K[k] )
然而,这会使模型非线性,您需要使用非线性求解器。
根据您的用例,总和高达 1可能就足够了(这可以为求解器生成一个更容易的模型,但您的业务可能需要与否):
@constraint(model,con[k in 1:10], sum(X[1,j,k] for j= 1:N) == K[k] )

关于julia - 如何在 Julia JuMP 中使用 VariableRef 作为索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66944090/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com