首页 > 解决方案 > Julia JuMP 中的多维字符串变量

问题描述

我在 JuMP 中定义多维变量,但是,为了便于操作,我要求索引是字符串。一些指数可能不明显。如何在允许重复元素的同时在 JuMP 中设置多维变量?

我已经尝试将变量定义为字符串变量。但是,一旦变量的索引数或维度数超过 3,则错误表明索引应为 ::Int64 类型。

Set1 = Set{String}(["One", "Two", "Three"])
Set2 = Set{String}(["This", "That", "Where", "There"])
Set3 = Set{String}([1,2,3,4,5])
Set4 = Set{String}(["Where", "There"])

@variable(model, x[Set1, Set2, Set2, Set3, Set4] >= 0)

这给出了索引不是类型 ::Int64 的错误,因为索引超过了维度 3。

这工作正常:

@variable(model, y[Set1, Set2] >= 0)

为了限制维度,我尝试将变量设为二维,如下所示:

@variable(model, x[Set1, [Set2, Set2, Set3, Set4]] >= 0)

但是,这给出了索引重复的错误(Set2)。

是否有适当的解决方法或语法更正?

标签: optimizationsyntaxjuliajulia-jump

解决方案


在评估解决方案中的集合和数组后,我发现如果索引描述为“集合”以外的内容,则不会给出错误。

因此,为了使多维变量具有字符串索引,请将索引声明为数组而不是集合。


推荐阅读