У меня есть дерево данных S (см. На картинке)
Структура дерева:

, а также дерево стратегии хеджирования H (такая же структура, как у другого дерева).
Теперь я хочу вычислить денежный поток от моих операций хеджирования и найти оптимальный массив хеджирования H, который возвращает максимальную прибыль.
Правила расчета денежного потока:
1. для года 0, H [0,0] * S [0,0]
2. одна цена акции в прошлом году имеет 3 возможных результата в следующем году. в плане материнского узла 3 дочерних узла. (видно на картинке)
3. для года x (x> 0) денежный поток для каждого дочернего узла равен (H [childnode, x] -H [mothernode, x-1]) * S [childnode, x]
4. в конце я подведу итоги движения каждого пути и максимизирую его.
Идеальная функция суммирования денежных потоков должна выглядеть следующим образом:
def денежный поток (H):
расчет денежного потока здесь, уже сделано
возврат (конечный денежный поток)
У меня уже есть правильный расчет. но когда я попытался использовать оптимизацию в scipy, scipy solver не получает не-1D массив в качестве входных данных. Если мне придется сгладить мой текущий массив деревьев в одномерный массив, я потеряю индекс времени (столбца). Это разрушит вычисления между материнскими узлами и дочерними узлами.
Так есть ли рекомендация для получения оптимального массива H? Новый решатель или новая структура данных?
PS: Excel Solver может легко решить эту проблему, но мне нужно создать подпрограмму в Python.