optimization - 解决 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.出现此存储错误时,如何设置“总整数工作空间”和“用户整数工作空间”?换句话说,当我们遇到初始猜测的合理性、存储错误、约束的可行性和其他问题耦合在一起的问题时,调试流程是什么?
最热烈的感谢!
解决方案
推荐阅读
- c - 权限被 open() 拒绝
- python - 将forloop给出的字典输出存储在python中
- python - 在 PyQt5 GUI 应用程序中分离关注点。需要单独的 Qthread 进行并发
- python - 从python中的api中过滤特定数据?
- c++ - 返回两个向量——使用引用还是元组?
- c++ - 在 C++ 中通过引用传递类成员时,Const 无效
- tkinter - 检测一帧内的焦点变化
- google-sheets - 谷歌表编号列表
- javascript - 带有每个刻度选项的 checkboxGroupInput(多个可能的刻度)
- django - Django 通知用户一个事件并要求一个响应