在优化期间打印每次迭代的约束值

Print values of constraint at each iteration during optimization

我们如何从 Pydrake 执行此操作?优化期间每次迭代打印约束值

编辑 1:

我试过了:

def update(n):
    print(n)

prog.AddVisualizationCallback(update, n)

按照底部的示例:https://github.com/RobotLocomotion/drake/blob/master/tutorials/debug_mathematical_program.ipynb

但它吐出了这个错误:

    prog.AddVisualizationCallback(update, n)
TypeError: AddVisualizationCallback(): incompatible function arguments. The following argument types are supported:
    1. (self: pydrake.solvers.mathematicalprogram.MathematicalProgram, arg0: Callable[[numpy.ndarray[numpy.float64[m, 1]]], None], arg1: numpy.ndarray[object[m, 1]]) -> pydrake.solvers.mathematicalprogram.Binding[VisualizationCallback]

这里有几种可能性:

  • 您可以使用 AddVisualizationCallback 有效地创建一个在每次迭代时调用的空通用约束。
  • 您可能还想增加求解器的详细级别(请参阅“调试数学程序”教程),以便求解器本身打印一些进度信息。
  • 根据您正在考虑的约束类型,您可以将约束本身实现为 python 方法(内部带有 print 语句)而不是任何您想要的现在正在做添加它。