Эволюционные алгоритмы: оптимальные разбивки вторичного заселения

Вы можете использовать union all:

SELECT  IF(sum(input) , productName, null) productName, sum(input) input,
        IF(sum(output), productName, null) productName, sum(output) output
FROM    (
            SELECT productName, QTY input, null output
            FROM input
            UNION ALL
            SELECT productName, null, QTY
            FROM output
        ) as sub
GROUP BY productName

sqlfiddle

Это будет работать даже в ситуации, когда у вас есть выход для продукта, но нет вход. Это может произойти, когда данные касаются транзакций, скажем, одного месяца, но там, где в начале этого месяца уже есть запас.

9
задан Jon Seigel 17 May 2010 в 03:15
поделиться

7 ответов

Я первоначально пытался смоделировать то, что я думал, что органические системы были похожи. В конечном счете решенный это было бесполезно, и пошло более агрессивное, с сохраненными 10%, видоизмененных 20%, 60%, скрещенных и случайных 10%.

Затем я заметил, что мои лучшие 10% был все примерно идентичен. Таким образом, я увеличил случайное до 30%. Это помогло некоторым, но не очень.

Я действительно пробовал несколько остров, и пропуск поколения и пересев, который дал лучшие результаты, но все еще очень неудовлетворительный, очень мало вариации в лучших 10%, сумасшедших длинных числах поколений для получения любых результатов. Главным образом код изучил, как взломать мою оценку фитнеса.

Действительно легко получить главных исполнителей, не волнуйтесь об имении в наличии слишком многих из них. Гибриды помогают срезать положительные и отрицательные черты, таким образом, они полезны, но действительно то, что Вы хотите получить, является большим количеством хороших, случайных порожденный в. Внимание на мутации и новый randoms, чтобы ввести функции и позволить гибридам и главным исполнителям просто отслеживает лучшее и совершенствовало их более медленно. IE: материал на основе последнего поколения просто находит, лучшие локальные максимумы, randoms находят лучшие глобальные максимумы.

Я все еще полагаю, что оптимальные ответы на Ваш вопрос могут быть найдены путем наблюдения природных явлений, такой как в недавней статье относительно случайности курсов полета плодовой мушки, так, чтобы мог удаться.

Вероятно, лучший ответ должен просто выполнить его и настроить его, не бойтесь настроить его довольно в большой степени, население устойчиво. Удостоверьтесь, что Вы реализуете способ сохранить и продолжиться.

6
ответ дан 4 December 2019 в 09:15
поделиться

Лучшие ресурсы, с которыми я столкнулся для GA и EA, были книгами John Koza по Генетическому Программированию. Он затрагивает тему подробно - методы для кодирования генома, случайной мутации, размножения, настраивая функцию фитнеса.

Лично я только записал маленькое небольшое количество средств моделирования в педагогических целях. То, что я нашел, было то, что то, как я настроил те проценты, было связано с подробными сведениями функции фитнеса, которую я использовал, сколько случайной мутации я представил и как 'умный' я попытался сделать мутацию и размножающийся - я нашел, что, чем менее 'умный' я пытался для создания мутатора и перекрестной логики, тем быстрее население улучшило свой счет фитнеса - я также нашел, что был слишком консервативен в вероятности мутации - мои начальные выполнения поражают локальные максимумы и были нелегко выходить из них.

Ни одно из этого не дает Вам конкретные ответы, но я не думаю, что существуют конкретные ответы, GA непредсказуем по своему характеру, и настраивающий те виды параметров может все еще быть определенное искусство. Конечно, Вы могли всегда пробовать meta-GA, с помощью тех параметров в качестве хромосомы, ища настройки, которые производят более быстрый фитнес в основном GA, который Вы выполняете.

Зависит от того, как 'meta' Вы хотите добраться.

7
ответ дан 4 December 2019 в 09:15
поделиться

Это - горячо обсужденный (в литературе и Melanie, и др. книгах) тема, которая, кажется, очень проблемно-ориентирована. Какие работы для одной проблемы одного типа с n параметрами почти никогда не будут работать на другую проблему, другой домен или другой параметрический набор.

Так, как предложенный TraumaPony, настройте его сами для каждой проблемы, Вы решаете или пишете что-то для оптимизации его для Вас. Лучшая вещь, которую можно сделать, отслеживают все "вертение кнопки" и подстраивающие эксперименты, таким образом, можно планировать ландшафт решения и получить ощущение того, как оптимизировать в том пространстве быстро. Также попробуйте альтернативные методы как преодоление подъема, таким образом, у Вас может быть базовая линия для избиения.

@Kyle Burton: перекрестное соединение по сравнению с уровнями мутации также постоянно обсуждается в каждом классе проблем, переданных ГАЗУ и GP.

4
ответ дан 4 December 2019 в 09:15
поделиться

Принятие Вас имеет метод для определения количества главных исполнителей процента на X %, я предложил бы, чтобы вместо того, чтобы использовать твердый кодированный порог Вы проанализировали распределение производительности и сделали Ваше сокращение где-нибудь в диапазоне первого основного понижения производительности и затем настройки Ваших помесей, мутаций и новых организмов для заполнения разрывов. Таким образом, если у Вас есть очень "продуктивное" выполнение, в котором много изменений было успешно, Вы не бросаете значительное количество высоких исполнителей. Кроме того, если у Вас есть "непроизводительное" выполнение, можно фрагментировать больше существующих организмов в пользу большего количества более новых организмов, которые должны занимать их место.

2
ответ дан 4 December 2019 в 09:15
поделиться

Казалось бы, было бы несколько предложений ответов с помощью 2-го GA для определения оптимальных параметров для 1-го GA без упоминания о том, как определить оптимальные параметры для 2-го. Я не могу не удивлению о религиозных верованиях тех, которые предлагают этот подход...

1
ответ дан 4 December 2019 в 09:15
поделиться

Вы знаете то, что Вы могли сделать... Вы могли записать генетический алгоритм, чтобы решить что оптимальное распределение.

Но, обычно я сохраняю лучшие 12% и 28%-е гибриды; с 30% каждый для других.

0
ответ дан 4 December 2019 в 09:15
поделиться

Я добился некоторого успеха в увеличении разнообразия популяции, установив мутацию и кроссовер из пары гены из родительских хромосом.

Это работает, пока частота мутаций не упадет до нуля; поскольку вполне вероятно, что для этого потребуется периодическое эволюционное давление, вам следует попытаться обеспечить минимальную скорость этих генов.

На практике я выбрал многохромосомный генотип. Одна хромосома закодирована для репродуктивной функции другого. Меньшая «репродуктивная хромосома» имела разумные фиксированные показатели для мутации и кроссовера.

Я обнаружил, что это остановит классическое плато и сближение популяции.

Помимо этого, я склонен делать как кроссовер, так и мутацию для каждый ребенок.

Для поколений ГА, Я стараюсь избегать элитарности в целом, но, заселяя несколько островов, я сохраняю высшую элиту каждого острова. Когда острова объединяются, тогда все элиты могут размножаться вместе.

2
ответ дан 4 December 2019 в 09:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: