【问题标题】:how to vectorize julia Convex inequality constraints如何向量化 julia 凸不等式约束
【发布时间】:2017-09-14 22:15:20
【问题描述】:

我正在尝试对比较两个 Convex 类型的不等式约束进行矢量化。一方面,我有Convex.MaxAtoms,另一方面,我有Variables。我想做如下的事情:

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 会更大。

【问题讨论】:

    标签: julia convex


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-15
      • 1970-01-01
      • 2019-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-10
      相关资源
      最近更新 更多