我的问题的简单解释是使用表格或曲线作为 Gekko(和/或 AP Monitor)中优化问题的输入的最佳方法是什么?
例如,我按高度简化了大气密度数据。我可以将数据拟合到具有大约 5 个控制点的 Hermite 形式的三次样条曲线(明确给出控制点的斜率,参考 wikipedia),并且我有一个 python 函数来插值,但据我所知,我不能使用Gekko 模型中的 python 函数。
我对可能性的理解和假设:
通常,第一选择是将数据拟合到方程中,但是在这种情况下它不适合。我可以将它拟合到具有足够精度的 2 或 3 段分段函数中,但即使这样也不总是可行的。这也将涉及不等式条件和导数中可能的不连续性,这在优化问题中至少可以说是不可取的。
我可以在技术上重写我作为模型方程的插值例程,但它很快就会变得非常混乱。
似乎内置的cspline 对象可能会起作用,但是这些示例仅显示了将样条曲线拟合到数据。我的理解是,您可以在模型中拥有一个模型,因此似乎有可能拥有一个内部嵌套模型来解决插值点。这似乎有点矫枉过正,而且似乎可能存在性能问题,尤其是在需要顺序求解器的情况下。
类似地,AP Monitor 具有pwl(分段线性)对象和查找对象。该文档显示了 Gekko 中 pwl 对象的实现(基本上使用松弛变量进行线性插值),但是当需要多个此类输入时,这似乎会变得混乱。
因此,更具体地重申我的问题:关于如何做到这一点,是否有明确的最佳实践?如果没有,是否有我错过的每个重要决定因素(即优点/缺点)?
额外的问题 - 同样的事情,但是像阻力系数这样的二维数据取决于马赫和攻角?(使用bspline 对象而不是 cspline)
我最初的假设是将压力、温度和密度数据作为 csplines,将阻力和升力系数作为 bsplines。我仍在学习 Gekko/AP Monitor 和 python,所以我认为现在最好先问清楚,然后再花几天时间尝试解决一些不实用的问题。