【发布时间】:2022-01-19 17:44:15
【问题描述】:
我对 Gekko 很陌生。作为优化的一部分,是否可以改变模型数组的大小?我正在运行一个简单的问题,其中不同数量的扭转弹簧以不同的角度接合,我想允许模型改变接合角度的数量。每个弹簧都有几个组件变量,我也试图将它们定义为变量数组。但是,下面的数组 theta_engage 的大小定义尚未接受 int(n_engage.value)。我收到以下错误:
TypeError: int() argument must be a string, a bytes-like object or a number, not 'GK_Value'
相关代码:
n_engage = m.Var(2, lb=1, ub=10, integer=True)
theta_engage = m.Array(m.Var, (int(n_engage.value)))
theta_engage[0].value = 0.0
theta_engage[0].lower = 0.0
theta_engage[0].upper = 85.0
theta_engage[1].value = 15.0
theta_engage[1].lower = 0.0
theta_engage[1].upper = 85.0
如果我尝试仅通过 n_engage.value 定义 theta_engage 的大小,则会收到此错误:
TypeError: expected sequence object with len >= 0 or a single integer
我想我可以将数组定义为我愿意接受的最大尺寸,并允许弹簧数的下限为 0,但我必须以某种方式在约束中强制执行最小总弹簧数。如果 Gekko 能够以这种方式改变数组的大小,那么在我看来这是更优雅的解决方案。
非常感谢任何帮助。
【问题讨论】:
标签: gekko