如何解决sci.py最小化-约束函数参数
我需要将作为优化参数的变量限制在某个值EQ
def fEQ(iEQ,iC,iTATM,index):
if index==0:
return iC[0]
else:
return iEQ[0]/psi*iTATM[index]**2
t = np.arange(1,101)
NT = len(t)
EQ=np.zeros(NT)
#目标函数(省略了一些函数以使其更加清晰-它们在现实中都是相互关联的)
def fOBJ(x,sign,iI,iCPRICE,iEQ,iPERIODU,iCEMUTOTPER,iRI,iNT):
iMIU = x[0:NT]
iS = x[NT:(2*NT)]
for i in range(iNT):
iCPRICE[i] = fCPRICE(iMIU,i)
iI[i] = fI(iS,iY,i)
iEQ[i]=fEQ(iEQ,i)
iPERIODU[i] = fPERIODU(iC,il,i)
iCEMUTOTPER[i] = fCEMUTOTPER(iPERIODU,i)
iRI = fRI(iCPC,i)
resUtility = np.zeros(1)
fUTILITY(iCEMUTOTPER,resUtility)
return sign*resUtility[0]
#Optimization
result = opt.minimize(fOBJ,x_start,args=(-1.0,CPRICE,I,EQ,PERIODU,CEMUTOTPER,RI,NT),method='SLSQP',bounds = tuple(bnds),options={'disp': True,'maxiter':1000 },constraints={'type':'ineq','fun':lambda EQ: EQ[NT]-1000})
优化的输出是“线搜索的正方向导数(退出模式8)”,它找不到最佳值。 但是,我怀疑我的约束没有完全起作用。有什么建议吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。