Optimization Scipy'中等式约束的最大数量是多少;s SLSQP算法?
我使用以下代码使用Scipy的优化模块优化一组参数:Optimization Scipy'中等式约束的最大数量是多少;s SLSQP算法?,optimization,scipy,Optimization,Scipy,我使用以下代码使用Scipy的优化模块优化一组参数: slsqp_res = minimize(obj_func, params, method='SLSQP', constraints= eq_cons) 其中obj_func是我的目标函数,params是初始参数值的向量,eq_cons是一组等式约束。我尝试了不同的等式约束,但有时会出现以下错误: File "C:\Python36\lib\site-packages\scipy\optimize\_minimize.py&quo
slsqp_res = minimize(obj_func, params, method='SLSQP', constraints= eq_cons)
其中obj_func是我的目标函数,params是初始参数值的向量,eq_cons是一组等式约束。我尝试了不同的等式约束,但有时会出现以下错误:
File "C:\Python36\lib\site-packages\scipy\optimize\_minimize.py", line 618, in minimize
constraints, callback=callback, **options)
File "C:\Python36\lib\site-packages\scipy\optimize\slsqp.py", line 329, in _minimize_slsqp
w = zeros(len_w)
ValueError: negative dimensions are not allowed
我想这是因为在某些情况下,我的平等约束是过度的。我的问题是,在SLSQP算法中,等式约束的最大可能数量是多少?此消息似乎来自工作空间计算:
# Define the workspaces for SLSQP
n1 = n + 1
mineq = m - meq + n1 + n1
len_w = (3*n1+m)*(n1+1)+(n1-meq+1)*(mineq+2) + 2*mineq+(n1+mineq)*(n1-meq) \
+ 2*meq + n1 + ((n+1)*n)//2 + 2*m + 3*n + 3*n1 + 1
len_jw = mineq
w = zeros(len_w) <-----
jw = zeros(len_jw)
#定义SLSQP的工作空间
n1=n+1
mineq=m-meq+n1+n1
len_w=(3*n1+m)*(n1+1)+(n1 meq+1)*(mineq+2)+2*mineq+(n1+mineq)*(n1 meq)\
+2*meq+n1+((n+1)*n)//2+2*m+3*n+3*n1+1
len_jw=mineq
w=零(len_w)