Pydrake:访问额外的 SNOPT 求解器输出 (iter)

Pydrake: Accessing extra SNOPT solver outputs (iter)

根据 SNOPT docs(第 57 页),退出时 SNOPT 的输出之一是 iter,执行的主要迭代次数。我想知道在 pydrake 中使用 SnoptSolver 时是否有任何方法可以访问此输出。谢谢!

iter 在 SNOPT 的 npOpt 接口中可用,不幸的是我们在 Drake 的包装器 class 中使用 snoptA 接口(SNOPT 文档 https://web.stanford.edu/group/SOL/guides/sndoc7.pdf 的第 3 章) SnoptSolver,我不认为这个 snoptA 界面 returns iter 退出。

如果你想知道迭代次数,你可以打印snopt进度。这样做的一个例子是

# Print out the progress to my_output.txt
prog.SetSolverOption(SnoptSolver.solver_id(), "Print file", "my_output.txt")
result = snopt_solver.Solve(prog)

my_output.txt中你会看到迭代次数。