Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kursach_MAT_METODY.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
505.58 Кб
Скачать

7 Программа

PROGRAM tz;

USES crt;

TYPE

MATR = ARRAY [1...6, 1...6] OF INTEGER; MASS-ARRAY [1...6] OF INTEGER;

LABEL 1, 2;

VAR

C,X: MATR; K,L,A,B,U,V: MASS;

S,W,Z,MIN, МАХ,В1,А1Д, J,M,N,T: INTEGER;

KBD, Gl: CHAR;

BEGIN

clrscr;

WRITELN; WRITELN; WRITELN; WRITELN;

WRITELN; WRITELN; WRITELN; WRITELN; WRITELN; WRITELN; WRITELN ('Выполнил студент группы П-10 Коваленко А.Г.')

WRITELN ('... Нажмите ввод...');

REPEAT UNTIL KEYPRESSED;

WRITELN (CHAR(12));

WRITE ('Введите количество заводов N= '); READ(N);

WRITELN; WRITELN;

WRITE ('Введите мощности заводов A[l]:');

WRITELN;

Al: = 0;

FOR I: = 1 TO N DO BEGIN READLN (A[I]);

Al: = A1+A[I]

END;

WRITE ('Введите количество складов M= '); READ(M);

WRITELN; WRITELN;

WRITE ('Введите потребности складов B[J]:');.

WRITELN;

Bl: = 0;

FOR I := 1 TO M DO BEGIN

READLN (B[I]);

Bl: =B1 +B[I]

END;

WRITELN; WRITELN; WRITELN; WRITELN; WRITELN; WRITELN;

WRITELN ('...Нажмите ввод...');

READ (KBD,G1);

FORI: =1 TO N DO

FOR J: = 1 TO M DO C[I,J]: = 0;

WRITE ('Введите матрицу стоимостей С [I, J]');

WRITELN;

FOR I: =1 TON DO BEGIN

FOR J: = 1 TO M DO

BEGIN

READ (C[I,J]);

END;

END;

WRITELN; WRITELN; WRITELN; WRITELN; WRITELN; WRITELN;

WRITELN ('...Нажмите ввод...');

READ (KBD,G1);

WRITELN (CHAR(12));

IF A1 <>B1 THEN

BEGIN

WRITELN ('Открытая модель');

END;

IF A1 >B1 THEN

BEGIN

WRITELN ('Добавление столбец');

М: = М+ 1;

FOR I: =1 ТО М DO C[I,M]: = 0;

END;

IFB1 > A1 THEN

BEGIN

WRITELN ('Добавление строки');

N:=N+ 1;

FOR I: = 1 TON DO

END;

WRITELN;

WRITE ('Введите первоначальный опорный план X[I,J]');

WRITELN;

FORI: = 1 TO N DO

BEGIN

FOR J: = 1 TO M DO

BEGIN

READ (X[I,J]);

END;

END;

W: = 1;

1: FOR I: = 1 TO N DO U[I]: = 999

FOR I: = 1 TO M DO V[I]: = 999

U[1]: = 0;

FOR T: = 1 TO 10 DO

BEGIN

FOR I: = 1 TO N DO

FOR J: = 1 TO M DO

BEGIN

IF (X[I,J]<>0) AND (V[J]<>999) THEN U[I]: = C[I,J] - V[J];

IF (X[I,J]<>0) AND (U[I]<>999) THEN V[J]: = C[I,J] - U[I]; END;

END;

WRITELN;

WRITELN ('...Нажмите ввод...');

READ (KBD, Gl);

WRITELN (CHAR(12));

WRITELN ('Таблица потенциалов N,W');

WRITELN;

FOR I: = 1 TO M DO

BEGIN

WRITE ('V[\I,'] =\ V[I])

END;

FOR I: = 1 TO N DO

BEGIN

WRITELN

FOR J: = 1 TO M DO

WRITE (X[I,J]: 5);

MAX: - -999;

FOR I: = 1 TO N DO

FOR J: = 1 TO M DO

IF X[I,J] = 0 THEN

IF (U[I] + V[J]>C[I,J]) THEN

IF (U[I] + V[J]-C[I,J]) >MAX

THEN

BEGIN

MAX: = (U[I] + V[J]) - С [I, J]; K[1]: = I;

L[l]: = J;

END;

Z: = 0;

IF MAX = -999 THEN BEGIN

FOR I: = 1 TO N DO

FOR J: = 1 TO M DO

IF X[I,J]<>0 THEN Z: = Z + X[I,J]*C[I,J];

WRITELN;WRITELN;WRITELN; WRITELN ('Z-,Z);

GOTO 2; END;

WRITE('Вершинацикла=\К[1]Д\Ц1]);

WRITELN;

WRITE ('Введите вершины цикла');

READ (Т);

WRITELN;

FOR I: = 2 TO T DO

BEGIN

READ (K[I]);

READ (L[I]);

END;

MIN: = -999;

FOR I: = 2 TO T DO

BEGIN

S: = I MOD 2;

IF (S = 0) AND (X[K[I],L[I]]<MIN) THEN MIN: = X[K[I],L[I]]

END;

FOR I: = 1TO T DO

BEGIN

S: = 1 MOD 2;

IF S<>0 THEN X[K[I], L[I]]: = X[K[I], L[I]] + MIN ELSE

X[K[I],L[I]]: = X[K[I],L[I]] - MIN;

END;

W: = W+l;

GOTO 1;

2: WRITELN ('Условие оптимальности выполняется ');

WRITELN ('Опорный план - является оптимальным');

WRITELN ('Конец вычислений.');

READLN;

END.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]