BsplinesComp 的约束
Constraints on BsplinesComp
我正在使用 BsplinesComp 解决示例问题。
objective是最大化线下面积。
当我想为 bspline 给出的输出数组中的一个值设置约束时,我的问题就出现了。因此,无论样条处于何种配置,样条曲线都会通过该值。
我尝试了两种方法,并上传了代码。它们的编码都非常糟糕,所以我认为有一种更简洁的方法。代码链接:
https://gist.github.com/Whosebug38/5eae1e86c5802a4df91becdf580d28c5
1- 使用额外的显式组件,其中中间数组值被强加为选定值
2- 尝试使用 execcomp 但出现错误。目标形状不匹配。
依稀记得看过这样一道题,但是没找到。
总的来说,我正在尝试为 bspline 的第一个、中间或最后一个值以及它应该位于的某个范围设置约束。
类似于这里的情节
所以,我认为您想知道执行此操作的最佳方法,最好的方法是根本不使用任何额外的组件。您可以通过在 add_constraint
调用中使用 "indices" 参数直接限制 BsplinesComp 输出中的单个点。在这里,我将样条中的第一个点限制在区间 [-1, 1].
上
model.add_constraint('interp.h', lower=-1, upper=1, indices=[0])
运行模型给我的形状看起来更像你提供的其中一个。
仅供参考,对于您在 1 和 2 中遇到的错误:
不确定这里有什么问题,但也许您上传的版本不是最新的。您从未在约束中使用 AeraComp,因此它没有执行任何操作。
异常是由于将 Bsplines comp 的矢量输出连接到缩放器表达式时大小不匹配。您可以通过指定 "src_indices" 来完成此操作,为其提供数组中要连接到目标的索引列表。 model.connect('interp.h', 'execcomp.x', src_indices=[0])
我正在使用 BsplinesComp 解决示例问题。 objective是最大化线下面积。 当我想为 bspline 给出的输出数组中的一个值设置约束时,我的问题就出现了。因此,无论样条处于何种配置,样条曲线都会通过该值。 我尝试了两种方法,并上传了代码。它们的编码都非常糟糕,所以我认为有一种更简洁的方法。代码链接: https://gist.github.com/Whosebug38/5eae1e86c5802a4df91becdf580d28c5
1- 使用额外的显式组件,其中中间数组值被强加为选定值
2- 尝试使用 execcomp 但出现错误。目标形状不匹配。 依稀记得看过这样一道题,但是没找到。
总的来说,我正在尝试为 bspline 的第一个、中间或最后一个值以及它应该位于的某个范围设置约束。 类似于这里的情节
所以,我认为您想知道执行此操作的最佳方法,最好的方法是根本不使用任何额外的组件。您可以通过在 add_constraint
调用中使用 "indices" 参数直接限制 BsplinesComp 输出中的单个点。在这里,我将样条中的第一个点限制在区间 [-1, 1].
model.add_constraint('interp.h', lower=-1, upper=1, indices=[0])
运行模型给我的形状看起来更像你提供的其中一个。
仅供参考,对于您在 1 和 2 中遇到的错误:
不确定这里有什么问题,但也许您上传的版本不是最新的。您从未在约束中使用 AeraComp,因此它没有执行任何操作。
异常是由于将 Bsplines comp 的矢量输出连接到缩放器表达式时大小不匹配。您可以通过指定 "src_indices" 来完成此操作,为其提供数组中要连接到目标的索引列表。
model.connect('interp.h', 'execcomp.x', src_indices=[0])