Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Справочник проектировщика систем автоматизации управления производством

..pdf
Скачиваний:
6
Добавлен:
19.11.2023
Размер:
39.87 Mб
Скачать

Ф о р т р а н

П Р О Г Р А П П А

С О С Т А В И Л С а п р ы к и н

Д А Т А

 

_ Л И С Т

1

 

 

 

M t A U n i f

7 0 “

 

В ы ч и с л е н и е s i n x

д . 1 0 . 7 2

г .

Л И С Т О В

1

 

 

 

„ и r u r i *f\

s J £

 

 

 

 

Ш и ф р з а д а ч и

 

 

 

П Р О В О Р И Л Ж б а н о в

Д А Т А

 

 

 

 

 

 

 

 

 

 

 

2 8 . 1 2 . 7 2 г .

■ ' 1 ■ '

■g ‘

и

С W u H c m p .

Я

1

2

| J

,

4 .

5

6

L

I .

1

1

 

 

 

 

 

 

— 1____1____L

_

 

 

 

,

,

7 ,

0

 

 

____!____>

»

 

 

 

 

1

t

i

 

 

!— 1____1___

,, 2 , 0

i____i____l___

,, 3 . 0

— i____i

»

«

1 4

1 0

i

1

1 0

___ i____!

»

— I____1____L _

i

i

i

___ 1____1__I__

1____!____!____

I____L . !

_ J ____I____1____

1 ) 1

___ i____i____L L

i

i

i

J . - L

. l .

_ J __ !____1__

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8 0

 

 

 

 

 

 

1 - 1

!

.1

>

1

1

1

1

 

 

»

1

!

1

1

У

)

1

\ °\

1

1

»

1

1

1

i

1

 

 

1

i

1

1

1

1

 

, .

»

i

,

,

,

 

,.................................... 6 0 . . . . .

i

i

i

t

7 0

77

 

 

 

 

 

r K a U К A П

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

............................................................

 

 

 

 

 

 

 

.........

 

....................................

 

 

 

 

 

i

■■ i

i

 

i

i

i

i

i

.

i

t

i .

 

T

f o

 

W

- V

a 1 V

 

' Л

1 1 1 1 1 1 1 1 1 1 '

1 1 1 1 1 1 1 1 '

1 1 1 1 1 1 ,

'

,

'

 

i

,

!

i

,

 

,

,

 

i

i

,

i

,

 

i

.........................................................................

 

 

 

 

 

 

 

 

 

 

F 0

R f 1 A

 

T ( 2 F 8 . 5 )

 

1 1 1 l -

 

1 1 1 1 J - ■

1 - J----------------

 

 

1— ^ - 1 1 1 1 -]

1 1 I

1 » ■ »

 

f

1 1 1 1 1 1 »

«

i

i

i

 

i

.

i .

 

,

i

,

i

, ,

,

,

,

 

T

' V /

V

. V

 

............................................................................................................................................................................................................

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'

!

1

1

1

 

1

!

1

1

 

1

,

 

, ....................................................................................................................

 

Г

7 F f l -

0

 

' '

1 1 1 1 1 1 1 1 l ~ J ' 1 1 - 1" 1 1 1 1 1 1 1 1 1 J - 1 1 '

 

1 '■

1 1 1 1 1 1 1 1 1 »

1 1 1 1 !

1 1 •

 

t

1 1 !

 

1 1 1 .

1 !

1 .

1

 

т У

. г У

-

ï

 

'

'

' - 1- 1 1 1 1 1 1 1

 

1

1 ■ ■

> ■ '

■ 1 ■ .....................................> »

 

 

 

 

 

...............................................................................................................................................................................................................................

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p j

î \ r u J

J £

 

p

 

1 !

1 J

 

1 ?

1 1 *• 1 1 1 *

 

 

1 1 }

1 1 1 1 1 ’ ■ 1

'

1 1 1 »

1 !

1

 

1 1 1 1 1 1 1 1 1 1 f

1 1 1 1 1 1 1 .

1 !

 

 

 

 

 

 

 

 

 

 

 

 

p ' ; i

 

 

 

 

м Ж ' А ъ :

L : :

:

:

 

: :

: : :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P R I N T

 

5 0 . X

 

. F R

 

Т е Т Г р

 

 

T a H

 

 

r V

 

r V

.........................

 

 

 

 

1 1 1 1 ■

»

»

1 »

<

>

1 i

i

 

i

1 i. i

 

i

i

i

t

i

i

»

t

i

i

i

i

> .

 

 

U

 

»

i

i

I

П .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i . . .

.

. . .

 

,

,

(

)

l l

 

l

