在下面的代码中,我使用Julia Optim包来找到关于目标函数的最优矩阵.遗憾的是,提供的优化函数仅支持向量,因此我必须在将矩阵传递给优化函数之前将其转换为向量,并在将其用于目标函数时将其转换回来.
function opt(A0,X)
I1(A) = sum(maximum(X*A,1))
function transform(A)
# reshape matrix to vector
return reshape(A,prod(size(A)))
end
function transformback(tA)
# reshape vector to matrix
return reshape(tA, size(A0))
end
obj(tA) = -I1(transformback(tA))
result = optimize(obj, transform(A0), method = :nelder_mead)
return transformback(result.minimum)
end
Run Code Online (Sandbox Code Playgroud)
我认为朱莉娅每次都会为此分配新的空间并且感觉很慢,那么解决这个问题的更有效方法是什么呢?
julia ×1