How can I solve a nonlinear optimization problem where constraint contains exponential term?

1.5k Views Asked by At

I have the optimization problem as below:

$\hspace{10mm} \text{Maximize} \sum_{k} \alpha_k {R}_k $

$ \hspace{10mm}\text{subjcet to:} $

$ \hspace{10mm}\exp \left[ - (2^{{R}_k } -1) \left( \frac{\tilde{Z} g_{k} p_{\max} + \sigma^2}{g_{pu} p_{pu}} \right) \right] \leq q $

$\alpha_k$ is the weight factor associated to the $R_k$.

Obviously this is a nonlinear optimization. But I am completely new to optimization. So any help is highly appreciated. thank you.

1

There are 1 best solutions below

5
On BEST ANSWER

As you say, it is a nonlinear program, so you simply use a nonlinear solver.

Here is an implementation in YALMIP (disclaimer: developed by me) which is a modelling toolbox in MATLAB. It interfaces various solvers, such as the nonlinear solvers fmincon, ipopt, snopt.

Trial data

n = 100;
alpha = -rand(n,1);
g = rand(n,1);
sigma = rand(1);
q = rand(1);
gpu = rand(1);
ppu = rand(1);
Z = rand(1);
pmax = rand(1);

Straightforward model (fmincons SQP implementation solves the problem best. Negate objective as default is minimize). Solved in roughly 0.1 seconds

R = sdpvar(n,1);
Objective = -(alpha'*R);
Constraints = exp(-(2.^R-1).*(Z*g*pmax + sigma^2)/(gpu*ppu)) <= q;
ops = sdpsettings('solver','fmincon','fmincon.algorithm','sqp');
optimize(Constraints,Objective,ops)
value(R)

The exponential in your model is redundant, less complex model is

Constraints = (-(2.^R-1).*(Z*g*pmax + sigma^2)/(gpu*ppu)) <= log(q);

A variable change leads to linear constraints and a simple sum of logarithms in the objective. fmincon solves this problem in 0.01 seconds

w = sdpvar(n,1);
Constraints = (-(w-1).*(Z*g*pmax + sigma^2)/(gpu*ppu)) <= log(q);
Objective = -(alpha'*log2(w));
optimize(Constraints,Objective,ops)
value(log2(w))

Since this means you are maximizing a weighted sum of logarithms over a simple box, I wouldn't be surprised if you could solve it analytically.