code: def _run_opf(self, P, q, AA, ll, uu, xmin, xmax, x0, opt):
          
          AAcvx = tocvx(AA)
          nx = x0.shape[0] # number of variables
          # add var limits to linear constraints
          eyex = spmatrix(1.0, range(nx), range(nx))
          A = sparse([eyex, AAcvx])
          l = matrix([-xmin, ll])
          u = matrix([ xmax, uu])
  
          Ae, be, Ai, bi = split_linear_constraints(A, l, u)
  
  
          if len(P.V) > 0:
              cvx_sol = solvers.qp(P, q, Ai, bi, Ae, be, self.solver, {"x": x0})
          else:
              cvx_sol = solvers.lp(q, Ai, bi, Ae, be, self.solver, {"x": x0})
  
          return cvx_sol
docs: Solves the either quadratic or linear program.