Математические модели информационных процессов управления

Выбор наиболее эффективного метода и решение задачи. Разработка алгоритма и программы для решения задачи в общем виде. Применение программа "TabSimMethod". Решение задачи табличным симплекс-методом. Создание, ввод формул и форматирование таблиц.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 26.12.2014
Размер файла 509,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Курсовая работа

Математические модели информационных процессов управления

1. Условие задачи на выполнение курсовой работы

Вариант №1

1. Выбрать и обосновать наиболее эффективный метод решения задачи.

2. Разработать алгоритм и программу для решения задачи в общем виде.

3. Проверить правильность алгоритма на предлагаемой задаче.

4. Задача:

Из пункта А в пункт В ежедневно отправляются пассажирские и скорые поезда. Данные об организации перевозок следующие:

Поезда

Количество вагонов в поезде

багажный

почтовый

плацкарт

купейный

мягкий

Скорый

1

1

-

12

1

-

-

8

5

8

58

81

6

4

40

70

3

1

32

26

Пассажирский

Число пассажиров

Парк вагонов

Сколько должно быть сформировано скорых и пассажирских поездов, чтобы перевезти наибольшее количество пассажиров?

2. Выбор наиболее эффективного метода и решение задачи

Наиболее эффективный метод решения предлагаемой задачи - табличный симплекс -метод. Задача на максимизацию.

Решение задачи начтем с записи уравнения по предлагаемой задаче.

x1 + x2 ? 12

x1 ? 8

5x1 + 8x2 ? 81

где переменные Х1 и Х2 - скорые и пассажирские поезда.

6x1 + 4x2 ? 70

3x1 + x2 ? 26

Целевое уравнение : 626x1 + 656x2 = Zmax

x1 + x2 + S1 ? 12

x1 + S2 ? 8

5x1 + 8x2 + S3 ? 81

6x1 + 4x2 + S4 ? 70

3x1 + x2+ S5 ? 26

Z -626x1 - 656x2 = 0

Заполним таблицу таб. 1. согласно полученным уравнениям.

Найдем ведущую строку и ведущий столбец.

Таб. 1. Исходная симплекс-таблица.

Базисные переменные

z

x1

x2

S1

S2

S3

S4

S5

Решение

Z

1

-626

-656

0

0

0

0

0

0

S1

0

1

1

1

0

0

0

0

12

S2

0

1

0

0

1

0

0

0

8

S3

0

5

8

0

0

1

0

0

81

S4

0

6

4

0

0

0

1

0

70

S5

0

3

1

0

0

0

0

1

26

Произведём перерасчет таблицы.

Найдём в таблице ведущий столбец: им является столбец с X2, т. к. в строке Z именно в этом столбце минимальный коэффициент. Теперь определим ведущую строку. Таковой является строка S3, т. к. в этой строке минимальное отношение столбца “решение” к соответствующим значениям ведущего столбца.

Произведём перерасчет значений в таблице. Новую ведущую строку получаем, разделив её на ведущий элемент, в данном случае это 8, запишем полученный результат в таб. 2.

Для перерасчета строк Z , S1 ,S2 ,S4 ,S5 воспользуемся формулой:

[новая строка] = [старая строка] - [новая ведущая строка] Ч ai j, где

i - номер строки (Z - первая, S1 - вторая);

j - номер ведущего столбца;

ai j - число, записанное в ячейке с индексами i, j.

Запишем полученный результат в таб. 2.

z

0

5/8

1

0

0

1/8

0

0

81/8

-656

0

-410

-656

0

0

-82

0

0

-6642

1

-626

-656

0

0

0

0

0

0

0

-410

-656

0

0

-82

0

0

-6642

1

-216

0

0

0

82

0

0

6642

S1

0

5/8

1

0

0

1/8

0

0

81/8

1

0

5/8

1

0

0

1/8

0

0

81/8

0

1

1

1

0

0

0

0

12

