【问题标题】: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

【问题讨论】:

    标签: segmentation-fault jupyter-notebook coredump drake


    【解决方案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 但是,这不会包含驱动不足的类材料。
    猜你喜欢
    • 2017-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-25
    • 2021-06-03
    相关资源
    最近更新 更多