直接多重拍摄(数值优化控制)

计算科学 优化 非线性规划 最优控制
2021-12-06 05:22:04

拜托,我目前正在实施直接多种拍摄方法*,我需要回答一个简单但基本的概念:

当我不仅要提供目标函数值(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 的某个地方上传我的解决方案:)

1个回答

在直接多重射击方法中,使用 Chachuat 的链接笔记中的符号,“额外决策变量”ξ0k不存在于目标函数中,因此目标函数(即目标函数的导数)对这些参数的敏感度均为零。您是正确的,这些参数不是免费的;但是,它们的值将根据非线性规划算法中使用的 KKT 类型条件而变化。