0

5/8

1

0

0

1/8

0

0

81/8

0

3/8

0

1

0

-1/8

0

0

15/8

S2

0

5/8

1

0

0

1/8

0

0

81/8

0

0

0

0

0

0

0

0

0

0

0

1

0

0

1

0

0

0

8

0

0

0

0

0

0

0

0

0

0

1

0

0

1

0

0

0

8

S4

0

5/8

1

0

0

1/8

0

0

81/8

4

0

5/2

4

0

0

1/2

0

0

81/2

0

6

4

0

0

0

1

0

70

0

5/2

4

0

0

1/2

0

0

81/2

0

7/2

0

0

0

-1/2

1

0

59/2

S5

0

5/8

1

0

0

1/8

0

0

81/8

1

0

5/8

1

0

0

1/8

0

0

81/8

0

3

1

0

0

0

0

1

26

0

5/8

1

0

0

1/8

0

0

81/8

0

19/8

0

0

0

-1/8

0

1

127/8

Таб. 2. Промежуточные значения симплекс-таблицы.

Базисные переменные

z

x1

x2

S1

S2

S3

S4

S5

Решение

Z

1

-216

0

0

0

82

0

0

6642

S1

0

3/8

0

1

0

-1/8

0

0

15/8

S2

0

1

0

0

1

0

0

0

8

X2

0

5/8

1

0

0

1/8

0

0

81/8

S4

0

7/2

0

0

0

-1/2

1

0

59/2

S5

0

19/8

0

0

0

-1/8

0

1

127/8

Так как в строке Z есть отрицательное число, проделываем ещё 1 раз пересчет таблицы, результаты приведены ниже таб. 3.

Таб. 3 Оптимальная симплекс-таблица.

Базисные переменные

z

x1

x2

S1

S2

S3

S4

S5

Решение

Z

1

0

0

576

0

10

0

0

7722

x1

0

1

0

8/3

0

-1/3

0

0

5

S2

0

0

0

-8/3

1

1/3

0

0

3

x2

0

0

1

-5/3

0

1/3

0

0

7

S4

0

0

0

-28/3

0

2/3

1

0

12

S1

0

0

0

-19/3

0

2/3

0

1

4

В строке Z нет отрицательных чисел, значит найдено оптимальное решение:

Z = 7722 ; X1 =5; X2 =7.

3. Алгоритм программы

4. Процедуры и переменные

Таблица с описание процедур:

Вызов

Название процедуры

Предназначение

Кнопка «Записать уравнение»

TForm1.Button1Click

Составление и вывод ур-ний в ListBox1.

Кнопка «Создать таблицу»

TForm1.Button2Click

Открывает таблицу для расчетов, заполняет ее, определяет ведущую стоку, столбец выделяя их цветом.

Кнопка «Рассчитать»

TForm1.Button3Click

Производятся решение задачи с выводом результата в ListBox1.

Кнопка «Сброс»

TForm1.BitBtn1Click

Возвращает программу в исходное состояние.

При запуске программы

TForm1.FormActivate

Заполнение таблицы значениями по умолчанию.

При заполнении таблицы “original”

TForm1.originalKeyPress

Запрет на ввод запрещённых символов

Свойство таблицы StringGrid2

TForm1.StringGrid2DrawCell

Выделяет цветом ведущие строку и столбец

col(NStolbez)

procedure col

Поиск ведущей колонки

row(NStroka)

procedure row

Поиск ведущего столбца

Таблица с описанием объектов:

Название элемента

Предназначение

ListBox1

Вывод промежуточных и конечных значений.

StringGrid1

Таблица с исходными данными.

StringGrid2

Таблица с решением задачи.

CheckBox1

Условие для выполнения «быстрого» расчета.

Label1

Label2

Label3

Label4

Label5

Информационные текстовые сообщения.

Panel1

Информационные текстовые сообщения.

Список используемых переменных и их назначение:

Имя

