Анализ вариантов решения задачи
Исследование методов решения сложных задач роста популяции и мутации средствами языка программирования высокого уровня Borland Pascal. Особенности операции скрещивания в генетическом алгоритме. Описание и обоснование выбранного варианта решения.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 26.05.2015 |
Размер файла | 331,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Министерство образования и науки
Томский государственный университет систем управления и
Радиоэлектроники
Кафедра автоматизации обработки информации
Курсовой проект
по дисциплине «Информатика (КП)»
учебное пособие Тимченко С.В.
Выполнил студент
гр. з-402-б
специальности 080500.62
Селигеев Александр Сергеевич
Оглавление
Введение
1. Анализ вариантов решения задачи
2. Описание и обоснование выбранного варианта решения
3. Результаты эксперимента
Выводы и рекомендации по результатам работы
Заключение
Приложение
Введение
Данная курсовая работа рассчитана на изучение студентом методов решения сложных задач роста популяции и мутации средствами языка программирования высокого уровня Borland Pascal.
Задание варианта:
популяция программирование алгоритм pascal
Рассмотреть одноточечное скрещивание и двухточечную мутацию.
Каждая переменная кодируется 30 битами.
Провести расчеты для 30 и 100 поколений.
Сравнить получающиеся решения при размерах популяции 10,20,30 особей.
1. Анализ вариантов решения задачи
В классическом генетическом алгоритме операция скрещивания представляет собой, так называемое точечное скрещивание. Также применяются и другие виды скрещивания: двухточечное, многоточечное и равномерное. Рассмотрим все эти методы.
Точечное скрещивания происходит следующим образом. Выбираются пары хромосом из родительской популяции. Далее для каждой пары отобранных таким образом родителей разыгрывается позиция гена (локус) в хромосоме, определяющая так называемую точку скрещивания - . Если хромосома каждого из родителей состоит из генов, то очевидно, что точка скрещивания представляет собой натуральное число, меньшее . Поэтому фиксация точки скрещивания сводится к случайному выбору числа из интервала . В результате скрещивания пары родительских хромосом получается следующая пара потомков:
потомок, хромосома которого на позициях от до состоит из генов первого родителя, а на позициях от до - из генов второго родителя;
потомок, хромосома которого на позициях от до состоит из генов второго родителя, а на позициях от до - из генов первого родителя.
Действие оператора скрещивания проиллюстрировано следующим примером.
Двухточечное скрещивание - отличается от точечного скрещивания тем, что родительские хромосомы обмениваются участком генетического кода, который находится между двумя случайно выбранными точками скрещивания.
Многоточечное скрещивание представляет собой обобщение предыдущих операций и характеризуется соответственно большим количеством точек скрещивания. Например, для трех точек скрещивания, равных 4, 6 и 9, и для тех же родителей, что на рисунке выше, результаты будут следующие.
Для четырех точек скрещивания, равных 4, 6, 9 и 11 можно привести такой пример.
Аналогично производится скрещивание для пяти или большего количества точек. Очевидно, что одноточечное скрещивание может считаться частным случаем многоточечного скрещивания.
Равномерное скрещивание, иначе называемое монолитным или одностадийным, выполняется в соответствии со случайно выбранным эталоном, который указывает, какие гены должны наследоваться от первого родителя (остальные гены берутся от второго родителя). Допустим, что выбран эталон , в котором означает принятие гена на соответствующей позиции от первого родителя, а - от второго родителя. Таким образом, сформируется первый потомок. Для второго потомка эталон необходимо считывать аналогично, причем означает принятие гена на соответствующей позиции от второго родителя, а - от первого родителя. Пример равномерного скрещивания представлен на рисунке ниже.
Оператор инверсии. Холланд предложил три технологии для получения потомков, отличающихся от родительских хромосом. Это уже известные операции скрещивания и мутации, а также операция инверсии. Инверсия выполняется на одиночной хромосоме; при ее осуществлении изменяется последовательность аллелей (последний ген меняется местами с первым, предпоследний - со вторым и т.д.) между двумя случайно выбираемыми позициями в хромосоме. Несмотря на то, что этот оператор был определен по аналогии с биологическим процессом хромосомной инверсии, он не слишком часто применяется в генетических алгоритмах. Пример инверсии проиллюстрирован ниже.
2. Описание и обоснование выбранного варианта решения
Оператор скрещивание (crossover) осуществляет обмен частями хромосом между двумя (может быть и больше) хромосомами в популяции. Может быть одноточечным или многоточечным. Одноточечный кроссовер работает следующим образом. Сначала, случайным образом выбирается одна из l-1 точек разрыва. Точка разрыва - участок между соседними битами в строке. Обе родительские структуры разрываются на два сегмента по этой точке. Затем, соответствующие сегменты различных родителей склеиваются и получаются два генотипа потомков.
Мутация
Мутация (mutation) - стохастическое изменение части хромосом. Строке, которая подвергается мутации, каждый бит с вероятностью Pmut (обычно очень маленькой) меняется на другой.
Алгоритм работы ГА
Работа ГА представляет собой итерационный процесс, который продолжается до тех пор, пока не выполнятся заданное число поколений или какой-либо иной критерий останова. На каждом поколении ГА реализуется отбор пропорционально приспособленности, кроссовер и мутация.
Алгоритм работы простого ГА выглядит следующим образом:
3. Результаты эксперимента
Основные переменные, используемые при реализации алгоритма
oldpop,newpop,intpop:population; |
три непересекающихся популяции - старая, новая и промежуточная |
|
opsize,lchrom,gen,maxgen:integer; |
глобальные целые переменные |
|
pcross,pmutation,sumfitness:real; |
глобальные вещественные переменные |
|
nmutation,ncross:integer; |
статистические целые |
|
avg,max,min,min1:real; |
статистические вещественные |
Весь алгоритм решения разбит на логические процедуры и функции, каждая их которых выполняет те или иные расчеты.
Основные подпрограммы:
Function rnd(low,high:Integer):Integer; {- cлучайный выбор между low и high}
Procedure decode(chrom:chromosome; lbits:Integer; Var x:fenotype);
{- декодирование строки в массив вещественных координат точки в пространстве поиска - true=1, false=0}
Procedure statistics(popsize:Integer; Var max,avg,min,sumfitness:Real; Var pop:population); {*** Расчет статистических величин ***}
{*** Процедура инициализации (инициализация начальной популяции случайным образом) ***}
Procedure initpop;
Procedure select; {- процедура отбора}
Procedure generation;
{- генерирование нового поколения при помощи отбора, скрещивания и мутации}
{Прим.: предполагается, что популяция имеет четный размер}
Результат выполнения программы :
При 50 поколениях и размере популяции 10 особей
среднее значение минимума функции в заданной области 0.084571793507888
Наилучшее значение минимума функции в заданной области 0.000443960465983
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
При 50 поколениях и размере популяции 20 особей
среднее значение минимума функции в заданной области 0.102085411779220
Наилучшее значение минимума функции в заданной области 0.000443960465983
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
При 50 поколениях и размере популяции 30 особей
среднее значение минимума функции в заданной области 0.157094040787855
Наилучшее значение минимума функции в заданной области 0.000443960465983
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
При 100 поколениях и размере популяции 10 особей
среднее значение минимума функции в заданной области 0.139601413202977
Наилучшее значение минимума функции в заданной области 0.000443960465983
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
При 100 поколениях и размере популяции 20 особей
среднее значение минимума функции в заданной области 0.095127753861539
Наилучшее значение минимума функции в заданной области 0.000397285517399
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
При 100 поколениях и размере популяции 30 особей
среднее значение минимума функции в заданной области 0.162433199925989
Наилучшее значение минимума функции в заданной области 0.000397285517399
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Для завершения программы нажмите ENTER
Заключение
Использование языка программирования Pascal позволяет легко адаптировать приложения для решения новых задач, менять схемы алгоритмов, добавлять новые типы операторов поиска, быстро производить сложные вычисления, требующие больших затрат времени ручным методом.
В результате исследования был проведен анализ эвристических идей интеллектуальных информационных технологий и строгий формальный аппарат современной математики для эффективного решения задач оптимизации сложных систем. Предложенный вероятностный генетический алгоритм позволяет более активно использовать накапливаемую статистику о пространстве поиска, содержит меньше настраиваемых параметров и превосходит стандартный генетический алгоритм, как по надежности, так и по трудоемкости. Численные эксперименты и практическое применение подтверждают эффективность предложенного подхода.
Список использованных источников:
1. Антамошкин А.Н. Оптимизация функционалов с булевыми переменными. - Томск: Изд-во Том. ун-та, 1987, - 104 с.
2. Вороновский Г.К., и др. Генетические алгоритмы, искусственные нейронные сети и проблемы виртуальной реальности. Х.: ОСНОВА, 1997.
3. Гринченко С.Н. Метод «проб и ошибок» и поисковая оптимизация: анализ, классификация, трактовка понятия «естественный отбор». Электронный журнал «Исследовано в России», 2003.
4. Заенцев И.В. Нейронные сети: основные модели. - Учеб. пособие к курсу «Нейронные сети», ВГУ, Воронеж, 1999.
5. Карманов В.Г. Математическое программирование // БСЭ, т.15. М.: Советская энциклопедия, 1974.
6. Мануйлов В.Г. Разработка программного обеспечения на Паскале. Под редакцией и с предисловием А.И.Китова.- М.:"ПРИОР", 1996.- 238с.
Приложение 1
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 |
Program sga; //Uses Crt; Const maxpop=100; maxstring=30; dim=2; {- размерность пространства поиска} Type allele=Boolean; {- аллель - позиция в битовой строке} chromosome=Array[1..maxstring*dim] Of allele; {- битовая строка} fenotype=Array[1..dim] Of Real; individual=Record chrom:chromosome; {- генотип = битовая строка} x:fenotype; {- фенотип = массив вещественных координат точки в пространстве поиска} fitness:Real; {- значение целевой функции} End; population=Array[1..maxpop] Of individual; Const xmax:fenotype=(2.048,2.048); {- массив максимальных значений для координат точки в пространстве поиска} xmin:fenotype=(-2.048,-2.048); {- массив минимальных значений для координат точки в пространстве поиска} Var oldpop,newpop,intpop:population; {- три непересекающихся популяции - старая, новая и промежуточная} popsize,lchrom,gen,maxgen:integer; {- глобальные целые переменные} pcross,pmutation,sumfitness:real; {- глобальные вещественные переменные} nmutation,ncross:integer; {- статистические целые} avg,max,min,min1:real; {- статистические вещественные} {Дополнительные переменные:} popsize0,maxgen0,i1,i2,i3:Integer; result,total_result:Real; {*** Вероятностные процедуры ***} Function random_:Real; Begin random_:=Random(65535)/(65535-1); End; Function flip(probability:Real):Boolean; {- подбрасывание монетки - True, если орёл} Begin If probability=1.0 Then flip:=True Else flip:=(random_<=probability); End; Function rnd(low,high:Integer):Integer; {- cлучайный выбор между low и high} Var i:Integer; Begin If low>=high Then i:=low Else Begin i:=trunc( random_*(high-low+1)+low); if i>high then i:=high; End; rnd:=i; End; {*** Интерфейсные процедуры ***} Function objfunc(x:fenotype):Real; Begin objfunc:=100*Sqr(Sqr(x[1])-x[2])+Sqr(1-x[1]); End; Procedure decode(chrom:chromosome; lbits:Integer; Var x:fenotype); {- декодирование строки в массив вещественных координат точки в пространстве поиска - true=1, false=0} Var i,j:Integer; f,accum,powerof2:Real; begin For i:=1 To dim Do Begin accum:=0.0; powerof2:=1; f:=1; For j:=1+lbits*(i-1) To lbits+lbits*(i-1) Do Begin If chrom[j] Then accum:=accum+powerof2; powerof2:=powerof2*2; f:=f*2; End; x[i]:=xmin[i]+(xmax[i]-xmin[i])*accum/(f-1) End End; {*** Расчет статистических величин ***} Procedure statistics(popsize:Integer; Var max,avg,min,sumfitness:Real; Var pop:population); Var j:Integer; Begin {Инициализация:} sumfitness:=pop[1].fitness; min:=pop[1].fitness; max:=pop[1].fitness; {Цикл для max, min, sumfitness:} For j:=2 To popsize Do With pop[j] Do Begin sumfitness:=sumfitness+fitness; {- накопление суммы значений функции пригодности} If fitness>max Then max:=fitness; {- новое значение max} If fitness<min Then min:=fitness; {- новое значение min} End; {Расчет среднего:} avg:=sumfitness/popsize; End; {*** Процедура инициализации (инициализация начальной популяции случайным образом) ***} Procedure initpop; Var j,j1:Integer; Begin For j:=1 To popsize Do With oldpop[j] Do Begin For j1:=1 To lchrom*dim Do chrom[j1]:=flip(0.5); {- 'бросок монетки'} decode(chrom,lchrom,x); {- декодирование строки} fitness:=objfunc(x); {- вычисление начальных значений функции пригодности} End; End; {*** Генетические операторы отбора, скрещивания и мутации ***} Procedure select; {- процедура отбора} Var ipick:Integer; Procedure shuffle(Var pop:population); {- процедура перемешивания популяции в процессе отбора} Var i,j:Integer; ind0:individual; Begin For i:=popsize Downto 2 Do Begin j:=Random(i-1)+1; ind0:=pop[i]; pop[i]:=pop[j]; pop[j]:=ind0; End; End; Function select_1:Integer; Var j1,j2,m:Integer; Begin If (ipick>popsize) Then Begin shuffle(oldpop); ipick:=1 End; j1:=ipick; j2:=ipick+1; If (oldpop[j2].fitness<oldpop[j1].fitness) Then m:=j2 Else m:=j1; ipick:=ipick+2; select_1:=m; End; Var j:Integer; Begin ipick:=1; For j:=1 To popsize Do Begin intpop[j]:=oldpop[select_1]; End; oldpop:=intpop; End; Function mutation (Var child:chromosome; alleleval:allele; pmutation:Real; Var nmutation:Integer; flchrom:Integer):allele; Var p,mutate:Boolean; j1,j2:Integer; Begin mutate:=flip(pmutation); If mutate Then Begin {Определение точек разрыва:} Repeat Begin j1:=rnd(1, flchrom-1); j2:=rnd(1, flchrom-1); End; Until j1<>j2; mutation:=Not alleleval; p:=child[j1]; child[j1]:=child[j2]; child[j2]:=p; nmutation:=nmutation+1; End Else mutation:=alleleval; End; Procedure crossover(Var parent1,parent2,child1,child2:chromosome; flchrom:Integer; Var ncross,nmutation,jcross:Integer; Var pcross,pmutation:Real); Var j:integer; Begin If flip(pcross) Then Begin{- выполняется скрещивание с вероятностью pcross} jcross:=rnd(1,flchrom-1);{- определение точки разрыва в диапазоне между 1 и l-1} ncross:=ncross+1;{- инкрементирование счетчика скрещиваний} End Else jcross:=flchrom; {Первая часть обмена (1 to 1 and 2 to 2):} For j:=1 To jcross Do Begin child1[j]:=mutation(parent1, parent1[j], pmutation, nmutation, flchrom); child2[j]:=mutation(parent2, parent2[j], pmutation, nmutation, flchrom); End; {Bторая часть обмена (1 to 2 and 2 to 1):} If jcross<>flchrom Then {- пропуск, если точка скрещивания равна flchrom--скрещивание не происходит} For j:=jcross+1 To flchrom Do Begin child1[j]:=mutation(parent2, parent2[j], pmutation, nmutation, flchrom); child2[j]:=mutation(parent1, parent1[j], pmutation, nmutation, flchrom); End; End; {*** Процедура создания нового поколения ***} Procedure generation; {- генерирование нового поколения при помощи отбора, скрещивания и мутации} {Прим.: предполагается, что популяция имеет четный размер} Var j,mate1,mate2,jcross:Integer; Begin select; j:=1; Repeat {- выполняются отбор, скрещивание и мутация, пока полностью не сформируется новая популяция - newpop} mate1:=j; {- выбор родительской пары} mate2:=j+1; {- скрещивание и мутация - мутация вставлена в процедуру скрещивания} crossover(oldpop[mate1].chrom,oldpop[mate2].chrom, newpop[j].chrom,newpop[j+1].chrom, lchrom*dim,ncross,nmutation,jcross,pcross,pmutation); {Декодирование строки и вычисление пригодности:} With newpop[j] Do Begin decode(chrom,lchrom,x); fitness:=objfunc(x); End; With newpop[j+1] Do Begin decode(chrom, lchrom,x); fitness := objfunc(x); End; j:=j+2; Until j>popsize End; Begin min1 := 1 ; For i3:=1 To 2 Do Begin {- цикл выбора колличества поколений} {Колличество поколений:} If i3=1 Then popsize0:=50; If i3=2 Then popsize0:=100; For i1:=1 To 3 Do Begin {- цикл выбора размера популяции} {Размеры популяций:} If i1=1 Then maxgen0:=10; If i1=2 Then maxgen0:=20; If i1=3 Then maxgen0:=30; result:=0; {- инициализация переменной ответа} For i2:=1 To 30 Do Begin{- цикл основной программы} popsize:=popsize0; {- размер популяции} lchrom:=30; {- число битов на один кодируемый параметр} maxgen:=maxgen0; {- максимальное число поколений} pmutation:=0.01; {- вероятность скрещивания} pcross:=0.9; {- вероятность мутации} {Инициализация генератора случайных чисел:} randomize; {Инициализация счетчиков:} nmutation:=0; ncross:=0; initpop; statistics(popsize,max,avg,min,sumfitness,oldpop); gen:=0; {- установка счетчика поколений в 0} Repeat {- главный итерационный цикл} gen:=gen+1; generation; statistics(popsize,max,avg,min,sumfitness,newpop); oldpop:=newpop; {- переход на новое поколение } Until (gen >= maxgen); result:=result+min; if min<min1 then min1 := min ; End;{- конец цикла главной программы} total_result:=result/30;{- среднее значение результата} Writeln('При ',popsize0,' поколениях и размере популяции ',maxgen0,' особей'); Writeln('среднее значение минимума функции в заданной области ',total_result:1:15); Writeln('Наилучшее значение минимума функции в заданной области ',min1:1:15); Writeln('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); result:=0; {Очищаем переменную} End;{Конец цикла выбора размера популяций} End;{Конец цикла выбора колличества поколений} Writeln; Write('Для завершения программы нажмите ENTER'); Readln; End. |
Подобные документы
Методы численного интегрирования. Характеристика основных составляющих структурного программирования. Решение задания на языке высокого уровня Паскаль. Построение графического решения задачи в пакете Matlab. Решение задания на языке высокого уровня C.
курсовая работа [381,7 K], добавлен 10.05.2018Применение информационных технологий в конкретной практической деятельности по выбранной специальности. Использование языка программирования Pascal в инженерной практике как универсального алгоритмического языка. Программа решения задачи на языке Pascal.
курсовая работа [1,3 M], добавлен 25.07.2012История появления и распространения Turbo Pascal - среды разработки для языка программирования Паскаль. Общий вид объявления файлового типа. Входная, выходная и промежуточная информация. Алгоритм решения задачи: словесный алгоритм, блок-схема, программа.
курсовая работа [359,4 K], добавлен 05.01.2010Анализ метода линейного программирования для решения оптимизационных управленческих задач. Графический метод решения задачи линейного программирования. Проверка оптимального решения в среде MS Excel с использованием программной надстройки "Поиск решения".
курсовая работа [2,2 M], добавлен 29.05.2015Использование информационных технологий для решения транспортных задач. Составление программ и решение задачи средствами Pascal10; алгоритм решения. Работа со средствами пакета Microsoft Excel18 и MathCad. Таблица исходных данных, построение диаграммы.
курсовая работа [749,1 K], добавлен 13.08.2012Особенности метода ветвей и границ как одного из распространенных методов решения целочисленных задач. Декомпозиция задачи линейного программирования в алгоритме метода ветвей и границ. Графический, симплекс-метод решения задач линейного программирования.
курсовая работа [4,0 M], добавлен 05.03.2012Особенности решения задач нелинейного программирования различными методами для проведения анализа поведения этих методов на выбранных математических моделях нелинейного программирования. Общая характеристика классических и числовых методов решения.
дипломная работа [2,4 M], добавлен 20.01.2013Разработка программы в среде программирования Borland Pascal, которая является электронным тестирующим пособием в области химии для 8-10 классов. Написание алгоритма решения задачи, определение необходимых функций, процедур, модулей, файловых переменных.
контрольная работа [389,3 K], добавлен 19.09.2010Разработана программа решения двух задач на языке программирования Turbo Pascal. Спецификация задания. Описание входных и выходных данных. Математическая постановка задачи. Алгоритм ее решения. Описание и блок-схема программы. Результаты тестирования.
курсовая работа [275,8 K], добавлен 28.06.2008Особенности задач линейного программирования. Симплексный метод решения задач линейного программирования. Обоснование выбора языка, инструментария программирования, перечень идентификаторов и блок-схема алгоритма. Логическая схема работы программы.
дипломная работа [2,4 M], добавлен 13.08.2011Pascal - высокоуровневый язык программирования общего назначения и интегрированная среда разработки программного обеспечения для платформ DOS и Windows. Входная информация, требуемая для решения задачи и принятые обозначения; описание алгоритма.
курсовая работа [259,6 K], добавлен 18.01.2011Теоретическая основа линейного программирования. Задачи линейного программирования, методы решения. Анализ оптимального решения. Решение одноиндексной задачи линейного программирования. Постановка задачи и ввод данных. Построение модели и этапы решения.
курсовая работа [132,0 K], добавлен 09.12.2008Паскаль как язык профессионального программирования, который назван в честь французского математика и философа Блеза Паскаля, история его разработки и функциональные особенности. Задача с использованием двумерного массива, составление блок-схемы решения.
контрольная работа [819,0 K], добавлен 12.03.2014Решение задачи средствами Паскаль и блок-схемы выполненных процедур, составление программы. Результаты решения задачи по перевозке грузов. выполнение задачи средствами MS Excel, создание таблиц. Порядок и особенности решения задачи в среде MathCAD.
курсовая работа [2,5 M], добавлен 27.02.2011Описание предметной области решаемой задачи. Входные документы, необходимые для решения задачи, ее функции. Разработка информационного обеспечения задачи и реквизиты входной информации. Технология и алгоритмов решения задачи и их машинная реализация.
контрольная работа [15,1 K], добавлен 21.10.2010Применение методов линейного программирования для решения оптимизационных задач. Основные понятия линейного программирования, свойства транспортной задачи и теоремы, применяемые для ее решения. Построение первичного опорного плана и системы потенциалов.
курсовая работа [280,8 K], добавлен 17.11.2011Теоретические и практические аспекты решения прикладных задач с применением функций и процедур структурного (модульного) программирования. Особенности разработки схемы алгоритма и программы для вычисления массива z на языке Turbo Pascal 7.0, их описание.
курсовая работа [241,7 K], добавлен 11.12.2009Символьный тип данных как составляющая языка программирования: управляющие символы, лексемы и разделители. Разработка программного обеспечения для практической реализации решения задач, содержащих символьные величины языка программирования Turbo Pascal.
курсовая работа [37,7 K], добавлен 03.05.2012Структура программы Pascal и алгоритмы решения задач. Работа с циклическими операторами, массивами, процедурами. Составление блок-схем задач. Операции над матрицами в программе MathCad. Работа формулами, графиками и диаграммами в оболочке MS Excel.
курсовая работа [459,0 K], добавлен 13.08.2012Организационно-экономическая сущность задачи автоматизации библиотечной информационной системы. Режимы работы и информационная модель решения задачи, описание входной и выходной информации. Обоснование выбора языка программирования, алгоритм решения.
дипломная работа [448,5 K], добавлен 08.11.2010