Главная  Полное построение алгоритма 

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [ 52 ] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] [101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117]

СЮСКмтвмт аз. ARR,COMP,TERM

Следующая работа, которую нужно выполнить, когда прибывает новый клиент,- это или поставить клиента в очередь, или если обслуживающее устройство свободно, то обслужить его. Если очереди нет (длина очереди определяется переменной QUEUE), то можно определить время ухода данного клиента (т. е. время полного обслуживания) из уравнения

COMP=CLOCK+

RANCOM(l, МАХС)

Тогда блок 5 становится таким, как на рис. 3.6.4.

Для завершения блока 6 также потребуется определить время завершения следующего обслуживания:

COMP=CLOCK-rRAi\COM (1,

МАХС)

Следует, однако, рассмотреть и особую ситуацию, когда очередь

становится пустой. Конечно, в этом случае время завершения следующего обслуживания не имеет смысла. Поэтому мы произвольно пола-гаел1 COMP=TERM-r-l, чтобы гарантировать, что завершение не является следующим запланированным событием. Тогда блок 6 становится TaKHivi, как показано на рис. 3.6.5.

Что еще осталось сделать? Во-первых, нужно задать начальные значения (ииициалнзовать) всем переменным, таким, как ARR, TERM,


Рис. 3.6.3. Б.чок-схема огтределепия счсдующего события.


СОМР=CLOCK+ R.ANCOM i;i,MAXC

QUEUE-=QUEUE+1

QMAX = MAX (QMAX, QUEUE)

ИС. 3.6.4. Блок-схема для нового прибытия.



QUEUE, QMAX, МАХА, MAXC и СОМР. Затем нужно определить подпрограммы для вычисления RANARR и RANCOM. Наконец, нужно представить какой-то вывод - в окружности, обозначенной Т на рис. 3.6.3. Заметим, что эта блок-схема еще не совсем полна. Например, не организован сбор данных - по существу мы регистрировали только QMAX.


C0MP=TERM4-1

C0MP = CLOCK+RANCOM 11,MAXC) QUEUE= QUEUE-1

--------------------------------J

Рис. 3.6.5. Блок-схема для завершения обслуживания.

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

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

Задача о пшенице, мышах и кошках

Жители одной деревни выращивают пшеницу, которая является для них основным продуктом питания. Они собирают 2 миллиона фунтов пшеницы каждый июль и хранят ее в амбаре. Хотя они потребляют только 100 ООО фунтов пшеницы в месяц (поэтому урожай дает запас на 20 месяцев), они иногда оказываются без пшеницы, так как мыши в амбаре съедают запасы.

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

Единственный выход для жителей деревни - убирать пшеницу из амбара, когда там остается меньше 1,5 миллиона фунтов. Затем они убивают мышеи, затопляя их. Однако этот метод не очень хорош:



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

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

Теперь ясно, что нужна математическая модель, имитирующая на ЭВМ систему пшеница - мыши - кошки. Это позволит за короткое время проделать большое число «экспериментов» для того, чтобы сравнить результаты различных стратегий и, возможно, найти среди них оптимальную.

Для построения модели нужно больше фактов и/или допущений. Например:

1. Каждая мышь съедает около 10 фунтов пшеницы в месяц.

2. Каждая мышь живет около 12 месяцев, т. е. каждый месяц от старости умирает приблизительно 1/12 всех мышей.

3. Если в амбаре нет пшеницы, все мыши умрут в течение месяца. К сожалению, в этом случае из полей в амбар переберутся 20 мышей. Следовательно, в амбаре никогда не бывает меньше 20 мышей.

4. Если на каждую мышь приходится больше 100 фунтов пшеницы, число мышей будет удваиваться каждый месяц. (Если W>100»M, то число рождений = М.) При меньшем количестве пшеницы число рождений есть наименьшее из чисел М и W/100

5. Кошки процветают при изобилии мышей. Если на одну кошку приходится более 50 мышей (т. е. М>50«С), то каждая кошка съедает 30 мышей в месяц. Когда М50»С, число съедаемых мышей в 30 раз больше наименьшего из чисел С и М/50.

6. Когда М<25»С (т. е. на кошку приходится меньше чем по 25 мышей), некоторые кошки умирают от голода. Когда нет мышей, каждый месяц умирает половина кошек; когда M<;25-»C, (25кС-УИ)/50 кошек умирают ежемесячно.

7. Когда мышей много (УИ>50»С), каждая кошка-самка (половина от общего числа кошек) приносит шесть котят в течение марта и сентября. Но, когда М<25*С, кошки настолько истощены, что они совсем не размножаются. Для промежуточных соотношений мыши/ кошки, 25*СМ50»С, число новорожденных кошек (в марте и сентябре) изменяется от О, когда М=25«С, до 3*С, когда М=50*С. Число рождений равно 3(М/25-С).

Заметим, что MIN (М, W/100) == Г/ЮО, а MIN (С, УИ/50) = М/50.- Прим.



[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [ 52 ] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] [101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117]

0.001