Назначение переменной

Formul

Переменная формулы

FormulZ

Переменная формулы Z

i, j

Переменные для организации счетчиков

NStroka

Переменная - ведущей строки

NStolbez

Переменная - ведущего столбца

CurCol

Переменная колонки для определения цвета

CurRow

Переменная строки для определения цвета

g, f

Х1 и Х2 - присваиваются значения

r

Промежуточная переменная

Velement

Переменная - ведущего элемента

rMax

Промежуточная переменная при поиске максимального значения

5. Справка для работы пользователя с программой

Проверка программы на примере задачи.

Для работы с программой запускаем файл TabSimMethod.exe рис.1.

Рис.1 Файл TabSimMethod.exe

Запустится программа «TabSimMethod» - табличный симплекс-метод рис.2.

Рис.2. Начало решения программы.

решение задача таблица программа

По умолчанию, в исходную таблицу, заносятся исходные данные проверяемой задачи, которые можно с легкостью поменять. Выставляем условие для быстрого решения задачи (если необходимо), по умолчанию условие «Быстрого расчета» отключено.

Нажимаем кнопку «Записать уравнение» , будут составлены и записаны уравнения в окно сообщений для дальнейшего расчета задачи рис.3.

Рис.3. ListBox - вывод уравнений.

Следующий шагом выполняем действие «Создать таблицу» нажав на кнопку . Будет сформирована новая таблица с записанными в ее данными и с выделением ведущей строки и ведущего столбца рис. 4.

Рис.4. Таблица.

Далее нажиме кнопку «Рассчитать» и если стоит условие «Быстрое решение», получим готовое решение поставленной задачи рис.5. Если условие на «Быстрое решение» не стоит, тогда решение будет выполняться пошагово, каждый раз при нажатии на кнопку «Рассчитать» до получения готового решения.

Рис.5. Завершение решения программы.

В разделе «Выбор наиболее эффективного метода и решение задачи» был произведен расчет задачи. Результат вычислений: Z = 7722 ; X1 =1; X2 =7.

При заполнении таблицы, в разработанной программе, данными из задачи рис.2 и выполнив процедуру вычислений, получаем результаты рис.5.

Z = 7722 ; X1 =1; X2 =7, что соответствует результатам ручного вычисления.

В любой из моментов работы программы, можно перейти к началу расчетов, нажав на кнопку «Сброс».

Приложение А

Программный код.

unit Progect;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, Grids, Buttons;

type

TForm1 = class(TForm)

ListBox1: TListBox;

StringGrid1: TStringGrid;

StringGrid2: TStringGrid;

Panel1: TPanel;

Button1: TButton;

Button2: TButton;

Button3: TButton;

BitBtn1: TBitBtn;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

CheckBox1: TCheckBox;

procedure FormActivate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;

Rect: TRect; State: TGridDrawState);

procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

Formul, FormulZ : string[100] ;

i, j, NStroka, NStolbez,CurCol, CurRow : integer;

g, f , r, rMax, Velement, speede : real;

implementation

{$R *.dfm}

procedure col( NStolbez:integer); // поиск ведущей колонки

begin

rMax:= 99999;

For i:=1 to 7 do

begin

r:= StrToFloat(form1.StringGrid2.Cells[i,1]);

if r < rMax Then

begin

rMax := r;

yv:= i;

end;

end;

end;

procedure row( NStroka:integer); // поиск ведущей стрки

Label qwer ;

begin

rMax := 99999;

For i:=2 to 6 do

begin

r:= StrToFloat(form1.StringGrid2.Cells[8, i]);

if StrToFloat(form1.StringGrid2.Cells[NStolbez, i]) <= 0 then

goto qwer;

if (r/StrToFloat(form1.StringGrid2.Cells[NStolbez, i]) < rMax) Then

begin

rMax := r/StrToFloat(form1.StringGrid2.Cells[NStolbez, i]);

yx:= i;

