首页 > 解决方案 > 使用 Julia 求解具有混合互补条件和相等条件的方程组

问题描述

我想使用 Julia 来求解一个方程组,该方程组是(非线性)混合互补问题和普通线性方程组的混合体。举个简单的例子:

x>=0
y>=0
x = y
x(y^2 - 1) = 0 (where this is a mixed complementarity problem, so if x = 0 then y^2 - 1 >=0, if y^2 - 1 = 0 then x >=0)

这组方程的解是 x = y = 1。到目前为止,我发现的最好的包是Complementarity.jl,因为它允许非线性混合互补问题。但是,我无法弄清楚如何包含模型中不是混合互补问题的方面(在上面的简单示例中,x=y 条件)。我尝试使用带有以下代码的包来解决上述示例:

m = MCPModel()
@variable(m, x >= 0)
@variable(m, y >= 0)

@mapping(m,one, x-y)
@mapping(m,two, y-x)
@mapping(m,three, y^2 - 1)

@complementarity(m, three, x)

status = solveMCP(m, solver=:PATH, convergence_tolerance=1e-8, output="yes", time_limit=3600)

result_value.(x)
result_value.(y)

但随后它发现 x = 4.3e10 和 y = NaN,这显然是不正确的。有谁知道如何使用 Julia 求解这样的方程组,无论是使用 Complementarity.jl 包还是其他一些包?

标签: julia

解决方案


推荐阅读