Formulating internal rate of return in CVX

In Stephen Boyd’s Convex Optimization book, an example of a quasiconcave problem is provided in Example 3.34 and is known as the internal rate of return. Does anyone know how to formulate the convex set mentioned using CVX?

I understand that this problem is quasiconcave and not directly handled by CVX. However, I am aware of techniques to handle quasiconvex/quasiconcave problems (i.e. Algorithm 4.1 in the aforementioned book). My question is focused on representing the convex set mentioned in the problem.

The problem says that \text{IRR}(x) \ge R \Longleftrightarrow \text{PV}(x,r)>0 \; \text{for} \; 0\le r<R represents a convex set. Is there a way to represent this set in CVX?

Would it make sense to use the bisection method where f_0(x) := -\text{IRR}(x), t:=r to follow the approach in equation (4.26) of the aforementioned book? Therefore, starting with l=0,u=R, we could use the bisection algorithm (keeping the l=0 to ensure we find the minimum r) to find the optimal x at the minimum r?

Leaving aside the > vs >=,

PV(x,r) > 0 for 0 ≤ r < R are individually (for each r) linear (affine) constraints, but collectively an infinite (dimensional) set of constraints, so not directly representable in CVX as far as I know.

As for finding the optimal vector x at the minimum r, I have no idea what optimization problem you are trying to solve. What is the objective, i.e., what is your criterion for what constitutes the optimal value of the vector x for a given r? And the minimum r means what? It is determined for a given value of the vector x. Don’t propose an algorithm to solve an optimization problem you have not specified.

@Mark_L_Stone thanks for the reply. Regarding the definition of the problem, you are right that what I provided here is partial information. However, since the problem is mostly defined in the aforementioned book example, I felt it unnecessary to duplicate the information here. Essentially, \text{IRR}(x) is quasiconcave (restricted to x_0<0, x_1 + ... + x_n >0) so the problem would be \max \; \text{IRR}(x) with \lbrace x \; \vert \; \text{PV}(x,r)>0 \; \text{for} \; 0 \le r < R \rbrace where \text{IRR}(x) = \inf \lbrace r \ge 0 \; \vert \; \text{PV}(x,r) = 0 \rbrace.

PV(x,r) > 0 for 0 ≤ r < R are individually (for each r ) linear (affine) constraints, but collectively an infinite (dimensional) set of constraints, so not directly representable in CVX as far as I know.

So there is no straightforward way for CVX to handle the whole problem of successive convex feasibility problems? This goes back to why I thought maybe the user would need to write a bisection algorithm

In CVX, you have to write your own bisection algorithm, which as shown in the Convex Optimization book you linked, is rather simple.

Here are CVX examples of quasiconvex optimization problems solved by bisection:

+++++++++++++++

YALMIP, which should be easy to learn for someone who knows CVX, has a built-in bisection solver for quasiconvex optimization problems.