如何在不改变FV数量时实现GEKKO异维度数组相乘并优化效率
解决异维度数组相乘并合并ysim方程的方案
核心思路
要在保持24维FV数组x维度不变的前提下,实现和N维数组的匹配相乘,关键是利用维度映射+广播运算,把N维数组与x的对应维度元素精准对齐,同时消除循环、合并方程。
具体实现步骤
假设N维输入数组为data_N(当前测试用100条数据),24维FV数组为x,索引数组idx(长度N,元素为0-23的整数,对应x的维度索引):
通过索引提取
x的对应维度元素
直接用索引数组idx从x中提取对应位置的元素,将24维的x转换为N维的数组,和data_N维度完全匹配:# 适配Pyomo/CasADi等优化框架的语法逻辑 x_matched = x[idx] # 从24维x中按索引提取,得到(N,)维数组异维度数组相乘+合并为单个Intermediate变量
将匹配后的N维数组与data_N逐元素相乘,再通过vsum合并为单个变量,替代原有的N个ysim循环:ysimm_0 = vsum(x_matched * data_N)确认FV数量不变
整个过程中x始终保持24维,没有新增或删减自由变量,完全满足FV数量不变的要求。
大数据集优化效果说明
这种方式将原有的O(N)个方程简化为O(1)个,在8760条数据的场景下,能大幅降低优化器的方程解析与计算负载,直接提升求解速度。
内容的提问来源于stack exchange,提问作者Maxence Delvaux
相关产品推荐
相关产品推荐

