德雷克数学程序教程
Drake Mathematical Program Tutorial
我 运行ning Drake 在 Ubuntu 20.04 使用 WSL2。
我使用 python3.8.10 和 Drake1.2.0.
我在我的 PC 上尝试了 运行从 deepnote 获得的“数学程序教程”,但是 ipopt 求解器的行为不自然并且没有给出预期的结果。
第一个错误发生在使用 ipopt 求解器的部分。
解决方案的所有组件都打印为“nan”
第二个错误在下面关于“get_solver_details().status”
RuntimeError: The solver_details has not been set yet.
我可以在教程的“手动选择求解器的演示”中看到这两个错误。
结果如下
SolutionResult.kUnknownError
x* = [nan nan]
Solver is IPOPT
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
<ipython-input-12-2d1b3835c54a> in <module>
25 print("x* = ", result.GetSolution(x))
26 print("Solver is ", result.get_solver_id().name())
---> 27 print("Ipopt solver status: ", result.get_solver_details().status,
28 ", meaning ", result.get_solver_details().ConvertStatusToString())
RuntimeError: The solver_details has not been set yet.
提前致谢。
P.S。
我通过 pip 命令为 venv 安装了 pydrake
python3 -m venv env
env/bin/pip install --upgrade pip
env/bin/pip install drake
sudo apt-get install --no-install-recommends \
libpython3.8 libx11-6 libsm6 libxt6 libglib2.0-0
source env/bin/activate
我只是从 deepnote 下载文件夹“教程”并将其放在环境下。
然后,我 运行 通过 Jupyter Notebook 将其作为
jupyter notebook
并打开env/Tutorials/mathematical_program.ipynb
pydrake.solvers.ipopt.IpoptSolver
class(它是 https://coin-or.github.io/Ipopt/ 库的包装器)可能在 WSL2 下 运行 不正确,因为使用了一些奇怪的 libc API 不适用于 Windows。我们将需要更多信息来重现问题并尝试调试。
您能否准确说明您是如何安装 pydrake 的(即向我们展示您使用的命令行)。是通过 pip (https://drake.mit.edu/pip.html) or just via binary (https://drake.mit.edu/from_binary.html) 实现的吗?
您能否准确说明 运行 Jupyter(命令行)启动笔记本的方式?是 python3 -m pydrake.tutorials
还是其他?
看起来这可能与 WSL 无关,而是 pip 构建(或只是二进制构建)。 运行 在 Ubuntu 20.04(没有 WSL)。 Per Drake Slack,提交问题:
原来pip drake == 1.2.0
版本有一个bug in the IpoptSolver compilation.
作为 work-around,您可以改用 SnoptSolver
,或者使用 https://drake.mit.edu/from_binary.html 版本(解压缩压缩二进制文件,而不是使用 pip)。
我 运行ning Drake 在 Ubuntu 20.04 使用 WSL2。
我使用 python3.8.10 和 Drake1.2.0.
我在我的 PC 上尝试了 运行从 deepnote 获得的“数学程序教程”,但是 ipopt 求解器的行为不自然并且没有给出预期的结果。
第一个错误发生在使用 ipopt 求解器的部分。
解决方案的所有组件都打印为“nan”
第二个错误在下面关于“get_solver_details().status”
RuntimeError: The solver_details has not been set yet.
我可以在教程的“手动选择求解器的演示”中看到这两个错误。 结果如下
SolutionResult.kUnknownError
x* = [nan nan]
Solver is IPOPT
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
<ipython-input-12-2d1b3835c54a> in <module>
25 print("x* = ", result.GetSolution(x))
26 print("Solver is ", result.get_solver_id().name())
---> 27 print("Ipopt solver status: ", result.get_solver_details().status,
28 ", meaning ", result.get_solver_details().ConvertStatusToString())
RuntimeError: The solver_details has not been set yet.
提前致谢。
P.S。 我通过 pip 命令为 venv 安装了 pydrake
python3 -m venv env
env/bin/pip install --upgrade pip
env/bin/pip install drake
sudo apt-get install --no-install-recommends \
libpython3.8 libx11-6 libsm6 libxt6 libglib2.0-0
source env/bin/activate
我只是从 deepnote 下载文件夹“教程”并将其放在环境下。
然后,我 运行 通过 Jupyter Notebook 将其作为
jupyter notebook
并打开env/Tutorials/mathematical_program.ipynb
pydrake.solvers.ipopt.IpoptSolver
class(它是 https://coin-or.github.io/Ipopt/ 库的包装器)可能在 WSL2 下 运行 不正确,因为使用了一些奇怪的 libc API 不适用于 Windows。我们将需要更多信息来重现问题并尝试调试。
您能否准确说明您是如何安装 pydrake 的(即向我们展示您使用的命令行)。是通过 pip (https://drake.mit.edu/pip.html) or just via binary (https://drake.mit.edu/from_binary.html) 实现的吗?
您能否准确说明 运行 Jupyter(命令行)启动笔记本的方式?是 python3 -m pydrake.tutorials
还是其他?
看起来这可能与 WSL 无关,而是 pip 构建(或只是二进制构建)。 运行 在 Ubuntu 20.04(没有 WSL)。 Per Drake Slack,提交问题:
原来pip drake == 1.2.0
版本有一个bug in the IpoptSolver compilation.
作为 work-around,您可以改用 SnoptSolver
,或者使用 https://drake.mit.edu/from_binary.html 版本(解压缩压缩二进制文件,而不是使用 pip)。