拜托,我目前正在实施直接多种拍摄方法*,我需要回答一个简单但基本的概念:
当我不仅要提供目标函数值(ODE 积分器的结果)而且还要提供导数(用于 NLP 求解器)时,对于控制参数,它只是所述 ODE 的灵敏度分析。 但是,从路径的离散化点(状态和成本轨迹)直接多次射击中出现的参数呢?关于这些参数推导成本的问题,我应该告诉求解器什么?
当然,我设法在 Matlab 中运行了多个射击算法,但现在我想添加 ODE 关于控制参数的导数。(请注意,这个问题不取决于实现或问题本身。)
将它们设置为零就足够了吗?这些参数不是免费的,它们只是数值上的聪明东西,它们的值只是使用等式约束来绑定。
*直接多重拍摄的简单描述,如果你知道方法的别称:
它是最优控制问题离散化的数值方法。我们有一个 ODE 和控制功能。通过将其转换为非线性规划问题,我们可以解决原始问题。
- 直接单次射击就是这样做的,只是离散化(在某些时间点)控制函数,并使用离散化函数的参数作为参数来调用 NLP 例程进行优化。(并且成本函数只是使用获取这些参数的 ODE 求解器来求解。)
- 直接多重射击有点聪明。在计算 ODE(用于计算成本函数)时,它不仅获得离散化控制函数的参数,而且还获得 ODE 积分的起点。并且同时,该方法对 NLP 优化器说 - 使用等价约束来保持这些参数(轨迹的起点)等于仅在前一个时隙计算的轨迹的终点。
完全如https://workspace.imperial.ac.uk/people/Public/chemicalengineering/b.chachuat/ic-32_secured.pdf中所述
顺便说一句,如果我得到这个工作,我肯定会在 python + theano 的某个地方上传我的解决方案:)