编程求解器的分段错误(核心转储)
Posted
技术标签:
【中文标题】编程求解器的分段错误(核心转储)【英文标题】:Segmentation fault (core dumped) by the programming solver 【发布时间】:2019-11-29 03:47:58 【问题描述】:这段示例代码: ''' 将 numpy 导入为 np 将 pydrake.solvers.mathematicalprogram 导入为 mp 从 pydrake.solvers.ipopt 导入 IpoptSolver 定义 foo(x): 返回 np.sign(x)
prog = mp.MathematicalProgram()
x = prog.NewContinuousVariables(1)
prog.AddConstraint(foo, [1.], [1.], vars=x)
prog.AddLinearCost(1 * x[0])
result = mp.Solve(prog, np.array([10.]), None)
print(result.is_success())
print(result.GetSolution(x))
''' 返回错误:分段错误(核心转储),当我在 jupyter notebook 打开的终端下运行它时,由课程提供:http://underactuated.csail.mit.edu/Spring2019/install_drake_docker.html。 (虽然代码本身已经在这里证明了,https://github.com/RobotLocomotion/drake/issues/12410)
【问题讨论】:
【参考方案1】:使用 docker image drake-20190129,此代码无法运行。具体来说,mp.Solve(prog, np.array([10.]), None)
这行是有问题的。当时 Drake 不支持这个功能。您需要将此行替换为result = prog.Solve()
。
更换线路后,我的内核死了。
我不建议您将 docker drake-20190129 用于您的代码。具体来说,当时(2019 年 1 月 29 日)不支持 prog.AddConstraint(foo, [1.], [1.], vars=x)
行。我通常使用最新版本的 drake,如 https://drake.mit.edu/python_bindings.html 中所述
【讨论】:
是的,即使在 20190423 版本中也不支持。顺便说一句,你终于重现了我的错 :) FWIW 我们发布了具有 Drake 代码的每晚 docker 图像:hub.docker.com/r/robotlocomotion/drake/tags 但是,这不会包含驱动不足的类材料。以上是关于编程求解器的分段错误(核心转储)的主要内容,如果未能解决你的问题,请参考以下文章