我正在尝试使用 SOSPolynomial 解决数学程序。我正在使用 Mosek 从源代码编译的 C++ 中运行 Drake。
MathematicalProgram 包含二次成本函数和一些等式约束,在Solve()
不添加 SOS 多项式的情况下调用时可以正常工作。在查看时result.get_solver_id()
,我发现:“Equality constrained QP”,正如预期的那样。
但是,在调用 时,在通过(作为决策变量)Solve()
添加 SOS 多项式后,程序返回找不到解决方案。在查看 中找到的值时,我发现和。prog.NewSosPolynomial({t}, degree)
t
result_.get_solution_result()
solution_status = false
rescode = 1501
看这里,rescode = 1501
意味着:“问题包含非线性项圆锥约束。请求的操作不能应用于此类问题。”。但是,通过在添加 SOS 多项式之前检查 的值result.get_solver_id()
,很明显问题中没有其他非线性约束。
我在这里遗漏了什么,还是这是一个错误?