Какое железо нужно наращивать чтобы ускорить оптимизацию - страница 4

 

Для поиска min/max пользую более простой метод - линейное программирование, с его-же помощью реш. задачу оптимальности.

Это на MQL делается на раз-два.

 
JavaDev >>:

Для поиска min/max пользую более простой метод - линейное программирование, с его-же помощью реш. задачу оптимальности.

Это на MQL делается на раз-два.

А целевую функцию каким образом ставите, коллега?

 
Choomazik, Объясните пожалуйста схематично что Вы имели в виду, когда писали, что написание многопотоковой dll поможет полностью загрузить многоядерный проц одним приложением. На сколько я понял, dll- это всего лишь библиотека с функциями.
 
Burgunsky >>:
Choomazik, Объясните пожалуйста схематично что Вы имели в виду, когда писали, что написание многопотоковой dll поможет полностью загрузить многоядерный проц одним приложением. На сколько я понял, dll- это всего лишь библиотека с функциями.

Например у вас есть матрица векторов, для елементов которой нужно вычислить скалярный продукт с каким-то вектором. Вы можете поделить матрицу на части и вычислять скалярный продукт параллельно для всех частей, поскольку они друг от друга не зависят. В С# для этого можно использовать ThreadPool, как описано тут (пример вычисления последовальности Фибоначчи). ОС раскидает сама потоки по ядрам. В принципе параллелизируются независимые друг от друга вычисления, все зависит от алгоритма.


P.S. ThreadPool не единственная возможность параллелизацици. Есть например библотека параллельных вычислений для .Net, Task Parallel Libary, я ей пока не пользовался: http://www.devx.com/dotnet/Article/39204, https://en.wikipedia.org/wiki/Parallel_Extensions

 

ПРИНЦИП ОПТИМАЛЬНОСТИ БЕЛЛМАНА

( BELLMAN'S OPTMALITY PRINCIPLE ) - важнейший принцип динамического программирования, согласно которому последующее решение должно составлять оптимальное поведение относительно состояния, получаемого в результате первоначального решения, какими бы они ни были. Следовательно, если имеется оптимальная траектория, то и любой ее участок представляет собой оптимальную траекторию.

16.2. ПРИНЦИП ОПТИМАЛЬНОСТИ. УРАВНЕНИЕ БЕЛЛМАНА

Метод динамического программирования состоит в том, что оптимальное управление строится постепенно. На каждом шаге оптимизируется управление только этого шага. Вместе с тем на каждом шаге управление выбирается с учетом последствий, так как управление, оптимизирующее целевую функцию только для данного шага, может привести к неоптимальному эффекту всего процесса. Управление на каждом шаге должно быть оптимальным с точки зрения процесса в целом.

Каково бы ни было начальное состояние системы перед очередным шагом, управление на этом этапе выбирается так, чтобы выигрыш на данном шаге плюс оптимальный выигрыш на всех последующих шагах был максимальным........

http://www.math.mrsu.ru/text/method/%D0%BF%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF_%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8__%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B1%D0%B5%D0%BB%D0%BB%D0%BC%D0%B0%D0%BD%D0%B0.htm

====================================================================================================================


Примечание: принцип Беллмана - это всего лишь принцип. То есть может работать не всегда, а только так сказать в "достаточно гладких задачах" оптимизации.

 
Есть например библотека параллельных вычислений для .Net, Task Parallel Libary, я ей пока не пользовался: http://www.devx.com/dotnet/Article/39204, https://en.wikipedia.org/wiki/Parallel_Extensions

   А для MQL нет? :))))