|
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 16
|
||||||
Ускорить работу вложенного цикла for() C#31.10.2015, 15:49. Показов 5445. Ответов 11
Метки нет (Все метки)
Добрый день.
Имеется цикл в котором подбираются коэффициенты к массивам таким образом, чтобы коэф регрессии стремился к нулю
При конструкции с одним циклом, когда имеется только a1[] и a2[] расчет занимает 10 сек, с двумя - несколько минут, с тремя минут 15. Ну а если n увеличить до 2000, чтобы повысить качество расчета, то вообще не дожидался, вырубал.
0
|
||||||
| 31.10.2015, 15:49 | |
|
Ответы с готовыми решениями:
11
Как обойтись без вложенного цикла? Ускорить работу методов |
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
|
|
| 31.10.2015, 16:19 | |
|
Самое интересное думаю в KoefLinearRegression происходит?
0
|
|
|
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 16
|
|
| 31.10.2015, 16:42 [ТС] | |
|
Нет, именно вложенные циклы тормозят. Koef.. я отключаю и время исполнения кода практически не меняется.
0
|
|
|
Администратор
|
||
| 31.10.2015, 17:29 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 16
|
|
| 31.10.2015, 17:36 [ТС] | |
|
Ошибся когда печатал здесь код, конечно же там double а не int. Просто я не копировал, а набрал здесь по новой.
Метод KoefLinearRegression, повторюсь, сейчас вообще не используется на время поиска способа оптимизации. После его отключения время почти не изменилось, визуально на несколько процентов.
0
|
|
|
Администратор
|
|
| 31.10.2015, 17:38 | |
|
Schielend, выложи весь код на котором можно увидеть проблему. Потому что иначе единственный совет который можно дать это - улучшай алгоритм. Совет правильный, но бесполезный.
0
|
|
|
Master of Orion
|
|
| 01.11.2015, 01:25 | |
|
Schielend, потому что нужно не перебирать действительную область, а взять любой метод многомерной оптимизации и задать для него нужные параметры. Я так рассчитывал в своё время вектор коинтеграции для случайных процессов, у меня критерием оптимальности было равенство автокорелляционной функции в "окнах", на которые я делил исходный стохастический процесс. Тут ровно то же самое, только намного проще.
1
|
|
|
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 16
|
|
| 01.11.2015, 10:44 [ТС] | |
|
Psilon раз Вы с эти сталкиваетесь, то можете порекомендовать конкретный метод оптимизации? Я не программист и мне это нужно все-лишь один раз.
Библиотеку планирую взять отсюда http://accord-framework.net/do... zation.htm Какой из доступных методов взять?
0
|
|
|
Master of Orion
|
|
| 01.11.2015, 21:59 | |
|
Schielend, при чем тут программист?
Тут математика.Я лично использовал метод розенброка, у меня в принципе есть реализация на шарпе. Но у меня там в качестве одномерного метода используется метод дихотомии (простейший метод одномерной оптимизации), можете взять уже готовое или улучшить (взять какой-нибудь метод получше).
0
|
|
|
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 16
|
||||||
| 02.11.2015, 11:46 [ТС] | ||||||
|
Математику нужно преобразовать в программный код, а это мне не по силам.
Пошел по другому пути и решил распараллелить вычисления на потоки. Чтобы понять сам процесс сделал простую программу чтобы нагрузить процессор
Что делаю не так?
0
|
||||||
|
Master of Orion
|
|
| 02.11.2015, 13:02 | |
|
Schielend, у вас экспоненциальная сложность. Это значит, что при n=2000 (как вы привели выше) время на вычисления скорее всего превосходит (и сильно) время тепловой смерти Вселенной.
Если точнее, то по данным из первого поста моя аппроксимация дает формулу y = 2.32en - 2.15 секунд. При n=2000 получаем 9e+868 секунд или 2,85e+861 лет. Учитывая, что возраст вселенной всего лишь 1.3e+10 лет, то не удивлен, что не дождались результатов. Так что многопоточность вряд ли тут сможет помочь. Даже если будет в миллиард потоков фигачить.
0
|
|
|
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 16
|
|
| 02.11.2015, 13:34 [ТС] | |
|
Цифры в цикле я уже уменьшил до -2, 2, 0.01 и n=150 и теперь считает порядка 10 мин.
Но так как это цикл не весь, а только часть "матрешки", то расчет затянется от 10 мин до 1-2 часа, в зависимости от входных параметров. Вот это время я и хочу уменьшить хотя бы на 30% по возможности, что мои 8 ядер должны, я надеюсь, сделать. Осталось только понять, что в приведенном последнем примере многопоточности я делаю не так, и тогда смогу применить это уже непосредственно к исходному коду.
0
|
|
| 02.11.2015, 13:34 | |
|
Помогаю со студенческими работами здесь
12
Ускорить работу WebBrowser
Ускорить работу с файлами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|