qwer:

end;

end;

end;

// --- Процедура открытии Form1- заполняется таблица StringGrid1\\

procedure TForm1.FormActivate(Sender: TObject);

begin

StringGrid1.cells[0,0]:= 'Поезда \ Вагоны'; StringGrid1.cells[0,1]:= 'Скорый';

StringGrid1.cells[0,2]:= 'Пассажирский'; StringGrid1.cells[0,3]:='Число пассажиров';

StringGrid1.cells[0,4]:= 'Парк вагонов';

StringGrid1.cells[1,0]:= 'Багажный';StringGrid1.cells[2,0]:= 'Почтовый';

StringGrid1.cells[3,0]:= 'Плацкарт'; StringGrid1.cells[4,0]:= 'Купейный';

StringGrid1.cells[5,0]:= 'Мягкий';

StringGrid1.cells[1,1]:= '1';StringGrid1.cells[1,2]:= '1';

StringGrid1.cells[1,3]:= '0';StringGrid1.cells[1,4]:= '12';

StringGrid1.cells[2,1]:= '1';StringGrid1.cells[2,2]:= '0';

StringGrid1.cells[2,3]:= '0';StringGrid1.cells[2,4]:= '8';

StringGrid1.cells[3,1]:= '5';StringGrid1.cells[3,2]:= '8';

StringGrid1.cells[3,3]:= '58'; StringGrid1.cells[3,4]:= '81';

StringGrid1.cells[4,1]:= '6';StringGrid1.cells[4,2]:= '4';

StringGrid1.cells[4,3]:= '40';StringGrid1.cells[4,4]:= '70';

StringGrid1.cells[5,1]:= '3';StringGrid1.cells[5,2]:= '1';

StringGrid1.cells[5,3]:= '32';StringGrid1.cells[5,4]:= '26';

ListBox1.Items.Add('ВЫВОД ЗНАЧЕНИЙ');

ListBox1.Items.Add(' ');

end;

// -- При нажатии на Button1, составляем формулы и выводим в ListBox1--\\

procedure TForm1.Button1Click(Sender: TObject); // кнопка составить уравнения //

begin

For i:=1 to 5 do // колонки

begin

For j:=1 to 2 do // строки

begin

if StrToFloat(StringGrid1.Cells[i, j]) <> 0 Then

begin IF Formul <> '' Then Formul := Formul +'+';

if StrToFloat(StringGrid1.Cells[i, j])= 1 Then

Formul := Formul + 'X' + IntToStr(j)

else

Formul := Formul + StringGrid1.Cells[i, j] + 'X' + IntToStr(j);

end; end;

Formul := Formul + '<=' + StringGrid1.Cells[i, j+1] ;

ListBox1.Items.Add(Formul);

Formul := '';

end;

g := StrToFloat(StringGrid1.Cells[3, 1]) * StrToFloat(StringGrid1.Cells[3, 3]) ; // составляем

g := g + StrToFloat(StringGrid1.Cells[4, 1]) * StrToFloat(StringGrid1.Cells[4, 3]) ; // целевое

g := g + StrToFloat(StringGrid1.Cells[5, 1]) * StrToFloat(StringGrid1.Cells[5, 3]) ; // уравнение

FormulZ := FloatToStr(g) + ' X1 ' + ' + ' ;

f := StrToFloat(StringGrid1.Cells[3, 2]) * StrToFloat(StringGrid1.Cells[3, 3]) ;

f := f + StrToFloat(StringGrid1.Cells[4, 2]) * StrToFloat(StringGrid1.Cells[4, 3]) ;

f := f + StrToFloat(StringGrid1.Cells[5, 2]) * StrToFloat(StringGrid1.Cells[5, 3]) ;

FormulZ := FormulZ + FloatToStr(f) + ' X2 ' + ' = Zmax' ; // готовое ур-ние

g := g * (-1); // принимает отрицательное цначение

