0
$\begingroup$

Given the following optimization problem: Given positive integers $n_1, n_2, \dots, n_m$ and real numbers $P_1, P_2, \dots P_m$. Besides these, given positive real numbers $a_{i,j,l}$ for $1 \leq i \leq n_l$, $1 \leq l\leq m$ and $0 \leq j \leq k$, and we try to find real numbers $(\beta_1, \beta_2, \dots, \beta_k)$ that minimize $$ \sum_{l=1}^m (\sum_{i=1}^{n_l} a_{i,0,l} a_{i,1,l}^{\beta_1} a_{i,2,l}^{\beta_2} \cdots a_{i,k,l}^{\beta_k} -P_l )^2$$

Which method you think would be efficient to be implemented in MATLAB/Python?

$\endgroup$
1
$\begingroup$

It looks like your problem is an unconstrained non-linear optimization problem. If you have the Matlab optimization toolbox, then I would suggest using that to solve your problem. It is easy to try multiple algorithms with the same interface. Just make sure to vectorize your code to have it run quickly.

The Matlab global optimization toolbox in would also work, although it would likely take a bit longer to find a solution. Optimization using BARON and / or the YALMIP interface, as suggested by @Mark L. Stone would work as well.

If you're looking for a simple way to get an answer in Matlab and do not have the optimization toolbox, then you could try using CMA-ES.

As far as python goes, you might look at the list of non-linear solvers that are included in the SciPy package.

$\endgroup$
0
$\begingroup$

If you want the global optimum, try using the matbar (under MATLAB) interface to BARON http://www.minlp.com/baron. Or you can use the YALMIP interface (under MATLAB) to call BARON, which might be simpler. But if you do use YALMIP, follow the advice in https://groups.google.com/forum/#!topic/yalmip/Z1-oYiknijU to avoid expansion of squares.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.