Как научиться решать задачи по генетике с примерами
Как решать задачи по генетике на биологии?
Изучение основных законов наследственности и изменчивости организмов является одной из наиболее сложных, но очень перспективных задач, стоящих перед современным естествознанием. В данной статье мы рассмотрим как основные теоретические понятия и постулаты науки, так и разберемся с тем, как решать задачи по генетике.
Актуальность изучения закономерностей наследственности
Две важнейшие отрасли современной науки – медицина и селекция – развиваются благодаря исследованиям ученых-генетиков. Сама же биологическая дисциплина, название которой было предложено в 1906 году английским ученым У. Бетсоном, является не столько теоретической, сколько практической. Всем, кто решит серьезно разобраться в механизме наследования различных признаков (например, таких как цвет глаз, волос, группа крови), придется сначала изучить законы наследственности и изменчивости, а также выяснить, как решать задачи по генетике человека. Именно этим вопросом мы и займемся.
Основные понятия и термины
Каждая отрасль имеет специфический, только ей присущий, набор основных определений. Если речь зашла о науке, изучающей процессы передачи наследственных признаков, под последними будем понимать следующие термины: ген, генотип, фенотип, родительские особи, гибриды, гаметы и так далее. С каждым из них мы встретимся, когда будем изучать правила, объясняющие нам, как решать задачи по биологии на генетику. Но в начале мы изучим гибридологический метод. Ведь именно он лежит в основе генетических исследований. Он был предложен чешским естествоиспытателем Г. Менделем в 19 веке.
Как наследуются признаки?
Закономерности передачи свойств организма были открыты Менделем благодаря опытам, которые он проводил с широко известным растением - горохом посевным. Гибридологический метод представляет собой скрещивание двух единиц, которые отличаются друг от друга одной парой признаков (моногибридное скрещивание). Если в опыте участвуют организмы, которые имеют несколько пар альтернативных (противоположных) признаков, тогда говорят о полигибридном скрещивании. Ученый предложил следующую форму записи хода гибридизации двух растений гороха, которые отличаются окраской семян. А - желтая краска, а – зеленая.
В этой записи F1 – гибриды первого (I) поколения. Они все абсолютно единообразны (одинаковы), так как содержат доминантный ген А, контролирующий желтую окраску семян. Вышеприведенная запись соответствует первому закону Менделя (Правило единообразия гибридов F1). Знание его объясняет учащимся, как решать задачи по генетике. 9 класс имеет программу по биологии, в которой детально изучается гибридологический метод генетических исследований. В ней также рассматривается и второе (ІІ) правило Менделя, называемое законом расщепления. Согласно ему, у гибридов F2, полученных от скрещивания двух гибридов первого поколения друг с другом, наблюдается расщепление в соотношении по фенотипу 3 к 1, а по генотипу 1 к 2 и к 1.
Используя вышеприведенные формулы, вы поймете, как решать задачи по генетике без ошибок, если в их условиях можно применить первый или уже известный II закон Менделя, учитывая, что скрещивание происходит при полном доминировании одного из генов.
Закон независимого комбинирования состояний признаков
Если родительские особи различаются двумя парами альтернативных признаков, например, окраской семян и их формой, у таких растений, как горох посевной, тогда в ходе генетического скрещивания нужно использовать решетку Пиннета.
Абсолютно все гибриды, которые являются первым поколением, подчиняются правилу единообразия Менделя. То есть они желтые, с гладкой поверхностью. Продолжая скрещивать между собой растения из F1, мы получим гибриды второго поколения. Чтобы выяснить, как решать задачи по генетике, 10 класс на уроках биологии использует запись дигибридного скрещивания, применяя формулу расщепления по фенотипу 9:3:3:1. При условии, что гены расположены в различных парах, можно использовать третий постулат Менделя – закон независимых комбинирований состояний признаков.
Как наследуются группы крови?
Механизм передачи такого признака, как группа крови у человека, не соответствует закономерностям, рассмотренным нами ранее. То есть он не подчиняется первому и второму закону Менделя. Это объясняется тем, что такой признак, как группа крови, согласно исследованиям Ландштейнера, контролируется тремя аллелями гена I: А, В и 0. Соответственно генотипы будут такими:
- Первая группа – 00.
- Вторая – АА или А0.
- Третья группа – ВВ или В0.
- Четвертая – АВ.
Ген 0 является рецессивной аллелью к генам А и В. А четвертая группа является результатом кодоминирования (взаимного присутствия генов А и В). Именно это правило нужно обязательно учитывать, чтобы знать, как решать задачи по генетике на группы крови. Но это еще не все. Для установления генотипов детей по группе крови, родившихся от родителей с различными ее группами, воспользуемся таблицей, расположенной ниже.
Теория наследственности Моргана
Возвратимся к разделу нашей статьи «Закон независимого комбинирования состояний признаков», в котором мы рассмотрели, как решать задачи по генетике. Дигибридное скрещивание, как и сам ІІІ закон Менделя, которому оно подчиняется, применимо для аллельных генов, находящихся в гомологичных хромосомах каждой пары.
В середине 20 века американский ученый-генетик Т. Морган доказал, что большинство признаков контролируется генами, которые расположены в одной и той же хромосоме. Они имеют линейное расположение и образуют группы сцепления. И их количество равно именно гаплоидному набору хромосом. В процессе мейоза, приводящего к образованию гамет, в половые клетки попадают не отдельные гены, как считал Мендель, а целые их комплексы, названные Морганом группами сцепления.
Кроссинговер
Во время профазы I (ее еще называют первым делением мейоза) между внутренними хроматидами гомологичных хромосом происходит обмен участками (лукусами). Это явление получило название кроссинговера. Оно лежит в основе наследственной изменчивости. Кроссинговер особенно важен для изучения разделов биологии, занимающихся изучением наследственных заболеваний человека. Применяя постулаты, изложенные в хромосомной теории наследственности Моргана, мы определим алгоритм, отвечающий на вопрос, как решать задачи по генетике.
Сцепленные с полом случаи наследования являются частным случаем передачи генов, которые расположены в одной и той же хромосоме. Расстояние, которое существует между генами в группах сцепления, выражается в процентах - морганидах. А сила сцепления между данными генами прямо пропорциональна расстоянию. Поэтому кроссинговер чаще всего возникает между генами, которые располагаются далеко друг от друга. Рассмотрим явление сцепленного наследования более подробно. Но в начале вспомним, какие элементы наследственности отвечают за половые признаки организмов.
Половые хромосомы
В кариотипе человека они имеют специфическое строение: у женских особей представлены двумя одинаковыми Х-хромосомами, а у мужчин в половой паре, кроме Х-хромосомы, есть еще и У-вариант, отличающийся как по форме, так и по набору генов. Это значит, что он не гомологичен Х-хромосоме. Такие наследственные болезни человека, как гемофилия и дальтонизм, возникают вследствие «поломки» отдельных генов в Х-хромосоме. Например, от брака носительницы гемофилии со здоровым мужчиной возможно рождение такого потомства.
Выше приведенный ход генетического скрещивания подтверждает факт сцепления гена, контролирующего свертываемость крови, с половой Х-хромосомой. Данная научная информация используется для обучения учащихся приемам, определяющим, как решать задачи по генетике. 11 класс имеет программу по биологии, в которой детально рассматриваются такие разделы, как «генетика», «медицина» и «генетика человека». Они позволяют учащимся изучить наследственные болезни человека и знать причины, по которым они возникают.
Взаимодействие генов
Передача наследственных признаков - процесс достаточно сложный. Приведенные ранее схемы становятся понятными только при наличии у учащихся базового минимума знаний. Он необходим, так как обеспечивает механизмы, дающие ответ на вопрос о том, как научиться решать задачи по биологии. Генетика изучает формы взаимодействие генов. Это полимерия, эпистаз, комплементарность. Поговорим о них подробней.
Пример наследования слуха у человека является иллюстрацией такого типа взаимодействия, как комплементарность. Слух контролируется двумя парами различных генов. Первая отвечает за нормальное развитие улитки внутреннего уха, а вторая – за функционирование слухового нерва. В браке глухих родителей, каждый из которых является рецессивной гомозиготой по каждой одной из двух пар генов, рождаются дети с нормальным слухом. В их генотипе присутствуют оба доминантных гена, контролирующих нормальное развитие слухового аппарата.
Плейотропия
Это интересный случай взаимодействия генов, при котором от одного гена, присутствующего в генотипе, зависит фенотипическое проявление сразу нескольких признаков. Например, на западе Пакистана обнаружены человеческие популяции некоторых представителей. У них отсутствуют потовые железы на определенных участках тела. Одновременно у таких людей диагностировали отсутствие некоторых коренных зубов. Они не смогли сформироваться в процессе онтогенеза.
У животных, например, каракульских овец, присутствует доминантный ген W, который контролирует как окраску меха, так и нормальное развитие желудка. Рассмотрим, как наследуется ген W при скрещивании двух гетерозиготных особей. Оказывается, что в их потомстве ¼ ягнят, имеющих генотип WW, погибает из-за аномалий в развитии желудка. При этом ½ (имеющие серый мех) гетерозиготные и жизнеспособные, а ¼ - это особи с черным мехом и нормальным развитием желудка (их генотип WW).
Генотип – целостная система
Множественное действие генов, полигибридное скрещивание, явление сцепленного наследования служат неоспоримым доказательством того факта, что совокупность генов нашего организма является целостной системой, хотя и представлена индивидуальными аллелями генов. Они могут наследоваться по законам Менделя, независимо или локусами, сцеплено подчиняясь постулатам теории Моргана. Рассматривая правила, отвечающие за то, как решать задачи по генетике, мы убедились, что фенотип любого организма формируется под воздействием как аллельных, так и неаллельных генов, влияющих на развитие одного или нескольких признаков.
Как решать сложные проблемы с помощью генетических алгоритмов
Какая связь между эволюционными алгоритмами и материнской природой и как они могут помочь в решении сложных вычислительных задач?
Википедия определяет эволюцию как «изменение наследственных характеристик биологических популяций на протяжении последующих поколений». Хотя это часто связано с матерью-природой, животными или людьми, это также часть компьютерного мира.
В следующем посте мы исследуем эволюцию с помощью генетических алгоритмов и посмотрим, как они могут помочь нам быстрее решать проблемы.
Новое сообщение: Как решать сложные проблемы с помощью генетических алгоритмов https://t.co/81zlwfQyHL pic.twitter.com/Ln1wEXlVvT
- OverOps (@overopshq) 6 апреля 2017 г.
Естественный отбор в коде
Генетические алгоритмы имитируют процесс эволюции в природе, предлагая превосходные решения проблем. Естественный отбор играет важную роль в этом процессе - дифференцированном выживании и воспроизводстве особей из-за различий в фенотипах.
Согласно Чарльзу Дарвину, также известному как «отец» эволюционной мысли, естественный отбор является ключевой силой, которая помогает сохранить хорошие изменения и искоренить плохие.Это помогает популяции со временем улучшаться.
Генетические алгоритмы имитируют силу эволюции с помощью кода, наряду с естественным отбором, чтобы решать проблемы лучше и быстрее. В сфере вычислений наша популяция состоит из набора решений конкретной проблемы. Когда у нас есть популяция, мы можем перейти к процессу эволюции, который состоит из следующих шагов:
1. Пригодность - оценка каждого решения, которая показывает, насколько оно хорошо.
2. Выбор - выбор пары родительских решения в соответствии с их значением пригодности
3.Кроссовер - разведение отобранных родителей для получения потомства.
4. Мутация - мутация потомства с очень низкой вероятностью.
Процесс эволюции здесь приводит к поиску «лучшего» решения проблемы, по крайней мере, мы надеемся на это.
Эволюция задачи коммивояжера
Выбирая использование генетических алгоритмов (которые являются частью эволюционных алгоритмов), первое, что нам нужно понять, это как представить индивидуальное решение в нашей популяции.Чтобы понять, как это сделать, мы воспользуемся задачей коммивояжера (TSP):
. Учитывая список городов и расстояния между каждой парой городов, какой самый короткий маршрут, который посещает каждый город ровно один раз. ?
Или, другими словами, проблема линии Uber или Lyft 😉