(

. , ,

r

 

 

 

 

 

 

 

 

 

 

...........................................

 

 

 

 

 

.......

......................

 

 

 

 

:

 

F 0 R П A i ( 4 E 2 0 .

8

 

1 2 0 )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 1 1 1 1 1 1 1 *■ 1 1 1 ?

 

1 1 1 1 1 1 1 1 1 > - ' ■ » » »

1 . 1

i

i

1 »

- - . L J

0

«

1

1

1

1

1

1

»

1

1

1 *

1'

I

l

\ '\

[

j

t

|

|

|

i

|

|

i

i

‘i

i . . .

.

,

i

i .

,

|

|

 

,

,

|

,

 

,

,

,

,

 

,

,

, .................................................................

,

,

S

1

P

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

----------

 

 

— —

— *— *

1— 1— ‘

■— 1— 1— 1— 1— 1— 1— I— !— 1— 1— 1___1___1

I

1 1

1

1

1

!

1

t

1

1

1

1

 

E

N

J }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

— ----------

— 1— 1— 1

'— ■— 1— 1— 1— 1— 1— 1— 1— 1— 1— 1— 1— 1— !— I— 1— 1— L J — 1___1___ 1__ t

1

t

1

t

1

1

1

,

-

Г

Г

»

1 1— L

i ■ !

1 1

t

1 1 i

i

i

l

l

1 i

i

.

i

i

i

i

i

i

i .

i

,

,

,

|

,

,

|

|

|

,

,

,

 

,

,

|

,

 

,

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

;

- - 1

1 1

1

1

>

»

1 t

1 )

1

1 !

1 - 1

1 1 «

1 «

»

1 1 »

»

1 1 ) .

1 1 1 1 1 1 I

,

!

,

I

1 I

 

,

,

,

,

 

,

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

 

1—

■— ■—

*—

l

1— *— 1— 1 1 — 1— •—

!— 1— 1— 1— !— 1— 1— 1— 1— 1— 1___1___1

i

1

1

1

»

i

I

l

i

i

i

i

i

i

i

t

i

i

 

i

1

1

1

 

1

l

i

l

i

 

i

i

i

i

i

i

i

i

i

f

i

i

i

i

 

1—

1

)

1

1

1—

1—

!—

L -

)

1

1

1— 1— 1— 1— 1

1

!— 1

1

1___1

I

* .

1

l

1

1

i

i

i

i

i

i

,

i

i

i

|

i

1

 

i

1

1

i

 

i

I

I

i

i

 

i

i

i

i

i

i

i

i

i

i

i .

»

 

 

'

*

*

1— !■

)

)

1 1 1

)

1 1 - 1 )

1 1— L J — I

*

j

1 1 1 >

i

i

!

i

i

l

i

i

i

i

i

i

i

i

i

i

i

 

i

i

i

i

 

i

i . i

i

i

 

i

i

i

i

i

i

i

i

i

i

i

i

i

i

 

— L - 1 »

»

1 1 »

1 1 i -

1 1 1 1 - 1

1 »

1 1 1 ■ »

1 1 1 1 1 1 1 1 t

1 1 .

|

|

.

t

|

|

,

|

,

|

 

|

|

|

|

 

|

|

, . . . . . .

 

. . . .

 

. . . .

 

. .

 

— *— *— *— 1— 1— 1— *— *— 1— 1— 1— 1— 1— 1— 1— 1— 1— 1— 1— 1— 1— 1— 1— 1— 1— 11_1_L 1 1 1 1 t l 1 l i 1 f l 1 i i i i | i | | i , i i t i t i t i i , . . . ,

 

 

1— *— 1— 1— 1— *— 1— 1— 1— 1— 1—

1— 1— 1— 1— 1— 1— 1— 1— 1— 1— 1— 1— 1___»

»

1

«

»

l

l

»

1

1

»

1

1

t

1

1

1

1

 

1

l

1

1

 

1

l

|

|

|

 

|

|

i

I

1

l

i

i

r

1

l

1

1

i

 

i

1— i— 1— i—

l—J —

1— 1— l— i— l— l

l

l— 1— I— 1— 1— 1—

1— 1— »

l

«

»

»

1

«

»

l

»

>

»

1

1

1

1

1

1

1

1

1

 

1

i

l

i

 

1

t

i

i

i

 

|

i

i

Г

i

i

i

i

 

 

 

 

.

 

 

1 1 1 1 1 1 * 1 1 - 1 1 1 1 »

1 1 f

1 1 »

1 1 1 -1 1 1 »

»

»

i

I

»

t

1 1 «

1 1 1 »

1 1 1 1 1 1 f

 

1 1 1 1 1

 

..................................................

 

 

 

 

 

 

.......

 

,

 

 

 

 

 

1 1 1 ! 1 1 1 1 1 1 f - J ' 1 1 M 1 1 1 1 *■ 1 ' 1 1 »■ ■ » 1 » ' » 1 » 1 » > » « » ' » » 1 > 1 1 » » » » t i- J .1 1 1 1 » > 1 , , ,

Рис. VII. 11. Запись ФОРТРАН-програг.шы на бланке

