如何矢量化朱莉娅凸不等式约束

时间:2017-09-14 22:15:21

标签: julia convex

我正在尝试比较两个Convex类型的不等式约束。一方面,我有Convex.MaxAtom个,而另一方面,我有Variable个。我想做类似以下的事情:

using Convex
N = 10
t = Variable(1)
v = Variable(N)
x = Variable(1)
z = rand(100)

problem = minimize(x)
problem.constraints += [t >= 0]

ccc = Vector{Convex.MaxAtom}(N)
for i = 1:N
    c = -(1. + minimum(x.*z))
    cc = t + c
    ccc[i] = max(cc,0.)
end
problem.constraints += [ccc <= v]

但是我在最终约束上遇到以下错误:

ERROR: LoadError: MethodError: no method matching isless(::Complex{Int64}, ::Int64)

我不确定Int64类型的来源。除了循环并添加个别比较之外,是否有更好的方法来添加此约束

for i = 1:N
      problem.constraints += [ccc[i] <= v[i]]
end

我试图避免这种情况,因为最终我的10会更大。

1 个答案:

答案 0 :(得分:0)

在这种情况下(感谢Udell博士),它可以作为

进行矢量化
c = -(1. + xisim + minimum(x.*z))
cc = t + c
ccc = max(cc,0.)
problem.constraints += [ccc <= v]