Составление учебных планов на основе генетических алгоритмов

Автор работы: Пользователь скрыл имя, 10 Ноября 2011 в 11:33, дипломная работа

Краткое описание

С оптимизацией человек сталкивается постоянно в своей жизни, порой даже не замечая этого. Он выбирает, на каких станциях метро нам лучше пересесть в другой поезд, чтобы добраться до места назначения быстрее и с меньшим числом пересадок. Казалось бы, простая задача, с которой каждый справляется с большим или меньшим успехом. Но даже это простой пример показывает, как неоднозначен выбор. Приходиться проводить оптимизацию по двум критериям – время и количество пересадок. А если таких критериев не 2, а несколько десятков, причём один критерий зависит от определённого количества других, то тут уже не так просто справиться с задачей, найти лучшее сочетание значений этих критериев. Не помогает даже большой опыт человека в области, в которой решается задача оптимизации.

Содержание работы

ВВЕДЕНИЕ 3
1. ГЕНЕТИЧЕСКИЕ АЛГОРИТМЫ 7
1.1. История появления эволюционных алгоритмов 7
1.2. Общие сведения о ГА 9
1.3. Модели генетических алгоритмов 13
1.4. Другие пути решения задач оптимизации 17
1.5. Применение генетических алгоритмов 21
1.6. Постановка задачи 24
2. ПРИМЕНЕНИЕ ГЕНЕТИЧЕСКИХ АЛГОРИТМОВ ДЛЯ ЗАДАЧ СОСТАВЛЕНИЯ УЧЕБНЫХ ПЛАНОВ 25
2.1. Учебные планы нового поколения. Общие сведения 25
2.2. Формирование рабочих учебных планов 27
2.3. Формирование учебных планов на основе генетических алгоритмов 31
2.4. Соответствие терминов биологии и предметной области 34
3. ПРОГРАММНАЯ РЕАЛИЗАЦИЯ ГЕНЕТИЧЕСКОГО АЛГОРИТМА ДЛЯ ГЕНЕРАЦИИ УЧЕБНЫХ ПЛАНОВ 36
3.1. Выбор языка программирования. Pascal ABC 36
3.2. Функциональная схема работы программы 38
3.3. Описание fitness-функции 42
3.4. Генерация вариативных наборов 44
3.5. Описание констант и переменных программы 46
3.6. Описание функций программы 47
3.7. Результат работы программы 49
ЗАКЛЮЧЕНИЕ 51
Список используемой литературы 52

Содержимое работы - 1 файл

диплом на печать.docx

— 1.30 Мб (Скачать файл)
ign="justify">     Описание  глобальных констант, типов и переменных программы собраны в модуле UnitConstTyteData и описаны в Таблице 2.

     Таблица 2

     
Название Тип Назначение
 
MAX_NUM_DISC_IN_CHROM

MIN_NUM_DISC_IN_CHROM

MAX_NUM_DISC

MAX_NUM_COMPETENCE

NUM_CHROM_IN_POPUL 

NUM_CHROM_TO_CROSS

NUM_PAIRS

NUM_SEMESTR

NUM_YEAR

HOURS_ALL

HOURS_PRAC

HOURS_WORC

HOURS_EXAM  

disc

variation

real_size_genotype

population

new_chrom

new_chrom_numbers

children

select1_type

select2_type

cross_type

Константы

integer

integer

integer

integer

integer

integer

integer

integer

integer

integer

integer

integer

integer

Переменные

TDisc

Tvariation

Integer

TIntermediate

TIntermediateNumbers

TPair

TChildren

integer

integer

integer

 
Максимальное число дисциплин в хромосоме;

Минимальное число дисциплин в хромосоме;

Число генов; 

Уровень компетенции;

Число хромосом в популяции;

Число особей для скрещивания;

Число пар для скрещивания;

Количество семестров;

Количество лет обучения;

Всего часов учебного плана;

Часов учебного плана на все практики;

Часы на выпускную работу;

Часы на подготовку к ГОС-экзамену; 

Дисциплина ( ген );

Вариации одной и той же дисциплины;

Размер генотипа;

Набор хромосом (популяция);

