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

I have the optimization problem as below:

\begin{align} &\text{maximize } \sum_{k=1}^{M} \alpha_k {R}_k\\ &\text{subject to: } \exp \left[ - (2^{{R}_k } -1) \left(\frac{\tilde{Z} g_{k} p_{\max} + \sigma^2}{g_{pu} p_{pu}} \right) \right] \leq q \end{align}

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

This is a nonlinear optimization. But I am completely new to optimization. So any help is highly appreciated.

• Welcome to SciComp! I don't understand your notation with the colons. – Geoff Oxberry Aug 14 '15 at 8:35
• The only variables are the $R_{k}$, right? Is the constant factor within the exponential positive, negative, or could it be of either sign? – Brian Borchers Aug 14 '15 at 12:52
• Cross-posted verbatim and answered at Math.StackExchnage.com. Please don't cross post. – horchler Aug 14 '15 at 15:52
• @BrianBorchers,, yap $R_k$ is the variable and rest of the notations are positives. – jhon_wick Aug 14 '15 at 16:45
• Presuming all the terms are positive enough, take the natural log then the log base 2? – Bill Barth Aug 15 '15 at 0:23

If the $R_k$ are your only optimization variables, then the constraint $$\exp \left[ - (2^{{R}_k } -1) \left(\frac{\tilde{Z} g_{k} p_{\max} + \sigma^2}{g_{pu} p_{pu}} \right) \right] \leq q$$ is equivalent to $$- (2^{{R}_k } -1) \left(\frac{\tilde{Z} g_{k} p_{\max} + \sigma^2}{g_{pu} p_{pu}} \right) \leq \ln q$$ which is equivalent to $$(2^{{R}_k } -1) \leq -(\ln q) \left(\frac{g_{pu} p_{pu}}{\tilde{Z} g_{k} p_{\max} + \sigma^2} \right)$$ which is equivalent to $$2^{{R}_k } \leq -(\ln q) \left(\frac{g_{pu} p_{pu}}{\tilde{Z} g_{k} p_{\max} + \sigma^2} \right)+1$$ which is equivalent to $${R}_k \leq \log_2 \left\{ -(\ln q) \left(\frac{g_{pu} p_{pu}}{\tilde{Z} g_{k} p_{\max} + \sigma^2} \right)+1\right\}.$$ This is a linear constraint, and your objective function is already linear. So you ended with a standard linear program, for which there is plenty of software (and if you don't want to use any of that, plenty of simple to implement methods).