ocs2选用的小车倒立摆模型如下,不包含杆末端的质量
notion image
设定杆的质量为m,长度为l,选取系统状态
则系统状态变化率为
notion image
杆绕与滑块旋转点的转动惯量
代码中角速度变化率和线加速度的方程为
因此

在定义interface的时候,约束条件包括Cost(目标函数/代价函数)、"Penalty"(惩罚项)和"Constraint"(约束),下面基于kimi模型的回答进行介绍:
  1. Cost Function(代价函数/目标函数):
      • 代价函数是优化问题中需要最小化或最大化的目标量。它是决策变量的函数,定义了优化问题的目标。
      • 代价函数通常反映了问题的性能指标,例如在经济模型中可能是利润,在工程设计中可能是效率或稳定性。
      • 在最优控制问题中,代价函数可能包括最终状态的成本、路径的成本、控制输入的成本等。
  1. Constraint(约束):
      • 约束是优化问题的一部分,它们定义了决策变量必须满足的条件。这些条件可以是等式约束(必须完全满足的条件)或不等式约束(定义了变量的允许范围的条件)。
      • 约束通常是问题定义的硬性要求,如果违反了约束,即使目标函数值很好,该解也不被认为是可行的(feasible)
      • 在OCS2中,约束可以直接集成到优化问题的数学表述中,求解器在寻找最优解时会考虑这些约束。
  1. Penalty(惩罚项):
      • 惩罚项是添加到代价函数中的额外项。
      • 惩罚项是一种用于处理约束的方法,当优化问题的解违反某些约束或希望决策变量避开某些不希望的区域时,特别是当约束难以直接集成到优化问题中时。通过在代价函数中添加一个额外的项来“惩罚”违反约束的行为,从而间接地强制执行约束。
      • 惩罚项的权重可以调整,较大的权重意味着对违反约束的惩罚更严厉,这可能导致优化算法更倾向于找到满足约束的解。惩罚项通常与约束的违反程度成正比,违反约束越严重,惩罚项的值越大。
      • 在OCS2中,如果问题中包含软约束(soft constraints),它们可能会通过惩罚项的形式出现在目标函数中,而不是作为硬性的约束条件。

程序中,惩罚项可以用augmented::SlacknessSquaredHingePenaltyaugmented::ModifiedRelaxedBarrierPenalty
SlacknessSquaredHingePenalty 类实现了一种特定的增广拉格朗日惩罚函数,称为 PHR 惩罚。这种惩罚函数将不等式约束 转换为等式约束的形式。增广拉格朗日惩罚函数定义为:
其中,是惩罚项的缩放因子。这个惩罚函数通过 DDP(动态规划)算法最小化,同时通过梯度上升步骤更新拉格朗日乘子以最大化近似对偶函数:
这个类提供了一种机制,通过惩罚约束违规来增强约束优化问题,使得优化算法在寻找最优解时能够考虑约束条件。
 
ModifiedRelaxedBarrierPenalty 类实现了一种特定的增广拉格朗日惩罚函数,称为平滑-PHR(smooth-PHR)惩罚。这种惩罚函数定义为:
其中,是缩放因子,是一个移位的二次放松对数障碍函数。与放松对数障碍惩罚不同,此函数在的域上定义,因此放松参数的值也必须属于此域。
惩罚函数通过求解器最小化,同时通过以下更新规则最大化近似对偶函数:
其中,的全导数。
这个类提供了一种机制,通过惩罚约束违规来增强约束优化问题,使得优化算法在寻找最优解时能够考虑约束条件,并通过更新拉格朗日乘子来逼近最优解。