我想最小化差分非线性系统(动态)的成本函数。这个软件可以用吗?我该怎么做?
最好的问候, 哈尼耶
我想最小化差分非线性系统(动态)的成本函数。这个软件可以用吗?我该怎么做?
最好的问候, 哈尼耶
理论上,你可以在 MATLAB 中做到这一点。在实践中,您可能不能也不应该这样做,因为它可能会非常缓慢。
我知道动态优化的两种主要方法是:
在实践中,这两种方法都不太可能在 MATLAB 中可行。前一种方法比后一种方法更现实。
大规模非线性规划求解器 IPOPT 本质上是为解决搭配产生的非线性程序而编写的,并且使用了一种编译语言(首先是 Fortran,然后是 C++),因为大规模非线性程序对计算的要求很高。IPOPT 确实有一个附属于它的 MATLAB 接口,因此如果您要在 MATLAB 中尝试这种方法,您也许可以使用该接口并解决您的问题。接口维护不清楚;例如,文档表明它已经在 MATLAB 7.2 (R2006a) 到 7.7 (R2008b) 中进行了测试,这意味着它没有针对过去 5 年发布的 MATLAB 版本进行测试。如果此接口有效,它可能是您使用 MATLAB 解决动态优化问题的唯一可行方法。
严格的方法(区间算术等)已经很耗时,即使一切都是用 C++ 实现的。具有 10 个左右状态变量的问题需要一两个小时才能完成,并且该算法随着状态变量的数量呈指数增长。尽管 MATLAB 存在区间算术和自动微分包,但您可能必须编写所有剩余的求解器基础结构(我不知道有任何库实现了这种方法)。假设您没有严重依赖已编译的库,MATLAB 的性能通常会慢一到三个数量级,因此解决您的问题可能需要非常长的时间(并且假设您的问题对于这种方法来说足够小) .