首页 > 解决方案 > 解决 Drake 中 Snopt 的错误,如何解决?

问题描述

这个问题是跟之前在 drake 中使用 Snopt 解决轨迹优化失败的问题,如何解决?谢谢戴!
当我尝试使用 Snopt 求解非线性程序时遇到了存储空间不足的错误。错误信息如下图所示:来自 snopt.out 的原始错误信息

然后我使用以下命令:
prog.SetSolverOption(SnoptSolver::id(), "Total integer workspace", 100000);
prog.SetSolverOption(SnoptSolver::id(), "User integer workspace", 100000);
它仍然失败,原因相同,但幅度小一些,例如选项“总整数工作空间”从 1969563 到 1960807。错误信息屏幕截图1

因为它确实会影响幅度,所以我设置了一个更大的“总整数工作区”和“用户整数工作区”。尝试的结果如下:
Total integer workspace=200000,User integer workspace=200000==>错误信息2
Total integer workspace=300000,User integer workspace=300000 ==>错误信息3
Total integer workspace=400000,User integer workspace=400000 ==>错误信息4
Total integer workspace=500000,User integer workspace=500000 ==>错误信息5
Total integer workspace=500000,User integer workspace=600000 ==>错误信息6
Total integer workspace=700000,User integer workspace=700000 ==>错误信息7
Total integer workspace=800000,User integer workspace=800000 ==>https: //i.stack.imgur.com/EJRfT.png
Total integer workspace=800000,User integer workspace=900000==>https://i.stack.imgur.com/AblUc.png
Total integer workspace=1000000,User integer workspace=1000000==>https://i.stack.imgur.com/mS3gX.png
Total integer workspace=1010000,User integer workspace=1010000= =>https://i.stack.imgur.com/pufBK.png
Total integer workspace=1020000,User integer workspace=1020000==>https://i.stack.imgur.com/biThe.png
有一些额外的测试可能会有所帮助:
Total integer workspace=900000,User integer workspace=1000000==>https:// i.stack.imgur.com/NilNy.png
很抱歉上面图片的奇怪格式,因为我的声誉最多只能支持8个图片链接。T_T T_T
所有这些测试都有相同的初步猜测。我发现当我将“总整数工作空间”和“用户整数工作空间”从 100000 增加到 600000 时,缺少存储的幅度先变小,然后变大。当我将这两个选项设置为大于 800000 时,错误类型已更改为异常。
现在我正在努力解决这些问题:1.
为什么缺乏存储的幅度会发生奇怪的变化?
2.遇到这种情况我该怎么办?
3.最初的猜测是否重要,无论我们如何调整存储是否能得到一个可行的解决方案?
4.如何判断一个初始猜测是否合理?
5.出现此存储错误时,如何设置“总整数工作空间”和“用户整数工作空间”?换句话说,当我们遇到初始猜测的合理性、存储错误、约束的可行性和其他问题耦合在一起的问题时,调试流程是什么?

最热烈的感谢!

标签: optimizationdrake

解决方案


推荐阅读