繁体   English   中英

Julia JuMP中的多维字符串变量

[英]Multidimensional string variables in 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)。

是否有正确的解决方法或语法修正?

在对解决方案中的集合和数组进行评估之后,我发现如果索引的描述不是“集合”,则不会给出错误。

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

当我实现非整数指标时,我通常使用符号而不是字符串来完成它。 两者之间的转换非常简单,符号的概念看起来更像是集合,但我使用数组代替集合,所以我不确定它是否能解决问题。

我鼓励您将AxisArrays.jl作为替代数据结构。 JuMP将其变量存储在AxisArrays中,因此它与代码库的其余部分非常相似。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM