namespace MultiWheelC.TrajectoryPlanning.EMPlanner;
///
/// LS/ST QP 求解器的迭代预算、收敛容差和运行选项。
///
public sealed class SolverConfiguration
{
///
/// 外层顺序凸化最大迭代次数;默认值 5,必须为正整数。
///
public int MaximumOuterIterations { get; set; }
///
/// 单次 OSQP 求解的最大迭代次数;默认值 4000,必须为正整数。
///
public int MaximumOsqpIterations { get; set; }
///
/// 求解器绝对残差容差;默认值 1e-5,必须为正有限值。
///
public double AbsoluteTolerance { get; set; }
///
/// 求解器相对残差容差;默认值 1e-5,必须为正有限值。
///
public double RelativeTolerance { get; set; }
///
/// 发布前接受解的严格残差容差;默认值 1e-5,必须为正有限值。
///
public double StrictResidualTolerance { get; set; }
///
/// 是否将上一轮可用解作为初值;无单位,默认值 true,仅接受布尔值。
///
public bool WarmStart { get; set; }
///
/// 是否请求 OSQP 进行结果修正;无单位,默认值 true,仅接受布尔值。
///
public bool Polish { get; set; }
///
/// 是否启用原生求解器诊断输出;无单位,默认值 false,仅接受布尔值。
///
public bool NativeVerbose { get; set; }
///
/// 复制当前求解器配置;输入为当前迭代预算、容差和布尔选项,输出为无共享可变状态的标量快照,不对数值作校验且不产生失败状态。
///
internal SolverConfiguration Copy()
{
return new SolverConfiguration
{
MaximumOuterIterations = MaximumOuterIterations,
MaximumOsqpIterations = MaximumOsqpIterations,
AbsoluteTolerance = AbsoluteTolerance,
RelativeTolerance = RelativeTolerance,
StrictResidualTolerance = StrictResidualTolerance,
WarmStart = WarmStart,
Polish = Polish,
NativeVerbose = NativeVerbose,
};
}
}