WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!


Pages:     | 1 |   ...   | 13 | 14 ||

// Формирование нового списка из текущего и списка приемников currentGeneration = selectionController.selectNextGeneration( currentGeneration, nextGeneration, progressController);

} // Выбор наилучшего решения-кандидата из текущего списка SolutionCandidate

best = currentGeneration[0];

for (int i = 1; i < currentGeneration.length; i++) { SolutionCandidate

next = currentGeneration[i];

if (next.isBetterThan(best)) { best = next;

} } return best;

Формирование нового текущего списка состояний с помощью эвристики «эмуляция отжига» // Рандомизированная сортировка с учетом значения функции полезности Arrays.sort(candidates, comparator);

RndPosition[] rndPositions = new AnnealingSelectionController.RndPosition[candidates.length];

for (int i = 0; i < candidates.length; i++) { rndPositions[i] = new RndPosition(candidates[i], i + random.nextInt(candidates.length));

} Arrays.sort(rndPositions);

// Каждое состояние из текущего списка сравнивается с приемником for (int i = 0, c = 0; i < current.length && c < rndPositions.length; i++) { SolutionCandidate

candidate = rndPositions[c].candidate;

// Приемник принимается всегда, если он лучше, // либо случайным образом в зависимости от стадии работы // алгоритма.

if (candidate.isBetterThan(current[i]) || acceptBadValue(progressController.getProgress())) { current[i] = candidate;

c++;

} } Генерация состояния приемника // Вычисление оставшегося времени работы double remainingProgress = 1 - progressController.getProgress();

// Вычисление количества долей для увеличения int countToGrow = Math.max(1, (int) (weights.length * remainingProgress / 2));

// Цикл изменения долей капитала main: for (int i = 0; i < countToGrow; i++) { // Выбор доли капитала для увеличения int indexTo;

do { indexTo = random.nextInt(weights.length);

} while (weights[indexTo] > 1 - EPSILON || weights[indexTo] + remainingProgress < random.nextFloat());

// Определение объема переносимого капитала double growth = random.nextDouble() * (1 - weights[indexTo]) * remainingProgress;

growth = Math.max(0.0004, growth);

if (weights[indexTo] + growth > 1) { growth = 1 - weights[indexTo];

} // Выбор доли капитала, которая будет являться донором int attempt = 0;

int indexFrom;

do { indexFrom = random.nextInt(weights.length);

if (++attempt == weights.length << 1) { continue main;

} } while (indexTo == indexFrom || weights[indexFrom] < EPSILON);

// Перенос части капитала из одной доли в другую if (weights[indexFrom] <= growth) { weights[indexTo] += weights[indexFrom];

weights[indexFrom] = 0;

} else { weights[indexTo] += growth;

weights[indexFrom] -= growth;

} } Приложение 2. Примеры расчетов по определению стабильных во времени состояний индекса РТС с периодом прогнозирования 30 минут и коэффициентами ранговой корреляции Спирмена рассчитанными по периодам на каждой из 3 осей. Всего рассмотрено 102243 вхождений в состояний за период с 2003 по 2007 год.

Состояние 1 1 ось 2 ось 3 ось Длина периода 1 час 15 мин 5 мин Диапазон значений коэффициента Спирмена 0,75; 1 0,75;1 0,75;Год Кол-во Вероятность роста, % Вероятность падения, % вхождений 2003 4312 71,3 27,2004 4064 71,4 27,2005 3855 72,5 24,2006 4110 72,1 26,2007 2800 68,6 29,Итого 19141 71,3 26,Состояние 2 1 ось 2 ось 3 ось Длина периода 1 час 15 мин 5 мин Диапазон значений коэффициента Спирмена -0,75;-1 -0,75;-1 -0,75;-Год Кол-во Вероятность роста, % Вероятность падения, % вхождений 2003 2649 33,7 65,2004 3045 31,4 67,2005 1807 35,7 61,2006 2276 34,4 63,2007 1985 31,8 66,Итого 11762 33,2 65, Состояние 3 1 ось 2 ось 3 ось Длина периода 1 час 15 мин 5 мин Диапазон значений коэффициента Спирмена 0,15;0,4 0,75;1 0,75;Год Кол-во Вероятность роста, % Вероятность падения, % вхождений 2003 1114 73,1 25,2004 1190 71,1 26,2005 1128 68,3 29,2006 1203 72,5 25,2007 947 69,1 28,Итого 5582 70,9 27,Состояние 4 1 ось 2 ось 3 ось Длина периода 1 час 15 мин 5 мин Диапазон значений коэффициента Спирмена -0.4;-0,15 -0.75;-1 -0.75;-Год Кол-во Вероятность роста, % Вероятность падения, % вхождений 2003 1035 28,8 69,2004 1090 29,4 69,2005 879 35,3 63,2006 1030 31,6 66,2007 759 26,0 71,Итого 4793 30,3 68, Состояние 5 1 ось 2 ось 3 ось Длина периода 1 час 15 мин 5 мин Диапазон значений коэффициента Спирмена -1;-0,75 0,75; 1 0,75; Год Кол-во Вероятность роста, % Вероятность падения, % вхождений 2003 795 72,7 25,2004 791 65,7 32,2005 558 60,8 35,2006 748 64,9 32,2007 531 68,3 29,Итого 3423 66,8 30,Состояние 6 1 ось 2 ось 3 ось Длина периода 1 час 15 мин 5 мин Диапазон значений коэффициента Спирмена -0,4;-0,15 0,75; 1 0,75; Год Кол-во Вероятность роста, % Вероятность падения, % вхождений 2003 766 69,2 29,2004 731 68,8 29,2005 504 64,1 32,2006 613 63,6 34,2007 443 63,2 34,Итого 3057 66,3 31, Состояние 7 1 ось 2 ось 3 ось Длина периода 1 час 15 мин 5 мин Диапазон значений коэффициента Спирмена 0,15;0,4 -0,75;-1 -0,75;-Год Кол-во Вероятность роста, % Вероятность падения, % вхождений 2003 685 31,4 67,2004 624 35,7 61,2005 379 42,2 55,2006 599 35,6 62,2007 426 34,5 63,Итого 2713 35,3 62,Состояние 8 1 ось 2 ось 3 ось Длина периода 1 час 15 мин 5 мин Диапазон значений коэффициента Спирмена 0.75;1 0,15;0,4 0,75;Год Кол-во Вероятность роста, % Вероятность падения, % вхождений 2003 254 81,5 17,2004 230 75,2 23,2005 665 69,5 27,2006 696 68,4 29,2007 485 67,8 30,Итого 2330 70,7 27,

Pages:     | 1 |   ...   | 13 | 14 ||










© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.