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相同.
接口说明, 使用方法与注意事项详见扩展功能 > 可微参数.