如何向量化 julia 凸不等式约束
how to vectorize julia Convex inequality constraints
我正在尝试对比较两种 Convex
类型的不等式约束进行矢量化。一方面,我有 Convex.MaxAtom
s,另一方面,我有 Variable
s。我想做如下事情:
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 会大得多。
在这种情况下(感谢 Udell 博士),它可以矢量化为
c = -(1. + xisim + minimum(x.*z))
cc = t + c
ccc = max(cc,0.)
problem.constraints += [ccc <= v]
我正在尝试对比较两种 Convex
类型的不等式约束进行矢量化。一方面,我有 Convex.MaxAtom
s,另一方面,我有 Variable
s。我想做如下事情:
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 会大得多。
在这种情况下(感谢 Udell 博士),它可以矢量化为
c = -(1. + xisim + minimum(x.*z))
cc = t + c
ccc = max(cc,0.)
problem.constraints += [ccc <= v]