Автор работы: Пользователь скрыл имя, 10 Марта 2011 в 13:53, курсовая работа
Транспортная задача делится на два вида: транспортная задача по критерию стоимости- определение плана перевозок, при котором стоимость груза была бы минимальна; транспортная задача по критерию времени- более важным является выигрыш по времени.
Транспортная задача по критерию стоимости является частным случаем задачи линейного программирования и может быть решена симплексным методом. Однако в силу особенностей задачи, она решается намного проще.
ВВЕДЕНИЕ ……………………………………………………………………...2
1. ОБЩАЯ ЧАСТЬ………………………………………………………………5
1.1. Математическая постановка задачи……………………………….5
1.2. Арифметическое преобразование…………………………………7
1.3. Модели…………………………………………………………………......8
1.3.1. Открытая модель…………………………………………………8
1.3.2. Закрытая модель…………………………………………………8
1.4. Составление опорного плана транспортной задачи. Методы составления опорного плана………………………………………………9
1.4.1. Метод северо-западного угла…………………………………..9
1.4.2. Метод наименьшей стоимости…………………………………11
1.5. Методы решения транспортной задачи……………………………13
1.5.1 Метод потенциалов……………………………………………….13
1.5.1.1 Пример решения методом потенциалов………………14
1.5.2 Метод прямоугольников……………………………………….16
1.5.2.1 Пример решения методом прямоугольников.………..18
2. Описание решения Транспортной задачи с использованием стандартных программных средств……………………………………20
3. Описание входной информации…………………………………......24
4. Описание выходной информации………………………………......24
5. Описание программных средств решения задачи………………25
6. Инструкция для пользователя……………………………………......26
7. Инструкция для программиста……………………………………......27
ЗАКЛЮЧЕНИЕ…………………………………………………………………28
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ……………………......29
ПРИЛОЖЕНИЕ А………………………………………………………………30
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
ПРИЛОЖЕНИЕ А
program zadacha;
uses crt;
const w=('_____________');
const e=('-------------');
label q;
var
a,a1,b,b1,c,c1,d,d1,a2,b2,c2,
begin
clrscr;
writeln('Здравствуйте!');
writeln('Вас приветствует программа решения транспортной задачи методом прямоугольника - TranZet, ver 1/1');
writeln('Данная версия делает из неправельного прямоугольника - правельный');
begin
writeln('введите 1 - продолжить, 0 - выйти');
readln(n);
if n = 1 then goto q end; exit;
a:=0; b:=0; c:=0; d:=0; x:=0; m:=0;
q:writeln;
writeln('введите перевозки X1,1 , X1,2 , X2,1 , X2,2');
writeln('Для выхода из программы нажмите -1, чтобы начать сначала начала нажмите -2');
readln(a); begin if (a=-1) then exit;if a=-2 then goto q end;
readln(b); begin if (b=-1) then exit;if b=-2 then goto q end;
readln(c); begin if (c=-1) then exit;if c=-2 then goto q end;
readln(d); begin if (d=-1) then exit;if d=-2 then goto q end;
writeln('введите тарифы С1,1 , C1,2 , C2,1 , C2,2');
writeln('Для выхода из программы нажмите -1, чтобы начать сначала начала нажмите -2');
readln(a1); begin if (a1=-1) then exit;if a1=-2 then goto q end;
readln(b1); begin if (b1=-1) then exit;if b1=-2 then goto q end;
readln(c1); begin if (c1=-1) then exit;if c1=-2 then goto q end;
readln(d1); begin if (d1=-1) then exit;if d1=-2 then goto q end;
writeln;
writeln('НАШ ПРЯМОУГОЛЬНИК');
writeln(w);
writeln('| |',a1,'| |',b1,'|');
writeln('|',a:5,'|',b:5,'|');
writeln(e);
writeln('| |',c1,'| |',d1,'|');
writeln('|',c:5,'|',d:5,'|');
writeln(e);
begin
if (a>0) and (b>0) and (c>0) and (d>0) and ((a1+d1)<>(b1+c1))then writeln('первый тип - неправильный')else
if (a=0) and (d=0) and ((a1+d1)<(b1+c1)) then begin writeln('третий тип - неправильный');
if (b>c) then x:=c else x:=b; a2:=a+x; b2:=b-x; c2:=c-x; d2:=d+x; m:=((b1+c1)-(a1+d1))*x; writeln('МОЩНОСТЬ = ',M); end else
if (c=0) and (b=0) and ((b1+c1)<(a1+d1)) then begin writeln('третий тип - неправильный');
if (a>d) then x:=d else
x:=a; a2:=a-x; b2:=b+x; c2:=c+x; d2:=d-x; m:=((a1+d1)-(b1+c1))*x;
if (a=0) and ((a1+d1)<(b1+c1)) then begin writeln('второй тип - неправильный');
if (b>c) then x:=c else
x:=b; a2:=a+x; b2:=b-x; c2:=c-x; d2:=d+x; m:=((b1+c1)-(a1+d1))*x;
if (b=0) and ((b1+c1)<(a1+d1)) then begin writeln('второй тип - неправильный');
if (a>d) then x:=d else
x:=a; a2:=a-x; b2:=b+x; c2:=c+x; d2:=d-x; m:=((a1+d1)-(b1+c1))*x;
if (c=0) and ((b1+c1)<(a1+d1)) then begin writeln('второй тип - неправильный');
if (a>d) then x:=d else x:=a; a2:=a-x; b2:=b+x; c2:=c+x; d2:=d-x; m:=((a1+d1)-(b1+c1))*x; writeln('МОЩНОСТЬ = ',M);end else
if (d=0) and ((a1+d1)<(b1+c1)) then begin writeln('второй тип - неправильный');
if (b>c) then x:=c else x:=b; a2:=a+x; b2:=b-x; c2:=c-x; d2:=d+x; m:=((b1+c1)-(a1+d1))*x; writeln('МОЩНОСТЬ = ',M);end
writeln;
writeln;
writeln('НАШ РЕШЕННЫЙ ПРЯМОУГОЛЬНИК');
writeln(w);
writeln('| |',a1,'| |',b1,'|');
writeln('|',a:5,'|',b:5,'|');
writeln(e);
writeln('| |',c1,'| |',d1,'|');
writeln('|',c:5,'|',d:5,'|');
writeln(e);
begin
writeln('Нажмите 0 - чтобы выйти, нажмите 1 - чтобы повторить');
readln(n);
if n = 1 then goto q end; exit; end
end;
writeln;
writeln;
writeln('НАШ РЕШЕННЫЙ ПРЯМОУГОЛЬНИК');
writeln(w);
writeln('| |',a1,'| |',b1,'|');
writeln('|',a2:5,'|',b2:5,'|')
writeln(e);
writeln('| |',c1,'| |',d1,'|');
writeln('|',c2:5,'|',d2:5,'|')
writeln(e);
begin
writeln('Нажмите 0 - чтобы выйти, нажмите 1 - чтобы повторить');