我正在尝试使用几种产品的成本来最大化收益。
这是我的代码:
在这段代码中,我计算每种产品的收入,然后将其相加。
list = [65,78,90] #list of products
def calcRev(x,list):
sum = 0
x = pd.DataFrame(x)
for i in list:
count = 0
df_temp = df[df.app_id == i].reset_index()
df_temp['cost'] = x[count]
df_temp['inst'] = df_temp['cost']/df_temp['cpi']
df_temp['rev'] = (df_temp['LTV_accum']* df_temp['inst'])-df_temp['cost']
count = count+1
sum = sum+df_temp.rev.sum()
return sum
目标函数:
def obj(x,list):
return -calcRev(x,list)
约束:
def constrglobal(x,list):
return 10000-calcRev(x,list)
cons = ({'type':'ineq','fun':constrglobal,'args':(list,)})
然后我将成本初始化为初始猜测x
。由于我有两个产品作为输入,x
有两个暗处。
x = np.full((15,), 0)
然后我应用最小化功能:
sol = minimize(obj,x,args=(list,),method='SLSQP',constraints=cons,options={'disp':True})
但是作为解决方案,我仅分配了第一个产品的数据:
sol.x
array([1467.64152006, 1442.41330009, 1417.18518617, 1391.95714139,
1366.1311581 , 0. , 0. , 0. ,
0. , 0. ])
能否请您指出问题所在以及如何在所有产品中分配sol.x
?