如何在GEKKO中通过循环创建不同长度的变量数组
Gekko循环创建不同长度变量数组的实现方案
你可以通过列表或字典存储生成的数组,完全满足动态批量创建的需求,以下是两种常用实现方案:
方案1:列表存储(适合按索引顺序调用)
将所有生成的变量数组按长度列表的顺序存入列表,批量处理时调用更方便:
from gekko import GEKKO lengths = [10,20,30] m = GEKKO() var_arrays = [] for l in lengths: var_arrays.append(m.Array(m.Var, l))
调用说明:var_arrays[0] 对应长度为10的数组(原需求中的array1),var_arrays[1]对应长度为20的数组(原需求中的array2),以此类推。
方案2:字典存储(适合按名称调用)
如果需要和你示例中一致的array1、array2命名规则,用字典存储更灵活,不会污染全局命名空间:
from gekko import GEKKO lengths = [10,20,30] m = GEKKO() var_arrays = {} for idx, l in enumerate(lengths, start=1): var_arrays[f"array{idx}"] = m.Array(m.Var, l)
调用说明:var_arrays['array1'] 对应长度为10的数组,var_arrays['array2']对应长度为20的数组,完全匹配你预期的命名效果。
如果确实需要直接生成全局可调用的array1、array2变量,可以用以下方法(不推荐,容易产生命名冲突):
from gekko import GEKKO lengths = [10,20,30] m = GEKKO() for idx, l in enumerate(lengths, start=1): globals()[f"array{idx}"] = m.Array(m.Var, l)
内容的提问来源于stack exchange,提问作者Hampus Alfredsson
相关产品推荐
相关产品推荐