f := f *(-1);

ListBox1.Items.Add('Целевое ур-ние');

ListBox1.Items.Add(FormulZ);

Button1.Visible := False;

Button2.Visible := True;

end;

// --- Button2 «Создать таблицу». В ListBox1записать ур-ние, StringGrid2- сформировать и заполнить--\\

procedure TForm1.Button2Click(Sender: TObject); // создать таблицу \\

Label qwer ; // метка возврата

begin

StringGrid2.Visible := True; // показать таблицу

ListBox1.Items.Add( 'Z ' + FloatToStr(g) + ' X1 ' + FloatToStr(f) + 'X2 = 0');

With StringGrid2 do // запись в «0»-ю колонку/столбец переменных

begin

cells[0,1]:= 'Z'; cells[1,0]:= 'X1'; cells[6,0]:= 'S4';

cells[0,2]:= 'S1'; cells[2,0]:= 'X2'; cells[7,0]:= 'S5';

cells[0,3]:= 'S2'; cells[3,0]:= 'S1'; cells[8,0]:= 'Решение';

cells[0,4]:= 'S3'; cells[4,0]:= 'S2'; cells[0,6]:= 'S5';

cells[0,5]:= 'S4'; cells[5,0]:= 'S3';

cells[1,1]:= FloatToStr(g); cells[2,1]:= FloatToStr(f);

end;

For i:=3 to 8 do

StringGrid2.cells[i,1]:= FloatToStr(0); // остальные нули

With StringGrid2 do // заполнение таблицы

begin

cells[1,2]:= StringGrid1.cells[1,1]; cells[2,2]:= StringGrid1.cells[1,2]; cells[8,2] := StringGrid1.cells[1,4];

cells[1,3]:= StringGrid1.cells[2,1]; cells[2,3]:= StringGrid1.cells[2,2]; cells[8,3] := StringGrid1.cells[2,4];

cells[1,4]:= StringGrid1.cells[3,1]; cells[2,4]:= StringGrid1.cells[3,2]; cells[8,4] := StringGrid1.cells[3,4];

cells[1,5]:= StringGrid1.cells[4,1]; cells[2,5]:= StringGrid1.cells[4,2]; cells[8,5] := StringGrid1.cells[4,4];

cells[1,6]:= StringGrid1.cells[5,1]; cells[2,6]:= StringGrid1.cells[5,2]; cells[8,6] := StringGrid1.cells[5,4];

cells[3,2]:= '1'; cells[4,2]:= '0'; cells[3,3]:= '0'; cells[3,4]:= '0';

cells[4,3]:= '1'; cells[5,2]:= '0'; cells[5,3]:= '0'; cells[4,4]:= '0';

cells[5,4]:= '1'; cells[6,2]:= '0'; cells[6,3]:= '0'; cells[6,4]:= '0';

cells[6,5]:= '1'; cells[7,2]:= '0'; cells[7,3]:= '0'; cells[7,4]:= '0';

cells[7,6]:= '1'; cells[3,5]:= '0'; cells[4,5]:= '0'; cells[5,5]:= '0';

cells[7,5]:= '0'; cells[6,6]:= '0'; cells[3,6]:= '0'; cells[4,6]:= '0'; cells[5,6]:= '0';

end;

Button2.Visible := False; //закрываем кнопку

Button3.Visible := True; //открываем кнопку

// Поиск ведущей колонк

col(NStolbez);

NStolbez:=yv;

//Поиск ведущей строки

row(NStroka);

NStroka:=yx;

// нахождение вед. элемента

Velement:= StrToFloat(StringGrid2.Cells[NStolbez, NStroka]);

end;

// -- КНОПКА СБРОСА --\\

procedure TForm1.BitBtn1Click(Sender: TObject);

// кнопк сброса

begin

Button1.Visible := True;

Button2.Visible := False;

Button3.Visible := False;

ListBox1.Clear; // очистка

