Я пишу приложение для составления плана автоматического обучения в университете и использую для этого генетического алгоритма. Но теперь я столкнулся с некоторыми проблемами с реализацией.генетический алгоритм для составления расписания занятий
В самом начале я предположил, что у нас есть классы с продолжительностью 1 временной интервал (временной интервал = 1 час), и мы можем просто поместить его в массив (представляет сетку расписания: 1-й массив с емкостью числаOfRooms * numberOfDays * numberOfTimeslots) и может также выполнять мутацию и кроссовер без проблем.
Но я знаю, что хочу улучшить приложение и позволить иметь классы с продолжительностью нескольких временных интервалов. Здесь возникает много проблем:
Как мы можем поместить один объект класса в массив и заполнить все слоты (несколько ячеек массива), какой класс должен занимать (один объект - несколько ячеек)? И в соответствии с тем, как мы будем помещать его в массив, как можно выполнить операцию мутации и кроссовера? Спасибо заранее! Я очень ценю вашу помощь!
hm, не уверенный, что пересечение только классов с равной продолжительностью является хорошей идеей, потому что не оба родителя могут иметь класс с такой продолжительностью в регионе, который мы перейдем. Итак, в идее с структурой DailyRoomOccupation вы предлагаете хранить список (с размером номера), заполненный объектами DailyRoomOccupation, которые, в свою очередь, имеют классы, запланированные для комнаты, не так ли? И не могли бы вы объяснить, как мы можем выполнить кроссовер и мутацию, если –
... продолжение , если мы будем выполнять эти операторы в DailyRoomOccupation, тогда мы не сможем переупорядочить классы внутри объекта с помощью этих операторов, если мы будем выполнять операции с классы в DailyRoomOccupation, то мы сталкиваемся с проблемой, которую я описал в реу очень рано ( –