我需要找到功能的最大值:
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可以实现),但是大多数技术都采用某种特殊的结构(即凸性或连续性)。根据函数的值,可能不存在唯一的最优值,甚至可能没有常规下坡方法可以找到的最优值。