Entropy Maximization

Here is a constrained entropy maximization problem:

\begin{array}{ll} \mbox{maximize} & -\sum_{i=1}^n x_i \log x_i \\ \mbox{subject to} & \mathbf{1}' x = 1 \\ & Ax \leq b \end{array}

where $x \in \mathbf{R}^n$ is our optimization variable and $A \in \mathbf{R}^{m \times n}, b \in \mathbf{R}^{m}$.

To solve this, we can simply use the entropy operation Convex.jl provides.

In [6]:
using Convex, SCS

n = 25;
m = 15;
A = randn(m, n); 
b = rand(m, 1); 

x = Variable(n);
problem = maximize(entropy(x), sum(x) == 1, A * x <= b)
solve!(problem, SCSSolver(verbose=0))

println(problem.optval)
println(x.value)
3.2188073846026657
[0.039596694193772826
 0.040060435043293534
 0.04019878866073644
 0.03983978331717988
 0.03937174306719803
 0.040288113034394835
 0.04068296295587558
 0.040348699741541545
 0.03977943218842446
 0.03920155057856007
 0.03967456574632815
 0.03965070447384114
 0.04005546388236403
 0.040085272144984585
 0.04063891088176249
 0.040633416079841944
 0.04053676010233853
 0.0401124273142282
 0.04065132469849484
 0.03909258717640152
 0.04005131432373106
 0.03929182732897887
 0.04009644317279356
 0.04046763019265253
 0.03959301166868323]