I have a real world portfolio optimization problem here where I have problem finding the right approximation algorithm to tackle.
Choose $w_1,w_2, \dots, w_n$ (weights) such that
$f_1(w_1x) + f_2(w_2x) + \dots + f_n(w_nx)$ is maximized
where each function $f_1, f_2, \dots, f_n$ is an increasing concave function (that represents returns), $x$ is a constant and $w_1 + w_2 + \dots + w_n = 1$ and each $w_i \geq 0$.
Does anyone have any idea which is the right step I should take to do more research?
As a side note, functions $f_1, f_2, \dots, f_n$ can be queried with near 0 latency.
Assuming $x\gt 0$ and calling $u_k = x w_k$ we have analogously the problem
$$ \max_{u}\sum_k f_k(u_k)\ \ \ \text{s. t.}\ \ \ \cases{\sum_{k}u_k = x\\ u_k \ge 0} $$
This problem can be easily numerically solved with the use of dynamic programming (Richard Bellman)
Calling $F(u_1,u_2,\cdots, u_n) = \sum_k f_k(u_k)$ and $\phi_n(x) = \max_{u}F(u_1,u_2,\cdots, u_n)$ we have the recurrence relation
$$ \phi_n(x) = \max_{0\le u\le x}\left(f_n(u)+\phi_{n-1}(x-u)\right),\ \ \ \phi_1(x) = f_1(x) $$
NOTE
A detailed algorithm to implement this procedure can be found in
Applied Dynamic Programmingby Richard Bellman and Stuart E. Dreyfus
Princeton University PressPrinceton, New JerseyISBN 0-691-07913-7In the 1962 edition the flow-chart is located between pages 21 to 26. Follows a script in python which implements the flow-chart.