python - sci.py 最小化 - 约束函数参数
问题描述
我需要将作为优化参数的变量限制在某个值 EQ<1000 以下。产生变量的#function如下:
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,iC,iTATM,i)
iPERIODU[i] = fPERIODU(iC,iEQ,il,i)
iCEMUTOTPER[i] = fCEMUTOTPER(iPERIODU,il,i)
iRI = fRI(iCPC,i)
resUtility = np.zeros(1)
fUTILITY(iCEMUTOTPER, resUtility)
return sign*resUtility[0]
#优化
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)”,它找不到最优值。但是,我怀疑我的约束没有完全发挥作用。有什么建议么?
解决方案
推荐阅读
- c# - 映射一个对象包含列表以列出 myDto 对象
- python - How to fix this pytube NameError in python?
- asp.net - How to use Configuration.Get() method properly?
- django - is there a way to paginate multiple querysets in django list view?
- python - PostgreSql 数据库上不存在 Heroku Django 网站关系
- scala - 如何在scala spark中按字母顺序对嵌套数组和结构的模式列进行排序?
- javascript - 再次单击时谷歌地图标记发生变化 - Fidde 附加
- python - 在 html django 中显示 python 函数结果
- amazon - 在不创建关键字的情况下获取关键字的出价建议
- python - python - 如何使用数组(x,y)制作的曲线找到数组x1的图像?