编程求解器的分段错误(核心转储)

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 但是,这不会包含驱动不足的类材料。

以上是关于编程求解器的分段错误(核心转储)的主要内容,如果未能解决你的问题,请参考以下文章

分段错误(核心转储)

识别导致分段错误(核心转储)的错误

运行我的代码时出现分段错误(核心转储)问题

pyqt5 中的分段错误(核心转储)

分段错误(核心转储)向 linux 发出窗口

分段错误(核心转储) - 无法访问的计数器值