Популяция, особи которой будут замещать родителей в популяции;

Массив с номерами хромосом после скрещивания;

Полученные потомки;

Способ выбора хромосом для скрещивания;

Способ выбора хромосом для обновления популяции;

Способ скрещивания: одно- или двух-точечный;

 

     

    1. Описание  функций программы

         Все функции программы были сгруппированы и размещены в трех модулях. Описание функций и используемых переменных каждого модуля представлено в таблице 3.

                 Таблица 3

     
Модуль Функции Переменные
UnitReadWriteCopy – содержит функции для считывания, записи и вывода параметров базовых дисциплин 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

UnitVariation – формирование вариативного набора 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

GenAlg – основная программа

ReadStr(var s:string) и ReadInt(var s:string)  - функции чтения подстроки из строки 
 
 

ReadDisc(f:Text; var d:TDisc) и SaveDisc(f:Text; d:TDisc)- функции для чтения из файла f строки с параметрами базовой дисциплины и записи её в структуру d:TDisc 
 
 
 

WriteDisc(d:TDisc)-функция для вывода на экран всех полей дисциплины 

CopyDisc(a:TDisc; var d:TDisc) - функция копирования дисциплины а в дисциплину d 

Grow_Comp(d:TDisc) и Low_Comp(d:TDisc) – функции повышения/понижения уровня компетенции 

Variation_1_4(d:TDisc; var d1:TDisc;var d2:TDisc;var d3:TDisc) - функция для вариации по к.работе, к.проекту домашнему заданию и реферату 

GenerateVariation(d:TDisc; var v:TVariation; var n_v:integer)- функция генерация вариатива дисциплины 
 
 
 
 

NumDoubleDisc(mas:TDiscNumbers; len:integer)- функция поиска повторяющихся дисциплин 

Fitness(var c:TChrom)- функция пригодности: получает хромосому и заполняет её поле fitness значением пригодности 
 
 

GenerateGenotype -функция  создания генотипа - набора из  всех базовых дисциплин с вариациями 
 
 

GenerateChrom(var c:TChrom) и GeneratePopulation – функции генерации хромосом и популяций

Переменные

p, i – вспомогательные переменные;

space – переменная символа “пробел”;

substr – первая и последняя часть шифра ; 

Переменные

s – строка дисциплины;

pointstr – переменная символа “точка”;

substr – шифр бисциплины;

p, i - вспомогательные переменные;

codestr - первая и последняя часть шифра;

b -  чтениe полей Boolean; 

Переменные

Не имеются 

Переменные

Не имеются 

Переменные

Не имеются 
 

Переменные

b1,b2, b3, b4 - для  вариации по наличию;

b5, b6,b7,b8  - к.  работ,  к.проектов;

b9,b10,b11,b12 - дом.  заданий, рефератов; 

Переменные

i,j – вспомогательные переменные;

b1,b2,b3,b4 – кол-во недель для практик;

p1,p2,p3,p4 – кол-во недель для лабораторных;

l1,l2,l3 – кол-во недель для лекций;

vv – массив дисциплин;

N – кол-во вариаций; 

Переменные

i,j,n,a – вспомогательные переменные; 
 

Переменные

i,n – вспомогательные переменные;

disc_numbers – отдельная дисциплина;

double_disc - число повторяющихся дисциплин;

all_hours - реальное число часов; 

Переменные

Fbase, Fgenotype,Fvariation – дескрипторы файлов;

d – структура с дисциплиной;

num_variation – порядок дисциплины в вариативном наборе;

j,k – вспомогательные переменные; 

Переменные

Не имеются 

 

    1. Результат работы программы

     Для работы программы были определены двенадцать дисциплин, представленные на рисунке 10.

       
 
 
 
 

     Рисунок 10 – Исходный файл с дисциплинами 

     На  базе каждой из двенадцати дисциплин  были сформированы вариативные наборы, содержащие от 120 до 240 экземпляров (Рисунок 11) . Пример файла вариативного набора дисциплин представлен в Приложении 2. 

     

     Рисунок 11 – Вариативные наборы дисциплин

     Затем из полученных вариативных наборов дисциплин были сгенерирована популяция из 200  «плохих» УП с fitness-функции не выше 20 баллов.

     После окончания работы ГА были получены восемь УП с максимальным значением fitness-функции (120 баллов) за 896 449 циклов. Было проведено десять экспериментов и из «УП-победителей» были выбраны наиболее “полезные” и был составлен учебный план занятий (рисунок 12).

       
 
 
 
 
 
 
 

     Рисунок 12 – Учебный план занятия 
 
 
 
 
 
 
 
 

