如何在使用 CVXPY 解决优化问题时解决“TypeError: must be real number, not MulExpression”?

问题描述

我试图解决以下优化问题:

$\begin{array}{l} \min \sum\limits_{i = 1}^N {\left{ {\log [1 + \exp ({\theta ^T}{u^i})] + [1 - {v^i}{\ θ ^T}{u^i}]} \right}} \ U \in {R^{3X10}},V \in {R^{10}},\theta \in {R^4} \end{数组}$

我的约束是 0

我写的代码如下:

import cvxpy as cp
import numpy as np
import math as mp
N=10
U_size=3
V_size=1
n=U_size+V_size
u_i=np.ones((N,1))
Gen_U_1_3= np.random.randint(low=0,high=6,size=(N,n-1))
Gen_V_4= np.random.randint(low=0,high=2,1))
Gen_U_V= np.concatenate((Gen_U_1_3,Gen_V_4),axis=1)
U=np.concatenate((u_i,Gen_U_1_3),axis=1)
V=Gen_V_4

x = cp.Variable(n)
#objective function
sum=0
for i in range(N):
    sum +=mp.log(1+mp.exp(x.T@U[i,:].T))+(1-(V[i,:]@x.T@U[i,:].T))
    
const =[(U[i,:]@x<=1,U[i,:]@x>=0) for i in range(N) ]
 
# Construct the problem.
prob = cp.Problem(cp.Minimize(sum),const )
prob.solve()
result = prob.solve()

运行时出现以下错误

Traceback (most recent call last):
  File "c:\Users\Admin\demo_optimization_1.py",line 19,in <module>
    sum +=mp.log(1+mp.exp(x.T@U[i,:].T))  
TypeError: must be real number,not MulExpression

我是 Python 新手。我试图解决这个错误,但到目前为止可以做到这一点。任何人都可以建议目标函数的表达式有什么问题吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)