如何使参数的形状成为变量?

How to make the shape of a parameter a variable?

假设我正在优化风电场中风力涡轮机的数量。布局的形状是由优化器驱动的变量。 如果我没有在参数中声明 shape 或 val,我会收到错误消息:

ValueError: Shape of output 'U' must be specified because 'val' is not set

但是,U的形状取决于输入参数的大小,这是未知的。

我是否应该构建一个外部模块,优化器将形状写入其中并让我的组件读取该形状?或者有更简单的方法吗?谢谢!

不可能真的不知道。我通常会使用 __init__ 方法的参数来执行此操作。当你设置你的 class 时,你传入你需要的变量的大小(或者一些可以让你计算 class 大小的数字,比如 n_turbines)。我会在您定义的问题的子 class 中执行此操作。

优化器无法实时更改该输入的大小。它必须被修复。如果稍后您想更改问题的大小,只需创建问题的新实例并传入新大小即可。您只需要重新 运行 设置,但这应该不会非常昂贵。