Анализ вариантов решения задачи

Исследование методов решения сложных задач роста популяции и мутации средствами языка программирования высокого уровня 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.2011

  • Pascal - высокоуровневый язык программирования общего назначения и интегрированная среда разработки программного обеспечения для платформ 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.