如何在 Julia/JuMP 中使用包含字符串而不是整数的集合?
How to use sets that contain strings instead of integers in Julia/JuMP?
我正在处理线性优化问题。我正在遍历集合以添加约束并定义我的变量。这是我目前的工作代码:
using JuMP
m = Model()
si=[12 23 1 3309 5]
sj=[1,2,3]
c= [3 5 2;
4 3 5;
4 5 3;
5 4 3;
3 5 4]
b= [80;
75;
80;
120;
60]
# x_ij >= 0 ∀ i = 1,...,5, j = 1,...,3
n = length(si)
p = length(sj)
@defVar(m, x[i=1:n,j=1:p] >= 0)
@setObjective(m,Min,sum{c[i,j]*x[i,j],i=1:n,j=1:p})
for j=1:p
@addConstraint(m, sum{x[i,j],i=1:n} <= 480)
end
for i=1:n
@addConstraint(m, sum{x[i,j],j=1:p} >= b[i])
end
endstatus=solve(m)
我需要添加另一个集合来替换集合 sj
但是这个集合包含字符串而不是整数值。
set_P = [ IMA_1ABC IMA_23 IMA_4AB ]
P = length(set_P)
每次我尝试 运行 这套新代码时,它都不起作用,因为它不识别字母。有谁知道如何使用一组字符串代替一组整数?
字符串必须写成"string"
,而不是string
。如果省略引号,Julia 将查找名为 string
的变量
作为参考,比较 typeof("string")
和 typeof(string)
。
我正在处理线性优化问题。我正在遍历集合以添加约束并定义我的变量。这是我目前的工作代码:
using JuMP
m = Model()
si=[12 23 1 3309 5]
sj=[1,2,3]
c= [3 5 2;
4 3 5;
4 5 3;
5 4 3;
3 5 4]
b= [80;
75;
80;
120;
60]
# x_ij >= 0 ∀ i = 1,...,5, j = 1,...,3
n = length(si)
p = length(sj)
@defVar(m, x[i=1:n,j=1:p] >= 0)
@setObjective(m,Min,sum{c[i,j]*x[i,j],i=1:n,j=1:p})
for j=1:p
@addConstraint(m, sum{x[i,j],i=1:n} <= 480)
end
for i=1:n
@addConstraint(m, sum{x[i,j],j=1:p} >= b[i])
end
endstatus=solve(m)
我需要添加另一个集合来替换集合 sj
但是这个集合包含字符串而不是整数值。
set_P = [ IMA_1ABC IMA_23 IMA_4AB ]
P = length(set_P)
每次我尝试 运行 这套新代码时,它都不起作用,因为它不识别字母。有谁知道如何使用一组字符串代替一组整数?
字符串必须写成"string"
,而不是string
。如果省略引号,Julia 将查找名为 string
作为参考,比较 typeof("string")
和 typeof(string)
。