Лучший способ сделать выпуклую оптимизацию в Haskell? - PullRequest
2 голосов
/ 09 июля 2020

Я хочу сделать простую выпуклую оптимизацию в Haskell; ничего особенного, просто минимизация линейных функций с некоторыми квадратичными c ограничениями. Я наткнулся на HVX , и мне просто интересно, лучший ли это пакет для этой цели или есть стандартная альтернатива. Спасибо!

1 Ответ

0 голосов
/ 09 июля 2020

В пакете ad есть несколько полезных процедур и одна или две операции градиентного спуска. Например:

$ cabal install --pacakge-env . --lib ad
$ ghci
> import Numeric.AD
> take 1 $ drop 10000 $ gradientDescent (\[x] -> (x-1)^2 + 3) [10]
[[1.0000000000377052]]
> conjugateGradientDescent  (\[x] -> (x-1)^2 + 3) [10]
[[10.0],[1.0]]

Мы видим функцию, которую мы минимизируем, входные данные как перемещаемые (в данном случае список) и начальную точку отсчета [10]. Это пакет, который лежит в основе пакета optimization и должен обеспечить хорошее начало, даже если он не решит вашу проблему полностью.

...