Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Julia 涉及矩阵逆的跳跃约束_Julia_Julia Jump - Fatal编程技术网

Julia 涉及矩阵逆的跳跃约束

Julia 涉及矩阵逆的跳跃约束,julia,julia-jump,Julia,Julia Jump,我试图求解一个n*n矩阵U,它满足各种约束,包括一些涉及子矩阵的逆的约束。然而,跳跃似乎不能处理反转,至少在没有一些额外的可逆性规范的情况下。下面是n=2的问题示例 using JuMP, Ipopt m = Model(with_optimizer(Ipopt.Optimizer)) A = [5 7; 7 10] B = [9 13; 13 19] C = [3 4; 4 6] nnodes = 2 @variable(m, U[1:nnodes, 1:nnodes]) A1 = U *

我试图求解一个
n*n
矩阵
U
,它满足各种约束,包括一些涉及子矩阵的逆的约束。然而,跳跃似乎不能处理反转,至少在没有一些额外的可逆性规范的情况下。下面是
n=2
的问题示例

using JuMP, Ipopt

m = Model(with_optimizer(Ipopt.Optimizer))
A = [5 7; 7 10]
B = [9 13; 13 19]
C = [3 4; 4 6]
nnodes = 2
@variable(m, U[1:nnodes, 1:nnodes])

A1 = U * A * U'
B1 = U * B * U'
C1 = U * C * U'

c1 = A1[1, 1] - 1
c2 = A1[2, 2] - 1
c3 = C1[1, 1] - 1
c4 = unmixed_iv2[1, 2]
a = A1[2, 2] - A1[2, 1] * inv(A1[1, 1]) * A1[2,1]  # Schur complement
b = B1[2, 2] - B1[2, 1] * inv(B1[1, 1]) * B1[2,1]  # Schur complement
c5 = a - b

@NLconstraint(m, c1 == 0)
@NLconstraint(m, c2 == 0)
@NLconstraint(m, c3 == 0)
@NLconstraint(m, c4 == 0)
@NLconstraint(m, c5 == 0)

solve(m)
这会引发以下错误:

ERROR: inv is not defined for type GenericQuadExpr. Are you trying to build a nonlinear problem? Make sure you use @NLconstraint/@NLobjective.

关于如何解决这个问题有什么建议吗?

您不能在宏之外使用
inv
(或者更一般地说,建立任何非线性表达式)。就这样把它放进去:

using JuMP
model = Model()
@variable(model, x >= 0.5)
@NLconstraint(model, inv(x) <= 0.5)
使用跳转
模型=模型()
@变量(模型,x>=0.5)

@NLconstraint(model,inv(x)您不能在宏之外使用
inv
(或者更一般地说,建立任何非线性表达式)。只需将其放在宏内部,就像这样:

using JuMP
model = Model()
@variable(model, x >= 0.5)
@NLconstraint(model, inv(x) <= 0.5)
使用跳转
模型=模型()
@变量(模型,x>=0.5)

@NL约束(模型,库存(x)我没有深入研究你的代码,但乍一看,我没有看到任何目标,可能是@NLobjective宏,是有意的吗?我的问题没有目标,我只是在寻找一个单一的解决方案。跳转需要目标吗?我没有深入研究你的代码,但乍一看,我没有看到任何目标,可能是@NLobjective宏,是int吗结束?我的问题没有目标,我只是在寻找一个单一的解决方案。跳转需要目标吗?