Стоит задача: оптимизировать проблему при помощи генетического алгоритма в матлабе. Как я понимаю из документации, данный алгоритм реализован так, что началные значения и распределение (distribution) рандомальных изминений (мутаций) предполагают приблизительно одинаковый диапазон значений всех переменных (степеней свободы).
Проблема в том, что задача задана при помощи 4-х переменных, три из которых обычно принимают значения от 1 до ~10-20, а одна переменная - от 4000 до ~15000. Как лучше всего привести значения четвертой переменной к диапазону 1-20?
Самый простой способ - делить на 4000. Но в этом случае диапазон получится слишком узким.
Значит делаем так:
> function f = factor (value, k, v)
> max1=(max(v)/max(k));
> min1=(min(v)/min(k));
> d= (value - min(v))/(max(v)-min(v));
> f=min1+(max1-min1)*d;
> end
value - значение, которое надо подогнать к диапазону
k - вектор возможных значений переменной с диапазоном 1-20
v - вектор возможных значений переменной с диапазоном 4000 - 15000
функция возвращает фактор на который надо множить value
Упустил ли я что-то? Есть ли способы лучше?
Спасибо
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум «общие» переменные в shared object (2012)
- Форум C++ общая переменная у двух замыканий (2015)
- Форум Потоки в Python и общие переменные (2024)
- Форум Regex Диапазон. (2016)
- Форум С-диапазон (2015)
- Форум разбить диапазон (2013)
- Форум bash диапазон (2018)
- Форум Вне диапазона (2021)
- Форум вне диапазона (2010)
- Форум вне диапазона (2009)