StringGrid2.Visible := False;

ListBox1.Items.Add('ВЫВОД ЗНАЧЕНИЙ'); // вывод

ListBox1.Items.Add(' ');

NStolbez := 10; // просто за предел таблицы (касается этой задачи)

NStroka := 10;

CheckBox1.Checked := false;

end;

// -- Кнопка «Рассчитать»-- основной метод расчета--\\

procedure TForm1.Button3Click(Sender: TObject);

Label qwer, speed ;

begin

speed: // метка возврата

StringGrid2.Cells[0, NStroka] := StringGrid2.Cells[NStolbez, 0];

//Пересчет ведущей строки

For i:= 1 to 8 do

// округление

StringGrid2.Cells[i, NStroka]:= formatfloat('0.#####',(StrToFloat(StringGrid2.Cells[i, NStroka])/Velement));

// Запись в лист

ListBox1.Items.Add('Столбец № ' + FloatToStr(NStolbez) + ' Строка № '+ FloatToStr(NStroka));

ListBox1.Items.Add('Ведущий элемент ' + FloatToStr(Velement));

// Пересчет строк

For j:= 1 to 6 do

Begin

if j <> NStroka then

begin

Velement:= StrToFloat(StringGrid2.Cells[NStolbez, j]);

For i:=1 to 8 do

begin

// округление // заполнение таблицы

StringGrid2.Cells [i, j] := formatfloat('0.#####',(StrToFloat(StringGrid2.Cells[i, j]) - StrToFloat(StringGrid2.Cells[i, NStroka])* Velement));

end; end; end;

// Поиск ведущей колонк

col(NStolbez);

NStolbez:=yv;

//Поиск ведущей строки

row(NStroka);

NStroka:=yx;

// нахождение вед. элемента

Velement:= StrToFloat(StringGrid2.Cells[NStolbez, NStroka]);

rMax := 0; // проверка на «0» конец решения

For i:=1 to 7 do

begin

r:= StrToFloat(StringGrid2.Cells[i,1]);

if r < 0 Then

begin

rMax := rMax + 1;

end;

end;

// конец расчета

If rMax = 0 then

begin

Button3.Visible := False;

ListBox1.Items.Add('');

ListBox1.Items.Add('Решение найдено');

NStolbez := 10;

NStroka := 10;

For i:=1 to 6 do // ВЫВОДИМ результат в лист бокс по кол-ву циклов

begin

if StringGrid2.Cells[0, i] = 'X1' then

ListBox1.Items.Add(StringGrid2.Cells[0, i] + ' = ' + StringGrid2.Cells[8, i]);

if StringGrid2.Cells[0, i] = 'X2' then

ListBox1.Items.Add(StringGrid2.Cells[0, i] + ' = ' + StringGrid2.Cells[8, i]);

if StringGrid2.Cells[0, i] = 'Z' then

ListBox1.Items.Add(StringGrid2.Cells[0, i] + ' = ' + StringGrid2.Cells[8, i]);

end;

end;

// выполнение быстрого расчета

for i:= 1 to 7 do

if (StrToFloat(StringGrid2.Cells[i, 1]) <0) and (CheckBox1.Checked = true) then

GOTO speed; //возврат в начало

end;

procedure TForm1.StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;

Rect: TRect; State: TGridDrawState);

// Выделяем цветом ведущие строку и стобец

Const // определяем цвет.

clPaleGreen = TColor($00CCFF); // розовый лучше CCCCFF

begin

if ACol = NStolbez //ведущая колонка будет РОЗОВОЙ (PING)

then

StringGrid2.Canvas.Brush.color := clPaleGreen ;

if ARow = NStroka

then

StringGrid2.Canvas.Brush.color := clPaleGreen ;

If (ACol >0)and (ARow>0) then

begin

//Закрашиваем бэкграунд

StringGrid2.canvas.fillRect(Rect);

//Закрашиваем текст : ( можно добавить выравнивание и т.д.)