Решение проблемы можно представить в виде упорядоченного списка городов, каждый из которых описывает желаемый маршрут.И важно отметить, что каждый город должен быть указан ровно один раз.
В этом примере совокупность нашего решения состоит из набора списков городов. Чтобы сформировать наше первое поколение, мы случайным образом сгенерируем набор решений, и нам нужно убедиться, что каждое сгенерированное решение является действительным (и является возможным решением проблемы). Мы называем эти решения хромосомами .
Следующим шагом будет включение этих хромосом в процесс эволюции и использование силы естественного отбора для получения лучшей популяции.
Чтобы достичь этого, нам сначала нужно оценить каждую хромосому и дать лучшим из них более высокие вероятности рождения детей. Это выполняется функцией Fitness Function , которая получает хромосому и возвращает оценку, которая показывает, насколько хороша хромосома с точки зрения проблемы. Возвращаясь к нашему примеру, функция может быть суммой расстояний в маршруте.
На этом этапе мы берем оценки, и каждая хромосома получает относительную вероятность быть выбранной в качестве родительской для следующего поколения.И как мы упоминали ранее, у лучших хромосом будет больше шансов. Или, другими словами, здесь мы используем естественный отбор, и теперь пора перейти к процессу эволюции.
Каждый раз создавая лучшее решение
Наша основная цель - выбрать «родителей» на основе их вероятностей (рассчитанных по их показателям пригодности), развести их и передать рожденного ребенка следующему поколению. Процесс размножения является производным от проблемы, когда нам нужно найти способ объединить родителей в действительное решение.
Когда вы пытаетесь развести родителей, первая идея, которая приходит в голову, - взять по 50% с каждого. Однако в задаче коммивояжера (TSP) это может привести к недопустимому решению, в котором каждый город будет появляться более одного раза.
Итак, как мы можем решить эту проблему?
Взяв первую часть у первого родителя, а затем забрав остальные города в соответствии с их порядком появления во втором родительском решении. Мы можем быть настолько креативными, насколько захотим, до тех пор, пока мы создаем правильное решение, которое объединяет обоих родителей.
Прежде чем мы сможем передать созданного нами ребенка в «следующее поколение», нам нужно применить мутацию с очень низкой вероятностью. Как мы можем это сделать? Что ж, это зависит от проблемы, с которой мы сталкиваемся, и, как и раньше, нам нужно убедиться, что мутированная хромосома по-прежнему является верным решением.
В нашем примере TSP это означает, что мы можем нарисовать два города и переключить их - измененный маршрут действителен, поскольку каждый город появляется один раз.
Круг жизни
В отличие от матери-природы, мы ограничены объемом нашей памяти, а это означает, что мы хотим работать с населением фиксированного размера.Мы начинаем со стабильного пула из N родителей, каждый раз разыгрывая 2 родителей, создаем ребенка и возвращаем родителей обратно в пул. Мы проделываем этот процесс N раз, чтобы получить N потомков, что приведет нас к следующему поколению. N может находиться в диапазоне от 10 до 100 в соответствии с нашим пределом памяти.
Затем, как и в круге жизни, мы вычислим функцию приспособленности для каждого ребенка, зададим ей вероятности выбора, проведем эволюцию, получим новое поколение и так далее. Этот процесс может продолжаться вечно.
Когда мы остановимся? Это в значительной степени зависит от нас. Например, мы можем остановиться:
- После создания X поколений
- Если мы применим ограничение по времени
- Как только мы достигнем порога пригодности (который мы установили заранее)
В TSP мы могли бы установить порог 50 Миля, что означает, что как только был найден маршрут короче указанного, мы получили удовлетворительный ответ на возникшую проблему.
Когда и почему мы должны использовать генетические алгоритмы?
Теперь, когда мы знаем, как работают генетические алгоритмы, пора задаться вопросом, когда нам действительно следует их использовать.Самый распространенный вариант использования - решение проблем оптимизации, когда мы сталкиваемся с большим пространством поиска, когда другие алгоритмы поиска не работают. Но почему мы можем думать, что генетические алгоритмы будут работать лучше?
Когда мы думаем об этом, мы просто начинаем со случайного набора решений, надеясь в конечном итоге найти хорошее. Такое ощущение, что мы рассчитываем только на удачу, чтобы наш процесс заработал.
Как заставить это работать? Используя:
1. Mutation - это способствует разнообразию, которое распределяет хромосомы по всему пространству поиска, помогая нам обнаружить как можно больше холмов
2. Selection и Crossover - это способствует однородности за счет скрещивания наиболее эффективных хромосом с более высокой вероятностью.
Selection и Crossover помогут нам «взобраться в гору», а все три элемента вместе взятые помогут справиться с большим количеством решений, которые мы получим.
Мы знаем, как и когда использовать генетические алгоритмы, осталось только понять, можем ли мы использовать их для решения стоящей перед нами проблемы. Есть 2 предпосылки, которые делают нашу задачу подходящей для использования генетических алгоритмов:
1.Нам нужно понять, как представить решение проблемы
2. У нас должна быть возможность рассчитать непрерывную пригодность
Если наша проблема соответствует этим критериям, все готово. Есть несколько хороших примеров проблем, которые помогли решить генетические алгоритмы, но наш любимый - развивающаяся Мона Лиза, в которой алгоритм создает приближение Моны Лизы с помощью 250 полупрозрачных кругов.
Если вы хотите начать работу с генетическими алгоритмами, существует множество библиотек, которые вы можете попробовать.Две наиболее распространенные библиотеки, которые вам стоит попробовать, - это Jenetics и JGAP.
Заключительные мысли
Одна из самых крутых особенностей генетических алгоритмов - это то, что это общая структура, поэтому нам не обязательно быть экспертами в конкретной области проблемы, с которой мы сталкиваемся. Пока у нас есть необходимое предварительное условие (представление решения проблемы и расчет непрерывной пригодности), мы можем использовать существующую библиотеку и получить лучшие решения.
Этот пост основан на моей лекции по генетическим алгоритмам на BeeScala 2016.Получите слайды здесь.
За время работы в OverOps. Цофия занимала должность главы отдела разработки приложений. Она является основателем группы лидеров исследований и разработок в Тель-Авиве, а в свободное время любит собирать безделушки со всего мира. .
Интеллект определяется генетикой? - Genetics Home Reference
Как и большинство аспектов человеческого поведения и познания, интеллект представляет собой сложную черту, на которую влияют как генетические факторы, так и факторы окружающей среды.
Интеллект сложно изучать, отчасти потому, что его можно определять и измерять разными способами. Большинство определений интеллекта включают способность учиться на собственном опыте и адаптироваться к меняющимся условиям. Элементы интеллекта включают способность рассуждать, планировать, решать проблемы, абстрактно мыслить и понимать сложные идеи.Многие исследования полагаются на показатель интеллекта, называемый коэффициентом интеллекта (IQ).
Исследователи провели множество исследований по поиску генов, влияющих на интеллект. Многие из этих исследований были сосредоточены на сходствах и различиях IQ в семьях, особенно на приемных детей и близнецов. Эти исследования показывают, что генетические факторы лежат в основе примерно 50 процентов разницы в интеллекте людей. В других исследованиях изучались вариации во всем геноме многих людей (подход, называемый общегеномными ассоциативными исследованиями или GWAS), чтобы определить, связаны ли какие-либо определенные области генома с IQ.Эти исследования не выявили окончательно какие-либо гены, которые играют важную роль в различиях интеллекта. Вполне вероятно, что задействовано большое количество генов, каждый из которых вносит лишь небольшой вклад в интеллект человека.
На интеллект также сильно влияет окружающая среда. Факторы, связанные с домашним окружением ребенка и его воспитанием, образованием и доступностью учебных ресурсов, а также питанием, среди прочего, способствуют интеллекту. Окружающая среда и гены человека влияют друг на друга, и бывает сложно отделить влияние окружающей среды от воздействия генетики.Например, если IQ ребенка аналогичен IQ его или ее родителей, связано ли это сходство с генетическими факторами, передаваемыми от родителей к ребенку, с общими факторами окружающей среды или (что наиболее вероятно) с комбинацией обоих? Ясно, что факторы окружающей среды и генетические факторы играют роль в определении интеллекта.
Статьи в научных журналах для дальнейшего чтения
Уважаемый IJ. Интеллект. Curr Biol. 2013 августа 19; 23 (16): R673-6. DOI: 10.1016 / j.cub.2013.07.021. PubMed: 23968918.Полный текст можно получить бесплатно у издателя: http://www.sciencedirect.com/science/article/pii/S0960982213008440
Deary IJ, Johnson W, Houlihan LM. Генетические основы человеческого интеллекта. Hum Genet. 2009 Июль; 126 (1): 215-32. DOI: 10.1007 / s00439-009-0655-4. Epub 2009 18 марта. Обзор. PubMed: 19294424.
Plomin R, Deary IJ. Генетика и различия интеллекта: пять специальных выводов. Мол Психиатрия. 2015 Февраль; 20 (1): 98-108. DOI: 10.1038 / mp.2014.105. Epub 2014 16 сентября. Обзор. PubMed: 25224258.Полный текст доступен бесплатно в PubMed Central: PMC4270739.
Sternberg RJ. Интеллект. Диалоги Clin Neurosci. 2012 Март; 14 (1): 19-27. Обзор. PubMed: 22577301. Полный текст можно бесплатно получить в центре PubMed: PMC3341646
.Эволюция продавца: полное руководство по генетическому алгоритму для Python | Эрик Штольц
Проблема
В этом руководстве мы будем использовать GA, чтобы найти решение задачи коммивояжера (TSP). TSP описывается следующим образом:
Иллюстрация потенциального решения TSP (Автор Xypron [Общественное достояние], из Wikimedia Commons)«Учитывая список городов и расстояния между каждой парой городов, каков самый короткий маршрут, который проходит через каждый город и возвращается в исходный город?»
Учитывая это, следует помнить о двух важных правилах:
- Каждый город нужно посетить ровно один раз
- Мы должны вернуться в начальный город, поэтому наше общее расстояние должно быть рассчитано соответственно
Подход
Давайте начнем с нескольких определений, перефразированных в контексте TSP:
- Ген: город (представлен как координаты (x, y))
- Индивидуум (также известный как «хромосома»): единственный маршрут, удовлетворяющий вышеуказанным условиям
- Население: набор возможных маршрутов (т.е.д., совокупность особей)
- Родители: два маршрута, которые объединены для создания нового маршрута
- Пул спаривания: набор родителей, которые используются для создания нашей следующей популяции (таким образом, создавая следующее поколение маршрутов. )
- Фитнес: функция, которая сообщает нам, насколько хорош каждый маршрут (в нашем случае, насколько короткое расстояние)
- Мутация: способ внести изменения в нашу популяцию путем случайной смены местами двух городов на маршруте
- Элитарность: способ перенести лучших людей в следующее поколение
Наша общая оценка будет состоять из следующих этапов:
1.Создайте популяцию
2. Определите приспособленность
3. Выберите пул спаривания
4. Порода
5. Мутируйте
6. Повторите
Теперь давайте посмотрим, как это работает.
Хотя каждая часть нашего GA создается с нуля, мы будем использовать несколько стандартных пакетов, чтобы упростить задачу:
import numpy as np, random, operator, pandas as pd, matplotlib.pyplot as plt
Create two классы: City and Fitness
Сначала мы создаем класс City
, который позволит нам создавать и обрабатывать наши города.Это просто наши координаты (x, y). Внутри класса City мы добавляем вычисление расстояния
(с использованием теоремы Пифагора) в строке 6 и более чистый способ вывода городов в виде координат с __repr__
в строке 12.
Мы также создадим Фитнес
класс. В нашем случае мы будем рассматривать пригодность как обратную величину расстояния маршрута. Мы хотим минимизировать расстояние маршрута, поэтому более высокий показатель пригодности лучше. В соответствии с Правилом № 2 нам нужно начинать и заканчивать в одном и том же месте, поэтому этот дополнительный расчет учитывается в строке 13 расчета расстояния.
Создание популяции
Теперь мы можем создать нашу начальную популяцию (также известную как первое поколение). Для этого нам нужен способ создания функции, которая создает маршруты, удовлетворяющие нашим условиям ( Примечание: мы создадим наш список городов, когда мы фактически запустим GA в конце учебника ). Чтобы создать человека, мы случайным образом выбираем порядок, в котором мы посещаем каждый город:
В результате получается один человек, но нам нужна полная популяция, поэтому давайте сделаем это в нашей следующей функции.Это так же просто, как прохождение функции createRoute
, пока у нас не будет столько маршрутов, сколько мы хотим для нашей популяции.
Примечание: мы должны использовать эти функции только для создания начальной генеральной совокупности. Последующие поколения будут производиться путем разведения и мутаций.
Определите физическую форму
Затем начинается эволюционное веселье. Чтобы смоделировать наше «выживание наиболее приспособленных», мы можем использовать Fitness
для ранжирования каждого человека в популяции.На выходе мы получим упорядоченный список с идентификаторами маршрутов и каждой связанной оценкой пригодности.
Выбор пула для спаривания
Есть несколько вариантов выбора родителей, которые будут использоваться для создания следующего поколения. Наиболее распространенные подходы - это либо пропорциональный выбор по пригодности (также известный как «выбор колеса рулетки»), либо выбор по турниру :
- Пропорциональный выбор по пригодности (версия, реализованная ниже): фитнес каждого человека по отношению к популяции используется для определения вероятности выбора.Думайте об этом как о взвешенной по фитнесу вероятности быть выбранным.
- Выбор турнира : из совокупности случайным образом выбирается определенное количество людей, и в качестве первого родителя выбирается тот, у кого самая высокая физическая форма в группе. Это повторяется для выбора второго родителя.
Еще одна особенность дизайна, которую следует учитывать, - это использование элитарности . При элитарности наиболее успешные люди из популяции автоматически переходят к следующему поколению, обеспечивая сохранение наиболее успешных людей.
Для наглядности мы создадим пул сопряжения в два этапа. Во-первых, мы воспользуемся выходными данными rankRoutes
, чтобы определить, какие маршруты выбрать в нашей функции выбора
. В строках 3–5 мы настраиваем колесо рулетки, вычисляя относительный вес физической формы для каждого человека. В строке 9 мы сравниваем случайно выпавшее число с этими весами, чтобы выбрать наш пул спаривания. Мы также хотим придерживаться наших лучших маршрутов, поэтому мы вводим элитарность в строке 7. В конечном итоге функция выбора
возвращает список идентификаторов маршрутов, который мы можем использовать для создания пула сопряжения в функции matingPool
.
Теперь, когда у нас есть идентификаторы маршрутов, которые будут составлять наш пул сопряжения из функции selection
, мы можем создать пул сопряжения. Мы просто извлекаем выбранных людей из нашей популяции.
Порода
Создав наш брачный пул, мы можем создать следующее поколение в процессе, который называется кроссовер (также известный как «разведение»). Если бы наши индивиды были строками из нулей и единиц, и наши два правила не применялись (например, представьте, что мы решаем, включать ли акции в портфель), мы могли бы просто выбрать точку пересечения и соединить две строки вместе, чтобы произвести потомство.
Однако TSP уникален тем, что нам нужно включить все местоположения ровно один раз. Чтобы соблюдать это правило, мы можем использовать специальную функцию разведения под названием заказанный кроссовер . В упорядоченном кроссовере мы случайным образом выбираем подмножество первой родительской строки (см. Строку 12 в функции для породы
ниже), а затем заполняем оставшуюся часть маршрута генами от второго родителя в том порядке, в котором они появляются, без дублирования. любые гены в выбранном подмножестве от первого родителя (см. строку 15 в , функция породы
ниже).
Затем мы обобщим это, чтобы создать нашу популяции потомков. В строке 5 мы используем элитарность, чтобы сохранить лучшие маршруты от текущего населения. Затем в строке 8 мы используем функцию порода
, чтобы заполнить оставшуюся часть следующего поколения.
Mutate
Мутация выполняет важную функцию в GA, поскольку помогает избежать локальной конвергенции за счет введения новых маршрутов, которые позволят нам исследовать другие части пространства решений.Подобно кроссоверу, TSP уделяет особое внимание мутации. Опять же, если бы у нас была хромосома из 0 и 1, мутация просто означала бы присвоение низкой вероятности изменения гена с 0 на 1 или наоборот (чтобы продолжить предыдущий пример, запас, который был включен в портфель потомков, равен теперь исключен).
Однако, поскольку мы должны соблюдать наши правила, мы не можем отбрасывать города. Вместо этого мы будем использовать замену . Это означает, что с заданной низкой вероятностью два города поменяются местами на нашем маршруте.Мы сделаем это для одного человека в нашей функции mutate
:
Затем мы можем расширить функцию mutate
для работы с новой популяцией.
Повторите
Мы почти у цели. Давайте соберем эти части вместе, чтобы создать функцию, которая порождает новое поколение. Сначала мы ранжируем маршруты в текущем поколении, используя rankRoutes
. Затем мы определяем наших потенциальных родителей, запустив функцию selection
, которая позволяет нам создать пул спаривания с помощью функции matingPool
.Наконец, мы затем создаем наше новое поколение, используя функцию BreedPopulation
, а затем применяем мутацию с помощью функции mutatePopulation
.
Эволюция в движении
Наконец-то у нас есть все необходимое для создания нашей GA! Все, что нам нужно сделать, это создать начальную популяцию, а затем мы можем перебрать столько поколений, сколько захотим. Конечно, мы также хотим увидеть лучший маршрут и то, насколько мы улучшились, поэтому мы фиксируем начальное расстояние в строке 3 (помните, что расстояние является обратной величиной пригодности), конечное расстояние в строке 8 и лучший маршрут. в строке 9.
Когда все готово, решить TSP так же просто, как два шага:
Во-первых, нам нужен список городов, между которыми можно путешествовать. Для этой демонстрации мы создадим список из 25 случайных городов (на первый взгляд небольшое количество городов, но грубой силы придется протестировать более 300 секстиллионов маршрутов!):
Затем запуск генетического алгоритма представляет собой одну простую строку кода. . Здесь искусство встречается с наукой; вы должны увидеть, какие предположения работают лучше всего для вас. В этом примере у нас 100 особей в каждом поколении, 20 элитных особей, частота мутации 1% для данного гена и 500 поколений:
Бонусная функция: график улучшения
Приятно знать, как мы начинали и конечное расстояние и предлагаемый маршрут, но мы были бы упущены, если бы не увидели, как наше расстояние улучшилось с течением времени.С помощью простой настройки нашей функции GeneticsAlgorithm
мы можем сохранить кратчайшее расстояние от каждого поколения в списке progress
, а затем построить график результатов.
Запустите GA так же, как и раньше, но теперь с использованием недавно созданной функции GeneticAlgorithmPlot
:
Я надеюсь, что это был забавный практический способ научиться создавать собственный GA . Попробуйте сами и посмотрите, насколько коротким вы сможете проехать.Или пойти дальше и попробовать реализовать ГА для другого набора задач; посмотрите, как вы измените породу
и мутируют функции
для обработки других типов хромосом. Мы здесь только поверхностно!
Решение проблем - выявление и структурирование проблем
Эта страница является продолжением раздела «Решение проблем», в котором решение проблем рассматривается как концепция и описываются этапы, используемые для успешного решения проблем.
Эта страница охватывает первые два этапа процесса решения проблемы: Определение проблемы и Структурирование проблемы .
Этап первый: определение проблемы
Прежде чем приступить к решению проблемы, необходимо определить ее существование.Это может показаться очевидным утверждением, но довольно часто проблемы оказывают влияние в течение некоторого времени, прежде чем они будут обнаружены или доведены до сведения того, кто может что-то с ними сделать.
Во многих организациях можно создать официальные системы связи, чтобы сообщать о проблемах на ранней стадии, но неизбежно эти системы не всегда работают. После определения проблемы необходимо определить ее точный характер: каковы цель и барьерные компоненты проблемы? Можно выделить некоторые из основных элементов проблемы, и следует предпринять первую попытку определить проблему.Это определение должно быть достаточно ясным, чтобы вы могли легко объяснить другим природу проблемы.
ЦЕЛЬ (хочу ...) | БАРЬЕР (но…) |
Скажите другу, что мы находим их что-то раздражающее. | Я не хочу обижать их чувства. |
Купите новый компьютер. | Я не уверен, какую модель купить или сколько денег разумно потратить. |
Открытие нового бизнеса. | Не знаю, с чего начать. |
Взгляд на проблему с точки зрения целей и препятствий может предложить эффективный способ определения многих проблем и разделения более крупных проблем на более решаемые подзадачи.
Иногда становится очевидным, что то, что кажется единственной проблемой, точнее, является серией подзадач. Например, в задаче:
«Мне предложили работу, которую я хочу, но у меня нет транспорта, чтобы туда добраться, и у меня нет денег, чтобы купить машину.”
«Я хочу устроиться на работу» (основная проблема)
«Но у меня нет транспорта, чтобы добраться туда» (подзадача 1)
«И у меня недостаточно денег, чтобы купить машину» (дополнительная -задача 2)
Полезные способы описания более сложных проблем показаны в разделе « Структурирование проблемы» ниже.
На этом первом этапе решения проблемы важно получить начальное рабочее определение проблемы. Хотя его, возможно, придется адаптировать на более позднем этапе, хорошее рабочее определение позволяет описать проблему другим людям, которые могут быть вовлечены в процесс решения проблемы.Например:
Проблема | Рабочее определение |
«Я хочу устроиться на работу, но у меня нет транспорта, чтобы добраться туда, и у меня нет достаточно денег, чтобы купить машину». | «Я хочу заняться этой работой». |
Этап второй: структурирование проблемы
Второй этап процесса решения проблемы включает в себя более глубокое понимание проблемы.Во-первых, нужно проверить факты.
Проблема | Проверка фактов |
«Я хочу устроиться на работу, но у меня нет транспорта, чтобы добраться туда. , и у меня нет денег, чтобы купить машину». | «Я действительно хочу работу?» «Неужели у меня нет доступа к транспорту?» «Могу ли я позволить себе купить машину?» |
Необходимо задать вопросы, является ли заявленная цель реальной целью? Являются ли барьеры настоящими барьерами и какие еще препятствия существуют? В этом примере сначала кажется, что проблема:
Цель | Барьер 1 | Барьер 2 |
Принять работу | Нет транспорта | Нет денег |
Это также хорошая возможность взглянуть на отношения между ключевыми элементами проблемы .Например, в задаче «Работа-Транспорт-Деньги» между всеми элементами существует сильная связь.
Если посмотреть на все взаимосвязи между ключевыми элементами, выясняется, что проблема в большей степени связана с тем, как достичь любой из трех вещей, например, работы, транспорта или денег, потому что решение одной из этих подзадач, в свою очередь, решит другие.
Этот пример показывает, насколько полезно иметь представление о проблеме.
Проблемы можно представить следующим образом:
- Визуально: с помощью картинок, моделей или диаграмм.
- Устно: описать проблему словами.
Визуальные и вербальные представления включают:
- Схемы цепей
- Блок-схемы
- Древовидные диаграммы
- Списки
Цепные диаграммы
Цепные диаграммы - это эффективный и простой способ представления проблем с помощью комбинации диаграмм и слов. Элементы задачи изложены словами, обычно помещены в рамки и расположены в разных местах на листе бумаги, с использованием линий для обозначения взаимосвязи между ними.
Цепные диаграммы- это простейший тип, в котором все элементы представлены в виде упорядоченного списка, причем каждый элемент связан только с элементами непосредственно до и после него. Диаграммы цепочек обычно представляют последовательность событий, необходимых для решения. Простой пример цепной диаграммы иллюстрирует пример работы-транспорта-денег следующим образом:
ПОЛУЧИТЬ ДЕНЬГИ | ПОЛУЧИТЬ ТРАНСПОРТ | ПРИНЯТЬ НА РАБОТУ |
Блок-схемы
Блок-схемы позволяют включать ветви, складки, петли, точки принятия решения и многие другие взаимосвязи между элементами. На практике блок-схемы могут быть довольно сложными, и существует множество соглашений о том, как они нарисованы, но, как правило, простые диаграммы легче понять и помогают легче «увидеть» проблему.
Древовидные диаграммы
Древовидные диаграммыи их близкий родственник, дерево решений , представляют собой способы представления ситуаций, в которых необходимо учитывать ряд вариантов или различных возможных событий. Эти типы диаграмм особенно полезны для рассмотрения всех возможных последствий решений.
Помните, что цель визуализации - прояснить проблему. Чрезмерно сложные диаграммы только сбивают с толку и затрудняют понимание проблемы.
Объявление
Перечисление элементов проблемы также может помочь представить приоритеты, порядок и последовательность в проблеме. Цели могут быть перечислены в порядке важности, а препятствия - в порядке сложности. Можно составить отдельные списки связанных целей или препятствий. Барьеры могут быть перечислены в том порядке, в котором они должны быть решены, или элементы проблемы могут быть классифицированы по-разному.Есть много возможностей, но цель - дать более четкое представление о проблеме.
Проблема |
«Я хочу устроиться на работу, но у меня нет транспорта, чтобы добраться туда, и у меня нет денег, чтобы купить машину». |
Порядок устранения препятствий |
1. Получите деньги |
Визуальное представление и рабочее определение вместе значительно упрощают описание проблемы другим.Многие проблемы будут намного сложнее, чем приведенный здесь пример.
.