我需要找到功能的最大值:

a1 ^ x1 * const1 + a2 ^ x2 * const2 + .... + ak ^ xk * constk =质量

其中xk> 0,xk是整数。 ak是常数。

约束:
a1 ^ x1 * const1 * func(x1)+ a2 ^ x2 * const2 * func(x2)+ .... + ak ^ xk * constk * func(xk)
其中func是离散函数:

func(x)
{
    switch(x)
    {
        case 1: return 423;
        case 2: return 544;
        ...
        etc
    }
}


k可能很大(超过1000)。 x小于100。
最好的方法是什么?

最佳答案

有一些像nelder-mead最优化的技术(我相信GSL可以实现),但是大多数技术都采用某种特殊的结构(即凸性或连续性)。根据函数的值,可能不存在唯一的最优值,甚至可能没有常规下坡方法可以找到的最优值。

10-04 10:54