Забавная програмка
Добавлено: Пт май 14, 2010 12:13 pm
Вообщем я тут столкнулся с такой забавной штукой как оптимизация, по едрическому колличеству параметров, функции, которая очень криво зависит от этих параметров.
Большинство методов выдаёт оптимум относительно какой-то точки, ну фактически пытается двигать по шажкам точку в многомерном пространстве и смотреть, не приходим ли мы к минимуму (а мне минимум нужно найти).
Результатом этого вылилось в такой вот забавный метод оптимизации:
Есть скажем 6 координат функции, каждой координате задаём отрезок локализации, разбиваем отрезок на 5 частей, ну и шарашим вложенные циклы по всем 6 коорденатам. В самом нижнем проверяем, что выходит у нас (вдруг уменьшилось), ну а потом наращиваем постепенно на шажок каждую координату. Потом от оптимумов делаем шаг в право - новый максимум, шаг в лево - новый минимум. В результате уменьшаем область локализации на 40%. Потом делим отрезок опять на пять частей и по новой.
Проблема в том, что нужно как-то прогнать все комбинации для каждой из всех переменных, а функция вычисляется довольно-таки долго. 6 координат в результате минут за 14-15 один проход делает. Следующим посту кину кусок из программы. Если кто знает как можно это сделать оптимальнее - помогите
Большинство методов выдаёт оптимум относительно какой-то точки, ну фактически пытается двигать по шажкам точку в многомерном пространстве и смотреть, не приходим ли мы к минимуму (а мне минимум нужно найти).
Результатом этого вылилось в такой вот забавный метод оптимизации:
Есть скажем 6 координат функции, каждой координате задаём отрезок локализации, разбиваем отрезок на 5 частей, ну и шарашим вложенные циклы по всем 6 коорденатам. В самом нижнем проверяем, что выходит у нас (вдруг уменьшилось), ну а потом наращиваем постепенно на шажок каждую координату. Потом от оптимумов делаем шаг в право - новый максимум, шаг в лево - новый минимум. В результате уменьшаем область локализации на 40%. Потом делим отрезок опять на пять частей и по новой.
Проблема в том, что нужно как-то прогнать все комбинации для каждой из всех переменных, а функция вычисляется довольно-таки долго. 6 координат в результате минут за 14-15 один проход делает. Следующим посту кину кусок из программы. Если кто знает как можно это сделать оптимальнее - помогите