The*_*a G 4 dimension multidimensional-array julia julia-studio julia-jump
我创建了一个矩阵 A,它是 300x4 数组。在目标中,我应该最小化 A*x,其中 x 是一个 1x4 向量。我的代码如下:
k = 3
m = length(u)
n = k + 1
A = zeros(m,k+1)
for i = 1:m
for j = 1:k+1
A[i,j] = u[i]^(k+1-j)
end
end
display(A)
using JuMP,Gurobi
m = Model(Gurobi.Optimizer)
@variable(m, x[1:k+1])
@objective(m, Min, sum((y - (A*x).^2) ))
optimize!(m)
uopt = value.(x)
println(x)
Run Code Online (Sandbox Code Playgroud)
输出:
DimensionMismatch("dimensions must match")
Stacktrace:
[1] promote_shape at .\indices.jl:154 [inlined]
[2] promote_shape at .\indices.jl:145 [inlined]
[3] -(::Array{Int64,1}, ::Array{GenericQuadExpr{Float64,VariableRef},1}) at .\arraymath.jl:38
\]
Run Code Online (Sandbox Code Playgroud)
如果dim(A) = 300x4,并且dim(x) = 1x4(从您的问题中提取的维度),则A*x(如“矩阵乘法的乘积”)未定义为维度不匹配。请注意,如果您将 x 更改为 4x1 的尺寸,它会起作用,并且结果将具有 300x1 的尺寸。
如果这不能解决您的问题,请在您的代码中找到第 154 行(也可能是第 145 行),因为这些行中发生尺寸不匹配,并检查该行中的代码是否合理。
我实际上并没有验证你的代码(而且它似乎不是完整的代码,也是?),我知道有更多有能力的人可以帮助你。无论如何,我希望这会有所帮助。
快乐编码。