StringGrid2.canvas.TextOut(Rect.Left,Rect.Top,StringGrid2.Cells[ACol,ARow]);

end;

end;

// разрешение ввода только цифр

procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);

begin

case key of

'0'..'9': ; //только цифры

#8: ; //забой

'.', ',': //точка и запятая

if Pos(DecimalSeparator, StringGrid1.Cells[CurCol,CurRow]) = 0 then

Key := DecimalSeparator

else

Key := #0;

else

key := #0;

end;

end;

end.

Список литературы

1. Бородич Ю.С. и др. Паскаль для персональных компьютеров: Справ. пособие / Ю.С. Бородич, А.Н. Вальвачев, А.И. Кузьмич.-Мн.: Выш.шк.: БФ ГИТМП «Ника», 1991.-365с.

2. Мануйлов В.Г.Разработка программного обеспечения на Паскале.: “Приор”., 1996. -238 с.

3. Вальвачев А.Н. Графическое программирование на языке Паскаль: Справ.пособие. - Мн.: Выш.шк.,1992. -143 с.

Размещено на Allbest.ru


Подобные документы

  • Обзор алгоритмов методов решения задач линейного программирования. Разработка алгоритма табличного симплекс-метода. Составление плана производства, при котором будет достигнута максимальная прибыль при продажах. Построение математической модели задачи.

    курсовая работа [266,4 K], добавлен 21.11.2013

  • Определение наиболее выгодного соотношения сортов сырой нефти, используемой для производства бензина. Математическая постановка задачи. Выбор метода решения задачи. Описание алгоритма решения задачи (симплекс-метода) и вычислительного эксперимента.

    курсовая работа [1,1 M], добавлен 08.12.2010

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

    курсовая работа [2,0 M], добавлен 12.02.2013

  • Сущность симплекс-метода. Общая характеристика задачи о смесях. Разработка основных алгоритмов решения задачи. Решение задачи в среде визуального программирования Delphi. Проектирование интерфейса пользователя. Разработка форм ввода-вывода информации.

    курсовая работа [476,6 K], добавлен 22.05.2012

  • Постановка задачи линейного программирования. Решение системы уравнений симплекс-методом. Разработка программы для использования симплекс-метода. Блок-схемы основных алгоритмов. Создание интерфейса, инструкция пользователя по применению программы.

    курсовая работа [1,7 M], добавлен 05.01.2015

  • Построение математической модели. Выбор, обоснование и описание метода решений прямой задачи линейного программирования симплекс-методом, с использованием симплексной таблицы. Составление и решение двойственной задачи. Анализ модели на чувствительность.

    курсовая работа [100,0 K], добавлен 31.10.2014

  • Описание симплекс метода решения задачи линейного программирования. Решение задачи методом Литла на нахождение кратчайшего пути в графе, заданном графически в виде чертежа. Из чертежа записываем матрицу расстояний и поэтапно находим кратчайший путь.

    задача [390,4 K], добавлен 10.11.2010

  • Описание алгоритма решения транспортной задачи по планированию перевозки зерна. Ход решения задачи вручную, в программе TORA методом наименьшего элемента, с помощью MS Excel. Разработка программы для решения задачи в общем виде средствами Delphi.

    курсовая работа [2,5 M], добавлен 22.11.2012

  • Краткий обзор решения транспортных задач. Экономическая интерпретация поставленной задачи. Разработка и описание алгоритма решения задачи. Построение математической модели. Решение задачи вручную и с помощью ЭВМ. Анализ модели на чувствительность.

    курсовая работа [844,3 K], добавлен 16.06.2011

  • Алгоритм решения задач линейного программирования симплекс-методом. Построение математической модели задачи линейного программирования. Решение задачи линейного программирования в Excel. Нахождение прибыли и оптимального плана выпуска продукции.

    курсовая работа [1,1 M], добавлен 21.03.2012

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