I have a complex (but still finite-dimensional convex) program in mind for which I want to use Mathematica to solve numerically. For this reason, I was trying my hand on simpler instances. Consider the feasible compact convex program $$\begin{aligned}\max_{a,b,c,d\in[0,1]} &\quad a-3b-2c+d\\\text{s.t.} &\quad \sqrt{ab}+\sqrt{cd}\geq1.\end{aligned}$$
It is feasible of course for $a=b=c=d=1$, and it is convex as the function $(x,y)\in[0,1]^2\mapsto\sqrt{xy}$ is concave. Naively, I thought specifying the method "Convex"
to NMaximize
would let Mathematica use convex optimization methods, instead it throws an error which is the title of this post. The code in question is the following:
NMaximize[a - 3 b - 2 c + d,
{0 <= a <= 1, 0 <= b <= 1, 0 <= c <= 1, 0 <= d <= 1,
Sqrt[a b] + Sqrt[c d] >= 1},
{a, b, c, d},
Method -> "Convex"]
My questions are 1) What does specifying Method->"Convex"
really do? 2) Does NMaximize
always find the minimum of a convex program (it seemed to fail on the more complex instance)?