跳到主要内容
版本:v0.7.0 beta

parameter定义

parameter为在优化过程中不变的量, 由用户在调用求解前给定, 比如车身长度length, 质量mass.

OPTIMake支持以下两种类型的parameter:

  • stage-independent parameter
  • stage-dependent parameter.

stage-dependent parameter在不同stage可以有不同的值, 而stage-independent parameter在所有stage的值都一致 (可以节约存储与简化设置) .

下面为定义优化变量的例子:

length = prob.parameter(name='length', stage_dependent=False)
mass = prob.parameter('mass')
xLowerBound = prob.parameter('xLowerBound', stage_dependent=True)

其中, 函数入参的定义如下:

  • name: str parameter的名称

  • stage_dependent: bool, optional parameter是否为stage-dependent. 默认值为True, 表示parameter为stage-dependent

  • differentiable: bool, optional parameter是否为可微参数. 默认值为False. 详见下文可微参数

亦或者通过list的方式定义:

length, mass, xLowerBound = prob.parameters(
['length', 'mass', 'xLowerBound'],
stage_dependent=False)

可微参数​

通过设置differentiable=True, 可将parameter声明为可微参数, stage-independent与stage-dependent parameter均支持:

weight = prob.parameter('weight', differentiable=True)
xRef = prob.parameter('xRef', stage_dependent=True, differentiable=True)
x0, y0 = prob.parameters(['x0', 'y0'], differentiable=True)

当模型中存在可微参数时, 生成的代码中会额外提供backward接口, 用于计算最优解的函数关于可微参数的梯度 (例如首个控制量关于初始状态的导数, 或用于参数学习). 可微参数在C代码中的设置方式 (通过param与param_stage) 与普通parameter相同.

接口说明, 使用方法与注意事项详见扩展功能 > 可微参数.