Ну вот с дополнением, что
![$g_i(t)$ $g_i(t)$](https://dxdy-02.korotkov.co.uk/f/9/4/e/94e2204cc6c9e1002c366d2e7fa2cfac82.png)
, вообще говоря, разные, уже появляется простор для оптимизации.
Если все k одинаковы, не теряя общности,
![$k_i=1$ $k_i=1$](https://dxdy-02.korotkov.co.uk/f/5/5/c/55cb1b9f3457af496ba285139c5d227d82.png)
, то оптимальная
![$f(t)$ $f(t)$](https://dxdy-03.korotkov.co.uk/f/2/7/0/27099e26220f898359382d05f75b941c82.png)
будет медианой от
![$g_i(t)$ $g_i(t)$](https://dxdy-02.korotkov.co.uk/f/9/4/e/94e2204cc6c9e1002c366d2e7fa2cfac82.png)
. Задача незначительно усложняется, если заданы неравные k. Тогда надо искать взвешенную медиану.
https://en.wikipedia.org/wiki/Weighted_medianЕсли k не заданы и подлежат подбору - тут уже хуже. Бросается в глаза источник неопределённости - можно пропорционально изменять все k и обратно пропорционально им
![$f(t)$ $f(t)$](https://dxdy-03.korotkov.co.uk/f/2/7/0/27099e26220f898359382d05f75b941c82.png)
, не меняя функционала.
Надо зафиксировать либо одно из
![$k_i$ $k_i$](https://dxdy-03.korotkov.co.uk/f/e/c/7/ec71f47b6aee7b3cd545386b9360191582.png)
, либо их сумму (сумму квадратов etc.), смотря что удобнее для оптимизации.
Для заданной
![$f(t)$ $f(t)$](https://dxdy-03.korotkov.co.uk/f/2/7/0/27099e26220f898359382d05f75b941c82.png)
поиск оптимального
![$k_i$ $k_i$](https://dxdy-03.korotkov.co.uk/f/e/c/7/ec71f47b6aee7b3cd545386b9360191582.png)
может делаться для каждого i по отдельности обычной одномерной оптимизацией по
![$k_i$ $k_i$](https://dxdy-03.korotkov.co.uk/f/e/c/7/ec71f47b6aee7b3cd545386b9360191582.png)
. Для квадратичного функционала совсем просто, но абсолютная величина при попытке продифференцировать показывает разрывный signum, и что-то простое аналитическое выражение не вытанцовывается, но численная одномерная оптимизация работать должна (для квадратичного функционала и поиск
![$f(t)$ $f(t)$](https://dxdy-03.korotkov.co.uk/f/2/7/0/27099e26220f898359382d05f75b941c82.png)
при заданных коэффициентах становится тривиален, взвешенное среднее арифметическое).
Возможный, но не гарантирующий глобального оптимума путь - начать с
![$k_i=1$ $k_i=1$](https://dxdy-02.korotkov.co.uk/f/5/5/c/55cb1b9f3457af496ba285139c5d227d82.png)
, оценить
![$f(t)$ $f(t)$](https://dxdy-03.korotkov.co.uk/f/2/7/0/27099e26220f898359382d05f75b941c82.png)
, затем оптимизировать по
![$k_i$ $k_i$](https://dxdy-03.korotkov.co.uk/f/e/c/7/ec71f47b6aee7b3cd545386b9360191582.png)
, вновь
![$f(t)$ $f(t)$](https://dxdy-03.korotkov.co.uk/f/2/7/0/27099e26220f898359382d05f75b941c82.png)
и так "до полного удовлетворения". Возможна расходимость и весьма вероятно "застревание" в локальном оптимуме.
Ещё один путь - ввести случайный поиск, набросать значений
![$k_i$ $k_i$](https://dxdy-03.korotkov.co.uk/f/e/c/7/ec71f47b6aee7b3cd545386b9360191582.png)
, и повторять, вычисляя функционал и смотря на его убывание при повторных "набросах". Тут есть шанс не пропустить глобальный оптимум, но не его точное значение, а область, в которой он лежит. Возможно, после "наброса" и нахождения
![$f(t)$ $f(t)$](https://dxdy-03.korotkov.co.uk/f/2/7/0/27099e26220f898359382d05f75b941c82.png)
попробовать улучшить
![$k_i$ $k_i$](https://dxdy-03.korotkov.co.uk/f/e/c/7/ec71f47b6aee7b3cd545386b9360191582.png)
.