Найти максимум функции - PullRequest
       7

Найти максимум функции

4 голосов
/ 04 февраля 2011

Мне нужно найти максимум функции:

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

гдеxk> 0 и xk является целым числом.ak является константой.

ограничение: a1 ^ x1 * const1 * func (x1) + a2 ^ x2 * const2 * func (x2) + .... + ak ^ xk * constk * func (xk) <Бюджет </p>

Где func - это дискретная функция:

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

k может быть большой (более 1000).х менее 100. Какой метод лучше?

1 Ответ

2 голосов
/ 04 февраля 2011

Существуют методы, такие как оптимизация с помощью nelder-mead (которую, я считаю, реализует GSL), но большинство методов предполагают какую-то особую структуру (т.е. выпуклость или непрерывность).В зависимости от значений функции, может не существовать уникального оптимума или даже оптимума, который может найти нормальный метод спуска.

...