О. — означает число типа REAL;

О— число типа INTEGER.

ВФОРТРАНе имеется несколько типов функций, из которых наиболее важными являются стандартные функции и функции, определенные программистом. Иденти­ фикатор стандартной функции обязательно оканчивается буквой F, а результат функции принадлежит к типу INTEGER, тогда и только тогда, когда ее идентифи­ катор начинается с буквы X.

Примеры стандартных функций:

ABSF (X) — абсолютная величина;

SQRTF (X) = V IT , EXPF (X) = е*; SIN F (X) = sin X;

FLOATF (X) — значение в области REAL, соответствующее аргументу IN ­ TEGER; X F IX F (X) — значение в области INTEGER, соответствующее аргументу

REAL.

Идентификаторы функций, определяемые программистом, не должны оканчи­ ваться на F, а результат относится к типу INTEGER в том случае, если первая буква идентификатора есть / -5- N.

Пример: SUM (FOOT, J ) — функция для выполнения суммирования первых J членов массива FOOT.

Для изменения естественного порядка следования команд используются инструк­ ции передачи управления. В нашем примере (рис. VII. 11) это:

GO ТО 20 — безусловная передача управления оператору с номером 20; IF (ABSF (TEMP)—ER) 30, 30, 40 — условная передача управления (так называемая «ариф­ метическая инструкция IF»):

если

ABSF (TEMP) ^

ER оператору №30;

если

ABSF (TEMP) >

ER -> оператору № 40.

Вообще говоря, в таком виде инструкции передачи управления осуществляются в зависимости от значения арифметического выражения Е = ABSF (TEMP) ER следующим образом:

при

Е

<

 

0

оператору,номеркоторого стоит первым

в списке;

в с

при

Е

=

 

0

-*■

оператору,номеркоторого является вторым

при

Е

>

 

0

оператору,номеркоторого стоит третьим

в списке.

 

Существует еще несколько видов инструкций передачи управления:

 

1) вычисляемая

инструкция

GO ТО:

 

 

 

например, GO ТО (39, 70, 11, 74), ITEM

 

 

 

П А = В

 

 

 

 

 

 

 

70 В = SQRTF (2.)

 

 

 

 

74 А = В * С

 

 

 

 

 

 

39 B =

C +

D .

 

 

 

 

 

 

Значение

целочисленной переменной ITEM

вычисляется, и если, например,

 

ITEM = 3, управление передается оператору №

11;

 

 

2) присваиваемая

инструкция GO ТО:

 

 

 

например,

 

 

 

 

 

 

 

10

ASSIGN 20

ТО ITEM

30)

 

 

 

GO ТО IT E M ,

(40, 20, 60,

 

 

 

20

Л

=

B C + D .

 

 

 

 

 

После слова ASSIGN стоит один из номеров операторов, содержащихся в списке инструкции GO ТО, к нему и происходит безусловный переход;

3) логическая инструкция IF:

например,

a)j 8 IF (A.EQ.B) GO TO 10

FALSE U «)

C = D * E

—30

IF (A.GT.O.b) SPEED = (A— B) *C TRUE

FALSE

TRUE-*'

—25

F = C

10D = EJC <------------------------------

6)—20 IF (.NOT.(P.OR.Q)) A = B/2.

FALSE

TRUE

—10

D = B/3.

Для организации циклов используется инструкция DO, в которой задается но­ мер последнего оператора в группе повторяемых команд и определяются значения, которые должен принимать индекс цикла.

Пример: DO 20 / = 1,500

STOCK (/) = STOCK (/) — OUT (I) 20 CONTINUE.

Эта инструкция вызывает повторное выполнение команд, стоящих после опера­ тора £Ю до оператора с номером 20, причем индекс I принимает значения-1, 2,..., 500.

Если шаг изменения индекса не равен 1, инструкция DO записывается в виде: DO 30 J = 2, 30, 2

SUM = SUM + X (J) 30 CONTINUE

(здесь индекс J изменяется от 2 до 30 с шагом 2).

Внашем примере (рис. VII. 11)

READ 10, X , ER

10 FORMAT (2 F 8.5)

