Maximize sum of gamma cumulative distributions as disciplined quasiconvex problem (DQCP) in CVXPY

23 Views Asked by At

Is is possible to formulate the maximization of the sum of gamma cumulative distributions as a disciplined quasiconvex problem (DQCP) in CVXPY?

I'm trying to solve the following problem:

Given $F(x) = \int_0^x t^{\alpha-1}exp(-t) dt$ (proportional to the CDF of the Gamma distribution with parameters $\alpha \in \mathbb{N}$ and $\beta = 1$), and a set of non-negative parameters $w \in \mathbb{R_+}^{n \times m}$

$$ \max_{x \in \mathbb{R}^n, y \in \mathbb{R}^{n \times m}} \sum_{i=1}^{n} F(x_i) $$

s.t. $$ \sum_{j=1}^m w_{ij} y_{ij} = x_i \quad \forall i \in 1 \dots n $$ $$ \sum_{i=1}^n y_{ij} = 1 \quad \forall j \in 1 \dots m $$ $$ x \ge 0 $$ $$ y_{ij} \ge 0 \quad \forall i \in 1 \dots n, j \in 1 \dots m $$

As the sum of the integrals of positive functions, $\sum F$ is increasing over its domain and therefore quasiconcave. Is there a way to express this within the DQCP ruleset for a given $\alpha$?

For example, if $\alpha = 2$, we have $\sum F(x_i) = 2 - \sum e^{-x_i} (x_i^2 + 2x_i+2) $.

Using cp.multiply does not return an expression that is known to be quasiconcave.

import cvxpy as cp
import numpy as np


# Problem data.
np.random.seed(1)
n = 10
m = 5
w = np.random.rand(m,n)


# Variables
x = cp.Variable(n, nonneg=True)
y = cp.Variable((m,n), nonneg=True)

# Constraints
constraints = [x == cp.sum(cp.multiply(w,y), axis=0)]
constraints += [cp.sum(y, axis=1) == 1]

# Test
poly = cp.square(x) + 2*x + 2
cp.multiply(cp.exp(-x), p).is_quasiconcave() # Returns false
```