Эволюционный алгоритм без целевой функции

В настоящее время я пытаюсь найти хорошие параметры для моей программы (около 16 параметров и выполнение программы занимает около минуты). Эволюционные алгоритмы казались хорошей идеей, и я хотел посмотреть, как они работают.

К сожалению, у меня нет хорошей фитнес-функции, потому что дисперсия моей целевой функции очень высока (я не могу запустить ее достаточно часто, не дожидаясь 2016 года). Однако я могу вычислить, какой набор параметров лучше (проверить две конфигурации друг против друга). Знаете ли вы, есть ли эволюционные алгоритмы, которые используют только эту информацию? Есть ли другие методы оптимизации, более подходящие? Для этого проекта я использую C ++ и MATLAB.

// Обновление: большое спасибо за ответы. Оба выглядят многообещающе, но мне понадобится несколько дней, чтобы оценить их. Извините за задержку.

3

Решение

Если ваш парный тест дает правильное общее упорядочение, то есть если a> = b, а b> = c подразумевает a> = c, и некоторые другие условия . Тогда, может быть, вы можете построить цель ранжирования на лету, и использовать CMA-ES оптимизировать это. CMA-ES является эволюционным алгоритмом и инвариантен к сохраняющему порядок преобразованию значения функции и сохраняющему угол преобразованию входных данных. Кроме того, поскольку это метод второго порядка, его сходимость очень быстрая по сравнению с другими эвристиками поиска без производных, особенно в задачах с большими измерениями, где случайный поиск, такой как генетические алгоритмы, занимает вечность.

3

Другие решения

Если вы можете сравнить решения попарно, то какой-то отбор турниров подход может быть хорошим. Статья Википедии описывает использование его для генетического алгоритма, но его легко применить к эволюционному алгоритму. То, что вы делаете, — это постоянно выбираете небольшой набор решений от населения и проводите турниры среди них. Для простоты размер турнира мог бы быть степенью 2. Если это было 8, тогда пара случайным образом восходит на 8 и сравнивает их, выбирая 4 победителей. Соедините их и выберите 2 победителей. В последнем туре — выберите победителя турнира. Это решение затем может быть видоизменено 1 или более раз, чтобы предоставить элемент (ы) для следующего поколения.

2

По вопросам рекламы [email protected]