является управляющим оператором ввода, состоящим из инструкции READ, ко­ торая обеспечивает чтение с вводного устройства чисел и присваивает их перемен­ ным X и ER , и инструкции FORMAT, которая описывает перечень и форму вво­ димых величин. В нашем примере .вводятся два числа в форме с фиксированной запя­ той (/Q, причем восемь первых колонок перфокарты отведены под изображение числа: пять колонок отведены под дробную часть числа, а три заняты целой частью.

В нашей программе инструкции

40 PRIN T 50, X, ER, TEMP, SUM, ITEM

50 FORMAT (4£20.8, /20)

обеспечивают вывод (печать) значений переменных X, ER, TEMP, SUM в форме чисел с плавающей запятой, состоящих из 20 символов каждое, из которых восемь будут принадлежать нормализованной мантиссе, а также вывод на печать значе­

ния ITEM в виде целого числа,

состоящего из 20 символов.

В ФОРТРАНе используются

подпрограммы типов FUNCTION и SU BROU*

TIN E.

 

Подпрограмма типа FUNCTION является сама по себе полной программой и полностью независима и отделена от программы, в которой она используется. Пре­ дусматривается возврат в основную программу с помощью оператора RETURN.

Пример. Подпрограмма типа FUNCTION вычисления суммы квадратов эле­ ментов одномерного массива в размерности 300 имеет вид:

FUNCTION SUM К (В, N) DIMENSION В (300)

S U M K = В (1) * В (1)

DO 20 / =

2, N

20 SUMK =

SUM К В (I) * В (!)

RETURN END

Обращение к подпрограмме типа FUNCTION из основной программы (MAIN PROGRAM) производится по ее наименованию.

Например, для вычисления квадратного корня из суммы квадратов элементов массива А размерностью LONG достаточно записать

SUSQR = SQRTF (SUMK (A, LONG))

Здесь вызывается подпрограмма SU MK, причем фиктивные аргументы В и N замещаются фактическими аргументами А и LONG соответственно.

Подпрограмма SUBROUTINE отличается от FUNCTION тем, что в качестве результатов может иметь массивы чисел (а не одну или несколько отдельных вели­ чин, как FUNCTION), и для вызова SUBROUTINE надо использовать инструк­ цию CALL.

Например, подпрограмма перезаписи группы чисел из одного массива в другой имеет вид:

SUBROUTINE SEND (X , Y, М) DIMENSION X (500), Y (500)

DO 10 J = 1, M Y (J) = A (J)

10CONTINUE RETURN END

Обращение к этой подпрограмме:

CALL, SEND (A, B, N)

STOP — инструкция останова. Инструкция EQUIVALENCE имеет вспомога­

тельный характер и предназначена для экономии памяти, так как в ней различные переменные привязаны к одним и тем же позициям памяти. Например:

EQUIVALENCE (SEAT, VS4\, А 13)

Здесь переменные SEAT, 1AS41, А 13 последовательно занимают одну и ту же ячей­

ку памяти.

Инструкция COMMON обеспечивает размещение на одном и том же месте пере­ менных, принадлежащих основной программе и подпрограмме.

Например, инструкции

COMMON A NEXT, BIT, К

COMMON CL1ST, VQUE, L

указывают, что переменная AN EXT должна быть размещена там же, где перемен­ ная CLIST, BIT — на том же месте, где VQUE, К — там же, где L.

Проблемно-ориентированный язык КОБОЛ. Основное отличие — приспособ­ ленность к алгоритмам с. многократным повторением однотипных операций при обработке информации табличного типа.

На отечественных машинах («Мннск-22», «Минск-32») реализован русский ва­ риант подмножества КОБОЛ — язык САОД (Система Автоматической Обработки Данных), который и будет рассмотрен.

Каждая конструкция КОБОЛа записывается в определенном для нее виде, или формате.

Литеры КОБОЛа: прописные буквы русского алфавита: арабские цифры; знаки (пробел); + ; —; *;/; = ; .; ,; ’; (;); П (подавление нулей); В (вставка пробела). Литеры используются для образования слов, для пунктуации (* () — .,), в фор­ мулах (+ сложение, — вычитание, / деление, * умножение, ** возведение в степень, = знак отношения или присваивания значения), при редактировании и в шаблонах. Слово — это последовательность не более 30 литер, начинающихся с буквы. Слово не может ни начинаться, ни заканчиваться дефисом, не может включать в свой

состав пробела (исключение из этого правила составляют литералы и шаблон). Примеры слов: А МЕТОД ВЫЧИСЛИТЬ ТАБ-НОМ-СЛУЖАЩЕГО Зарезервированные слова (136 слов) могут использоваться только в определен­

ном смысле и не могут быть введены в программу в качестве слов пользователя. Зарезервированные слова делятся на ключевые (наличие их обязательно) и вспомо­ гательные (могут быть опущены), которые используются только для удобства чте­ ния.

Пример:

ДЛЯ исх-дапные ПРЕДНАЗНАЧИТЬ МЛЗ СО СМЕНОЙ КАТУШЕК. ВЫЧИСЛИТЬ итог=итог+сумма ПРИ ПЕРЕПОЛНЕНИИ ВЫПОЛНИТЬ проверка.

Здесь слова ПРЕДНАЗНАЧИТЬ, СМЕНОЙ, ВЫЧИСЛИТЬ, ПЕРЕПОЛНЕНИЕ, ВЫПОЛНИТЬ — ключевые; слова ДЛЯ, СО, КАТУШЕК, ПРИ — вспомогатель­ ные.

Объектам, которыми оперирует программа, даются названия.

Словами пользователя (идентификаторами или значениями объектов) в форма­ тах называют наименования данных (и—д), массивов данных (н—м), процедур (н—п), целые константы (ц), а также литералы числовые (ч—л) и нечисловые (н—л).

Эти слова составитель КОБОЛ-программы вписывает в соответствии с алгорит­

мом решения задачи.

 

Литералы (константы) делятся па несколько видов:

литералы числовые (максимальная длина

12 литер, из них не более 10 цифр),

например:

 

—8 759 36421.5 +.0001;

последовательности не более чем из

нечисловые литералы — произвольные

127 символов, заключенные в кавычки, например:

’ВЕДОМОСТЬ ЗАРПЛАТЫ’

 

’РАСЧЕТНЫЙ — ЛИСТ’; именуемые литералы, которым присваивают наименования и значения в раз­

деле данных; фигуральные литералы — постоянные наименования, значения которых хра­

нятся транслятором и включаются в программы без описания в разделе данных (НУЛЬ, ПРОБЕЛ и др.).

Запись арифметических выражений в КОБОЛе совпадает с записью на языке ФОРТРАН, например:

(Л + С/Х ** D) * 2. * В + 40.

Исходная КОБОЛ-программа записывается в виде последовательности четырех самостоятельных разделов: идентификации, оборудования, данных и процедур.

Вразделе идентификации указывают наименование программы, фамилию про­ граммиста, дату написания и другую информацию, необходимую для документации.

Вразделе оборудования содержатся необходимые сведения об используемой для решения задачи ЭВМ, закрепляются наименования за отдельными элементами обо­

рудования и ключами, используемыми в программе. Этот раздел состоит из двух секций: конфигурации и ввода-вывода. Секции состоят из параграфов (описания используемых в программе ключей и т. п.).

Вразделе данных содержатся характеристики массивов данных, участвующих

вобработке. При этом в соответствующих секциях и статьях описываются особен­ ности организации массивов (количество записей в блоке, метод записи и др.), струк­

тура записей. Документ толкуется как запись. Состав записей раскрывается в соот­ ветствующих статьях описания, а число символов в позициях указывается шабло­ нами. С помощью уровней обеспечивается описание данных составной структуры.

Различают десять методов записи: РМ2ПЛ, ЖМ2ГТЛ, ЖГ6ПЛ, ЖГ6МЛ, ЯВ6ПЛ, ЯВ6МЛ, ЖГ6ПК, ЖГ6ПЧ, ЗГ4ПЛ, ЖВ4МЛ, В названиях методов первая буква указывает на способ подготовки и размещения данных (Ж — в жестком формате, Р — с использованием разделителей, Я — в ячейках памяти согласно внутреннему представлению, 3 — при перфорации «граф-записей»); вторая и третья буквы указывают код представления данных (Гб или Г4 — ГОСТ 10859—64 с 6 или 4 бит­ ными символами, М2—МТК-2, В6 или В4 — двоичные данные в двоичном виде, а бук­ венно-цифровые данные или данные для вывода — в коде ГОСТ 10859—64); послед­ ние две буквы указывают внешний носитель (МЛ — магнитная лента, ПЛ — пер­ фолента, ПК — перфокарты, П Ч — бумага устройства печати).

Шаблоны данных указывают форматы их значений, т. е. определяют допусти­ мое расположение символов в значениях. В шаблонах использованы следующие обозначения: 9 — цифра, А — буква или пробел, X — произвольная литера вход­ ного языка, Т — явное положение десятичной точки, М — неявное положение де­ сятичной точки, 3 — знак. Для сокращения записи шаблона применяется повто* ритель (К), где К — число повторяющихся символов. Шаблоны обеспечивают ре­ дактирование значений данных и приведение их к заданным форматам.

В разделе процедур описываются последовательности операций обработки дан­ ных в соответствии с алгоритмом решения задачи.

Пример КОБОЛ-программы. РАЗДЕЛ ИДЕНТИФИКАЦИИ.

ПРОГРАММА УЛУЧШЕНИЯ КОНСТРУКТИВНЫХ ПОКАЗАТЕЛЕЙ. АВТОР САПРЫКИН ВИКТОР ИВАНОВИЧ.

ДАТА-НАПИСАНИЯ 23 НОЯБРЯ 1972 ГОДА.

РАЗДЕЛ ОБОРУДОВАНИЯ. СЕКЦИЯ КОНФИГУРАЦИИ. РАБОЧАЯ МАШИНА. МИНСК-22. РАЗДЕЛ ПАМЯТИ 1000 СЛОВ. СЕКЦИЯ ВВОДА-ВЫВОДА. УПРАВЛЕНИЕ—МАССИВАМИ.

ДЛЯ ИС ПРЕДНАЗНАЧИТЬ ВК.

ДЛЯ СП1 ПРЕДНАЗНАЧИТЬ МЛ 1 СО СМЕНОЙ КАТУШЕК. ДЛЯ МР ПРЕДНАЗНАЧИТЬ МЛ 2.

УПРАВЛЕНИЕ—ВВОДОМ—ВЫ ВОДОМ. ОБЩАЯ ЗОНА ДЛЯ ИС, СП1.

РАЗДЕЛ ДАННЫХ.

СЕКЦИЯ МАССИВОВ.

СМ ИС МЕТОД ЖГ6ПК В БЛОКЕ 20 ЗАПИСЕЙ МЕТКИ ОПУЩЕНЫ 01 АССОРТИМЕНТ

02 НОМ 1 ШАБЛОН X (10).

02 КОЛ 1 ШАБЛОН 9 (5) ДЛЯ ВЫЧИСЛЕНИЙ.

СЕКЦИЯ РАБОЧЕЙ ПАМЯТИ.

77 ШАБЛОН 9 ДЛЯ ВЫЧИСЛЕНИЙ.

77 РАВ НОМ ШАБЛОН X (10). РАЗДЕЛ ПРОЦЕДУР.

ОТКРЫТЬ ВХОДНОЙ ИС ОТКРЫТЬ ВЫХОДНОЙ МР. ВЫДАТЬ К1 НА ЫШ.

ПП4 з а к р ы т ь c m

ПП2 ЗАКРЫТЬ ИС ЗАКРЫТЬ МР ОСТАНОВИТЬ РАБОТУ. КОНЕЦ ПРОГРАММЫ.

В приведенной программе:

ЫШ — устройство вывода на широкую печать; ВК — устройство ввода с пер­ фокарты; МЛ — магнитная лента.

6. МАТЕМАТИЧЕСКИЕ МЕТОДЫ И МОДЕЛИ

Математические методы

Проектирование и функционирование АСУП связано с использованием многих математических методов [12], среди которых основными являются:

1)оптимальное программирование (линейное, нелинейное, динамическое, ди­ скретное);

