Разработка интерактивной системы для решения задачи нахождения оптимального плана перевозок по стоимости с использованием СЛАУ и уравнений баланса потоков
Заказать уникальную курсовую работу- 44 44 страницы
- 12 + 12 источников
- Добавлена 18.08.2024
- Содержание
- Часть работы
- Список литературы
ВВЕДЕНИЕ 3
1. ПОСТАНОВКА ЗАДАЧИ 5
1.1.Задание на проектирование 5
1.2. Математическая основа проектируемой интерактивной системы 6
1.3. Система тестов для тестирования и отладки программы 9
2.КОДИРОВАНИЕ И АЛГОРИТМИЗАЦИЯ 13
2.1. Описание программных объектов 13
2.2. Блок-схемы 17
3.РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ 20
ЗАКЛЮЧЕНИЕ 26
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 27
ПРИЛОЖЕНИЕ 1. Листинг приложения 29
dfm}usesResultUnit, AboutUnit, UserGuideUnit;functionTMain.Gauss(const A:TMatrix; const B:TMatrix):TMatrix;varvectorX, tmpA,tmpB:Tmatrix;i,j,k,l,p:integer;aik,q,z,k1,k2:double;begintmpA:=TMatrix.Create(A);tmpB:=TMatrix.Create(B); //ПрямойходметодаГауссаfor k := 0 to tmpA.RowCount-1 dobegin // если ведущий элемент ненулевой, то запоминаем егоiftmpA[k,k]<>0 then k1:=tmpA[k,k]else // иначе ищем первую строку с ненулевым элементом в столбце k и переставляем строкиbeginl:=k;repeatl:=l+1until (tmpA[l,k]<>0) or (l=tmpA.RowCount);//если ненулевой элемент найденif l<=tmpA.RowCount-1 thenbegin // то меняем строки местамиtmpA.ChangeRows(k,l);tmpB.ChangeRows(k,l); // и запоминаем значение нового ведущего элементаk1:=tmpA[k,k];endelsebegin // выходим из функцииexit;end;end;fori := k+1 to tmpA.RowCount-1 dobegin k2:=tmpA[i,k];// вычитаем из лежащих ниже строк k-ю строку, умноженную на коэффициентfor j := k to tmpA.ColCount-1 dotmpA[i,j] := tmpA[i,j]-tmpA[k,j]*k2/k1;tmpB[i,0]:= tmpB[i,0]-tmpB[k,0]*k2/k1;end;end; // Обратный ход метода ГауссаvectorX:=TMatrix.Create(tmpB.RowCount,1);vectorX[tmpA.RowCount-1,0]:=(tmpB[tmpA.RowCount-1,0])/tmpA[tmpA.RowCount-1,tmpA.RowCount-1];for i:=tmpA.RowCount-2 downto 0 do begin q:=0;for j := i to vectorX.RowCount-1 do q:=q+tmpA[i,j]*vectorX[j,0];vectorX[i,0]:=(tmpB[i,0]-q)/tmpA[i,i];end;result:=vectorX;end;//отрисовываем текст в ячейке таблицы данных в несколько строк, если не помещаются в однуprocedure TMain.Button1Click(Sender: TObject);varmatrixAk, matrixAd, matrixBk, matrixBd, tmpMatrix:TMatrix;i,j:integer;tmp:double;beginResultMemo.Clear;if not flagDataFull then exit;StatusBar1.SimpleText:='Поиск оптимального решения'; // заполняем матрицу AmatrixA:=TMatrix.Create(vectorQ.RowCount,matrixData.RowCount);fori := 0 to matrixA.RowCount-1 dofor j := 0 to matrixA.ColCount-1 do begin if i+1=matrixData[j,1] then matrixA[i,j]:=-1; if i+1=matrixData[j,2] then matrixA[i,j]:=1;end; // заполняемматрицу RmatrixR:=TMatrix.Create(matrixData.RowCount);fori := 0 to matrixR.RowCount-1 domatrixR[i,i]:=matrixData[i,3]; // заполняемматрицу BmatrixB:=TMatrix.Create(matrixA.RowCount,matrixA.ColCount);matrixAk:=TMatrix.Create(vectorQ.RowCount);matrixAd:=TMatrix.Create(vectorQ.RowCount);fori := 0 to matrixAk.RowCount-1 dofor j := 0 to matrixAk.RowCount-1 do beginmatrixAk[i,j]:=matrixA[i,j];matrixAd[i,j]:=matrixA[i,j+matrixAk.RowCount];end;tmpMatrix:=matrixAd.Inverse;tmpMatrix:=tmpMatrix.MultNum(-1);tmpMatrix:=tmpMatrix.Mult(matrixAk);matrixBk:=TMatrix.CreateE(vectorQ.RowCount);matrixBd:=tmpMatrix.Transposing;fori := 0 to matrixB.RowCount-1 dofor j := 0 to matrixB.ColCount-1 do beginif (j
1. ГОСТ Р ИСО 9241-210-2016 Эргономика взаимодействия человек-система. Часть 210. Человеко-ориентированное проектирование интерактивных систем. http://docs.cntd.ru/document/1200141127 (дата обращения: 17.07.2024)
2. Балдин, К. В. Математическое программирование: учебник / К. В. Балдин, Н. А. Брызгалов, А. В. Рукосуев ; под общей редакцией К. В. Балдина. – 2-е изд. – Москва : Дашков и К, 2016. – 218 с.
3. Мейер, Б. Объектно-ориентированное программирование и программная инженерия – М: Интернет-Университет Информационных Технологий (ИНТУИТ), Ай Пи Эр Медиа, 2024. – 285 c. – [Электронный ресурс] – URL: http://www.iprbookshop.ru/79706.html (дата обращения 18.07.2024)
4. Тюльпинова, Н. В. Алгоритмизация и программирование [Электронный ресурс]: учебное пособие – Саратов: Вузовское образование, 2024. – 200 c. – [Электронный ресурс] – URL: http://www.iprbookshop.ru/80539.html (дата обращения 18.07.2024)
5. Линейная алгебра : учеб. пособие / Н.В. Гредасова, М.А. Корешникова, Н.И. Желонкина [и др.] ; Мин-во науки и высш. образования РФ. – Екатеринбург : Изд-во Урал. ун-та, 2019. – 88 с – [Электронный ресурс] – URL: https://elar.urfu.ru/bitstream/10995/78551/1/978-5-7996-2776-8_2019.pdf (дата обращения 17.07.2024)
6. Архангельский, А.Я. Программирование в Delphi: Учебник по классическим версиям Delphi /А.Я. Архангельский. – М.: Бином-Пресс, 2013. – 816 c.
7. Белов, В.В. Программирование в Delphi: процедурное, объектно-ориентированное, визуальное: Учебное пособие для вузов / В.В. Белов, В.И. Чистякова. – М.: РиС, 2014. – 240 c.
8. Коржинский С. Изучаем Delphi. Практическое пособие для изучения программирования в среде Borland Delphi. – [Электронный ресурс] – URL: http://www.snkey.net/support/books/delphi10.pdf (дата обращения 18.07.2024)
9. Осипов Д. Л. Delphi. Программирование для Windows, OS X, iOS и Android. – СПб.: БХВ-Петербург, 2014. – 464 с.
10. Осипов, Д. Delphi. Профессиональное программирование / Д. Осипов. – СПб.: Символ-плюс, 2015. – 1056 c.
11. Петрова, И.А. Объектно-ориентированное программирование: лабораторный практикум для студентов направления 09.03.01 (230100.62) «Информатика и вычислительная техника» очной и заочной форм обучения / И.А. Петрова. – Красноярск: СибГТУ, 2015. – 123с.
12. Фленов М. Е. Библия Delphi. – 3-е изд., перераб. и доп. – СПб.: БХВ-Петербург, 2011. – 688 с.