In the following section of my code i am facing error , cvxpy.error.DCPError: Problem does not follow DCP rules.the error is probably due to the quardratic constraint , but how to solve this problem? the errors display the specific equations that doesnt follow DCP rule, The objective is not DCP. Its following subexpressions are not:

(var2401[1, 0:3] + -[ 30.   0. 100.]) @ (var2401[1, 0:3] + -[ 30.   0. 100.])
(var2401[2, 0:3] + -[  0.  30. 100.]) @ (var2401[2, 0:3] + -[  0.  30. 100.])
(var2401[3, 0:3] + -[ 30.  30. 100.]) @ (var2401[3, 0:3] + -[ 30.  30. 100.])
(var2401[0, 0:3] + -[  0.   0. 100.]) @ (var2401[0, 0:3] + -[  0.   0. 100.])
(var2401[2, 0:3] + -[  0.  30. 100.]) @ (var2401[2, 0:3] + -[  0.  30. 100.])
(var2401[3, 0:3] + -[ 30.  30. 100.]) @ (var2401[3, 0:3] + -[ 30.  30. 100.])
(var2401[0, 0:3] + -[  0.   0. 100.]) @ (var2401[0, 0:3] + -[  0.   0. 100.])
def cvxprob(ar, qr, ir):
    a = []
    q = []
    for n in range(M):
        a.append(cp.Variable(shape=(K, 1)))
        q.append(cp.Variable(shape=(K, 3)))
    objfunc = []
    for n in range(M):
        for k in range(K):
            term1 = 1
            for j in range(K):
                term1 += gamma * (2 * ar[n][j] * a[n][j] / (cp.norm(qr[n][j] - s[k])))
                term1 -= gamma * (ar[n][j] ** 2) * (cp.norm(q[n][j] - s[k]) ** 2) / (cp.norm(qr[n][j] - s[k]) ** 2)
            objfunc.append(cp.log(term1))
            objfunc.append(-1 * cp.log(1 + ir[n][k][0]))
            objfunc.append(ir[n][k][0] / (1 + ir[n][k][0]))

            term2 = 0
            for j in range(K):
                if j != k:
                    ratio = -1 * gamma / (1 + ir[n][k][0])
                    diff = q[n][j] - qr[n][j]
                    term2 -= ratio * cp.square(a[n][j]) / (cp.norm(diff) + 2 * cp.sum(diff * (q[n][j] - qr[n][j])))
objfunc.append(term2)
constr = []
    for n in range(M):
        for k in range(K):
            constr.append(q[n][k][2] <= hmax)
            constr.append(q[n][k][2] >= hmin)
    for n in range(1, M):
        for k in range(K):
            constr.append(cp.norm(q[n][k][0:2] - q[n - 1][k][0:2]) <= vl)
            constr.append(q[n][k][2] - q[n][k - 1][2] <= va)
            constr.append(q[n][k][2] - q[n][k - 1][2] >= -vd)
    for n in range(M):
        for k in range(K):
            constr.append(a[n][k] <= math.sqrt(pmax))
            constr.append(a[n][k] >= 0)
    for n in range(M):
        for k in range(K):
            for j in range(k + 1, K):
                if j != k:
                    diff = qr[n][j] - qr[n][k]
                    constr.append(cp.sum(diff * (q[n][j] - q[n][k])) >= (cp.norm(qr[n][j] - s[k]) ** 2 + dmin ** 2))
obj = cp.Maximize(sum(objfunc))
prob = cp.Problem(obj, constr)
prob.solve()
return [av.value for av in a], [qv.value for qv in q]

I tried to convert the quadratic constraints that are not convext to linear , but the error is same, when i remove the constraints from the code, it returns NOne, so anyone experience same issues? I appriacte your help,

0

There are 0 best solutions below