【问题标题】:How to make the shape of a parameter a variable?如何使参数的形状成为变量?
【发布时间】:2016-10-19 12:19:24
【问题描述】:

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

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

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

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

【问题讨论】:

  • 您能否制定您的问题,以便将U 调整为输入的最大可能大小?在内部,您可以让 solve_nonlinear 在每次调用时将其重塑为适当的尺寸。如果它不改变大小,那应该是一个相对便宜的操作。

标签: openmdao


【解决方案1】:

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

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

【讨论】:

  • 恭喜贾斯汀博士。这个答案有任何更新吗?谢谢!
  • 我很乐意提供帮助,但我想我需要一个更具体的例子。您能否构建一个示例案例,我们可以将其用作讨论的基础?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多