У меня есть следующие векторы/матрицы:
a --> nx1
b --> nx1
C --> nxn
Учитывая, что я знаю a и C, я хочу максимизировать следующее в Matlab, изменяя вектор b:
S = a(1)*log(sum(b.*C(:,1),1))+...+a(n)*log(sum(b.*C(:,n),1))
Таким образом, каждый элемент максимизируемой суммы S состоит из:
- i-й элемент вектора a, умноженный на (2)
- натуральный логарифм (3)
- сумма элементов, полученных в (4)
- поэлементное умножение элементов вектора b на элементы i-го столбца матрицы C
Ограничения задачи заключаются в том, что каждый элемент b должен быть >=0 и ‹=1, а их сумма должна равняться 1.
Я предполагаю, что мне придется использовать функцию fmincon и minimze -S, но я не знаю, как настроить функцию S.