ЗАКЛЮЧЕНИЕ

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

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

     Представленный  алгоритм использовался для формирования ряда магистерских учебных планов кафедры  «Электронных вычислительных машин»  Южно-Российского Государственного Технического Университета. 

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

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

Список  используемой литературы

  1. Вентцель  Е.С. «Исследование операций», - М.: 1972 г.
  2. Гальцына О.Л., Попов И.И.   «Основы алгоритмизации и

программирования».

  1. Грешилов А.А.  «Как принять наилучшее решение в реальных

условиях», - М.: 1991 г., стр. 164-170

  1. Корнеев В.В., Гареев А.Ф. «Базы данных. Интеллектуальная обработка

данных», М.: 2001г., стр. 220

  1. Коршунов Ю.М. «Математические основы кибернетики. Для студентов

вузов», - М.: 1987 г., стр. 67-89

  1. Леонов О.И.   «Теория графов».
  2. Электронные источники:

«Генетические алгоритмы по-русски» http://www.chat.ru/~saisa

«Нейропроект. Аналитические технологии XXI века» http://www.neuroproject.ru

«Научное издательство ТВП» http://www.tvp.ru/mathem3.htm

«Факультет вычислительной математики и кибернетики МГУ (ВМиК)» http://cmc.cs.msu.su/labs/lvk/materials/tez_sapr99_1.html

«Neural Bench Development» http://www.neuralbench.ru/rus/theory/genetic.htm «Журнал "Автоматизация Проектирования"» http://www.opensystems.ru/ap/1999/01/08.htm 
 
 
 
 
 
 

Приложение 1

Листинг основной программы 

program GenAlg;

uses crt, UnitConstTyteData, UnitReadWriteCopy, UnitVariation; 

begin

     clrscr;

     randomize;

     filename:='discsau.txt';

     num_weeks:=NUM_WEEK; - способ отбора хромосом для скрещивания

    cross_type:=1; - способ скрещивания: 1 - одноточечный

     mutation_probability:=5;   - вероятность мутации

     select2_type:=2; - способ выбора хромосом после скрещивания 

   GenerateGenotype;  - сгенерировать генотип - массив genotype

     GeneratePopulation; - создать популяцию - массив population

     count:=0;

     while (count<100) do

     begin

         inc(count);

        case select1_type of

      1: IntermediatePopulationRnd; - отобрать из популяции особи для

      скрещивания

      2: IntermediatePopulationElit; - отобрать из популяции особи для скрещивания

      3: IntermediatePopulationRoulete; - отобрать из популяции особи для скрещивания

     end;

     MakePairsToCross;  - составить всевозможные пары для скрещивания

     case cross_type of

         1:   Crossing1;   - одноточечное скрещивание хромосом

         2:   Crossing2;   - двухточечное скрещивание хромосом

     end;

     if (count mod mutation_probability) = 0 then    - если прошло 100 циклов

     begin

         Mutation1;

     end;

{отбор  особей после скрещивания  для записи в  популяцию в количестве NUM_CHROM_TO_CROSS}

     case select2_type of

         1:   ChildrenRnd;   - случайный выбор потомков

         2:   ChildrenElit;    - отбор элитных потомков

      3: ChildrenParentElit;  - отбор элитных особей из множества родителей и детей

     end; 

     write('цикл ',count,': ');

     for i:=1 to NUM_CHROM_TO_CROSS do

     write(new_chrom[i].fitness:5:2,' ');

     {удалить  родителей и поместить  отобранные особи  в популяцию}

     ChangePopulation;

     FitnessPopulation;

      end;

Информация о работе Составление учебных планов на основе генетических алгоритмов