2)теория массового обслуживания;

3)теория игр и оптимальных решений;

4)теория вероятности и математическая статистика [15];

5)теория графов [67];

6)теория планирования эксперимента [16].

Линейное программирование. Задача линейного программирования представляет собой частный случай общей задачи оптимизации [72], в которой целевая функция и функции ограничений линейны. Обычными условиями при этом являются нера­ венства в функциональных ограничениях и требование неотрицательности перемен­ ных.

Влинейном программировании стандартная задача на максимум записывается

ввиде

max j/(*) = 2

c/*/j :

(VII.1)

п

î = 1 » т »

(VI 1.2)

/=1

 

 

ДГ/^0; /== 1,

п.

(VII.3)

Множество наборов (дс,-, хп), удовлетворяющих условиям (VII.2), (VII.3), называется областью определения задачи линейного программирования. Вектор

X = (xt, х2, хп), удовлетворяющий этим условиям, называется планом (или до­ пустимым решением) задачи. Расширенным планом задачи называют набор X =

= ( f (*)>

*i>

X J .

хп), обращающий в максимум линейную форму (VII. 1),

План

л

= (xj‘,

называется оптимальным планом (или решением) задачи. Расширенный план X * называется оптимальным расширенным планом, если план X* оптимальный. За­ дача линейного программирования называется разрешимой, если существует оп­

тимальный план (х*, Х п ) .

Часто используют векторно-матричное обозначение при записи стандартной за­ дачи на максимум:

шах СХ, А Х ^ В ,

где С — и-мерная вектор-строка; В — /n-мерный вектор-столбец; А — матрица порядка т X п.

Иногда целесообразно записывать задачу линейного программирования в кано­ нической форме:

max СХ, АХ = Ву Х ^ О .

Стандартную задачу легко привести к каноническому виду с помощью новых

неотрицательных

переменных.

Обозначим 1 = В А Х , тогда системы ограни­

чений

 

 

А Х ^ В и AX + Z = B f Z ^ O

эквивалентны.

каноническая

задача имеет я + т переменных.

Заметим, что

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

Все методы решения задач линейного программирования являются методами поиска. Сначала отыскивают экстремальную точку, оценивают в ней значение целе­ вой функции, затем рассматривают другую экстремальную точку и т. д. Для реше­ ния задачи линейного программирования чаще всего используют симплексный ме­ тод (симплекс-метод) и его модификации.

Примерами задач линейного программирования могут быть: задача о загрузке оборудования, задача о распределении ресурсов, задача о производстве сложного оборудования, транспортная задача.

Рассмотрим использование симплекс-метода для решения задачи линейного программирования. Пусть требуется оптимальным образом распределить нагрузку между двумя группами станков. Обозначим число деталей, выпускаемых станками первой группы через х1у а число изделий, изготавливаемых на станках второй груп­ пы — через х2. Каждая деталь, выпускаемая станком первой группы дает прибыль 4 руб., а деталь, выпускаемая станком второй группы — 3 руб. Станки имеют огра­ ниченную производительность, что отражается ограничениями.

Целевая функция

max {f(.v) = 4xJ +3х2\

при ограничениях:

^ 4000;

х2^ 6000;

* 1 + | *2^6000; х ^ О , /= 1 ,2 .

Приводим задачу к каноническому виду, вводя новые переменные *3, *4, *5:

*i + * з = 4000;

*„ + *, = 6000;

*1+

2

 

*я==6000;

__

^ Х2 +

* ,^ 0 , £ = 1,5.

В матричной записи

получаем

Г 1

0

 

"

r * n

 

0

1

 

 

4000)

 

 

* 2

 

 

 

 

* 3

6000

 

 

0

0 1

 

1

* 1

6000J

 

J

l* 5 j

 

Находим базисное (опорное) решение.

Число переменных / 1 = 5 на 2 превышает число уравнений т = 3, следовательно, две переменные можно выбрать в качестве свободных:

xt = 0 ; х2 = 0; *з = 4000; *4 = 6000; *5 = б000.

При этом

/о (лг) = 4х0 + 3х0 = 0:

Вычисляем коэффициенты хц таким образом, чтобы удовлетворялись условия:

5

Pj- Ц ъ г Р ц i = 3

—l

O 1

1

0

1

0

,

2

 

L1

T J

O

/ = ‘.2;

O

i O

- * »

* 3 2 "

 

 

1

0

*41

* j 2

O

 

/ 5 1

* 5 2 .

 

 

(1)(2) (3) (4) (5)

Вданном случае векторы базиса образуют единичную матрицу, поэтому

-*3I

* 3 2 “I

rl

° 1

 

 

 

 

 

*■11

* 4 2

0

1

 

 

 

 

 

* 5 !

* 5 2 _

1

2

 

 

 

 

 

3 -

 

 

 

 

 

Находим h

(х), /2 (х) из соотношения //(x )=

хуС/; / = 1 . 2:

 

 

 

pi

0 -,

 

1=3

 

 

 

 

 

 

[М * )/,(*)] = [000]

0

- Р «I;

 

 

 

 

 

 

1

3"-

 

 

 

определяем значение

 

 

 

 

 

/х (д:) —С*!= 0 — 4 = —4;

f2 (*) —С2= 0 —3 = —3.

Выберем Р1?

для которого

/у (*) — Су — самая

отрицательная. Для этого вы­

числим отношения x-Jxif.

 

 

 

 

 

* 3

 

 

Ч

 

6000

хь

6000

спп.

* 3 1 = 1^2=4000;

хп

 

~ ô - = œ ;

xf r

= m o '

i 78

Фиксируем индекс i = 3, для которого получено наименьшее значение отноше­ ния Xi/хф и берем

бо=*з/*31 = 4000.

Определяем новое решение:

х'1= 0 о*= — = 4000; *; = 0; х$=0;

*3 1

х{ = хА- ^ - - х п = 6000 - 4000x0 = 6000;

* 3 1

= *Г) - ü . хъ1 = 6000 - 4000х 1 = 2000.

* 3 1

Подсчитываем значение / (х):

f (*) = 4х 4000 + 3 x 0 = 1 6 000.

Делаем проверку:

/ (*)= /о (*) + 0 (Ci ■- h (*)) = 16 000. Таким образом,

r i

0

1

0

0 |4000\

0

1

0

1

0

0

0

 

2

 

 

 

 

 

 

 

6000

1

3

0

0 1_ 12Ô0 0 J

Найдем теперь третье решение, для которого величина / (х) принимает более

высокое

значение.

Выполняя аналогичные *расчеты, получаем:

*" =

4000;

л:Г, =

3000; *i'=0;

х ’[ =3000;

х .'= 0 .

При этом целевая функция

f(x ) = 4x4000 + 3x3000 + 0x0 + 0x3000 + 0x0 = 25 000.

Продолжая дальнейшие расчеты, находим очередное решение:

* '" = 2000; = 6000; д:'" =2000; д:'" = 0; х '" = 0,

при этом

/(*) = 4x2000 + 3x6000+0x2000 + 0x0 + 0x0 = 26 000.

Дальнейшие расчеты показали, что среди полученных на очередном этапе зна­ чений /у (х) — Cj нет отрицательных величин, следовательно, величину f (х) нельзя больше увеличить.

Таким образом, максимальная прибыль f (,v) = 26 000 руб. будет получена при изготовлении на станках первой группы л*! — 2000 деталей и на станках второй груп­ пы х2 = 6000 деталей.

Динамическое программирование. Динамическое программирование — это метод оптимального планирования многоступенчатого процесса, о котором _мы не имеем полной информации. Метод основан на следующем принципе оптимальности, пред­ ложенном Р. Белманом в середине 50-х годов: «Каковы бы ни были первоначальное состояние и решение в начальный момент, последующие решения должны удовлет­ ворять оптимальному поведению относительно состояния, получающегося в резуль­ тате первого решения». Принцип оптимальности позволяет проводить последова­ тельные оценки решений при переходе от n-то к (л — 1)-му шагу и проверять ка­ чество решения на предыдущем шаге. Этот процесс описывается с помощью рекур­ рентных соотношений. Принимается допущение об аддитивности целевой функции:

п—1

Ф { и а, U t...... и п. г ) = 2

1 = 0

где Ф — целевая функция, определяющая, например, общин объем производства (прибыль, длину пути и т. п.) за п периодов (от 0 до п — 1); Ui — затраты на раз­ витие производства в i-й период; / (Ui) — объем производства в /-м периоде.

Обычно задаются начальное и конечное состояния системы и требуется опреде­ лить оптимальный путь для перевода системы из начального состояния в конечное.

Управление движением системы осуществляется с помощью воздействий X/, выбираемых для каждого периода из множества допустимых в этом периоде воздей­ ствий. Задача динамического программирования математически формулируется

следующим образом: из множества допустимых управлений КД011 найти такое уп­ равление Vy которое переводит физическую систему из начального состояниями œ œ Ло д о п в конечное xK0„ œ ,Vko„ Д011, такое, чтобы некоторый критерий Ф (V) об­ ращался в максимум, т. е. Oopt = !у Х{ Ф (К)}. При этом система должна нахо­

диться в допустимой области.

Рассмотрим использование метода динамического программирования для опти­ мизации сроков выполнения работ по минимуму их себестоимости. Вначале пока­ жем, что стоимость работ есть функция времени их выполнения. Пусть, например, при строительстве промышленного объекта нужно выполнить определенный объем земляных работ. Общую стоимость работ можно определить по формуле

S = Siti -j- S2A/P H”*So^p == 5д_Л/р/р“I- S2.4/p А"*^з^р*

где SL — расходы по доставке, монтажу и демонтажу одной землеройной машины; S2 — стоимость одного дня работы машины; 53 — расходы по содержанию строи­ тельной площадки и накладные расходы; А — объем земляных работ; р — произ­ водительность одной машины; /р = А / р п — время выполнения требуемого объема работ; п — потребное число замлеройных машин.

Таким образом, стоимость 5 выполнения работ есть дискретная функция вре­ мени выполнения работ. Учитывая это обстоятельство, рассмотрим следующую задачу. Известно, что работа по монтажу производственного комплекса выполня­ ется в несколько этапов, для каждого из которых заданы себестоимости производства работ в зависимости от срока их выполнения. Требуется указать такую продол­ жительность каждого этапа, при которой суммарная себестоимость всей работы бу­ дет минимальна при заданном сроке выполнения работ. Это комбинаторная задача [18]. Число возможных вариантов очень велико и простой перебор их занял бы много времени. Использование динамического программирования обеспечивает целена­ правленный перебор и резко сокращает требуемый объем вычислений.

Пусть имеются следующие исходные данные (табл. VII.7), а также ограничение /р ^ 10 дней. Анализируя табл. VII.7, делаем вывод, что на первый и второй этапы » должно быть зарезервировано не менее трех дней, поэтому на третий и четвертый этапы может быть выделено 4, 5, 6 или 7 дней. Если на третий и четвертый этапы

отвести четыре дня, то стоимость выполнения их будет равна 500 руб. +

300 руб. =

=

800 руб. Если же на эти этапы выделить 5 дней, то получим два

равноценных

варианта:

 

 

день,

этап

№ 4 — 4 дня,

стоимость 500

руб. +

240

руб. =

=

I. Этап № 3 — 1

740

руб.

№ 3 — 2

дня,

этап

№ 4 — 3 дня,

стоимость 440

руб. +

300

руб. ==

=

II.

Этап

740

руб.

 

 

 

 

 

 

 

 

 

 

 

 

 

Различные варианты выполнения работ представлены в табл. VII. 8.

 

 

Из

табл. V II.8 видно, что минимальная

стоимость выполнения всей работы за­

висит

от общей

продолжительности

работ

следующим образом:

 

 

 

7 дней — 2300 руб.

 

 

 

 

 

 

 

 

 

 

8 дней — 2100

руб.

 

 

 

 

 

 

 

 

 

 

9 дней — 2000 руб.

 

 

 

 

 

 

 

 

 

 

10

дней — 1900 руб.

 

 

 

 

 

 

 

 

 

не

При решении задачи методом динамического программирования перебирались

все

возможные сочетания, а

стоимость

предыдущего этапа

комбинировалась

с минимальной стоимостью последующих.

 

 

 

10 днями,

то ми­

 

Следовательно, если срок выполнения работ ограничен 7, 8, 9,

нимальная

стоимость

получается при

выполнении этапов в сроки,

приведенные

в табл. VII.9.

Соседние файлы в папке книги