- •Сан на не. Он рвение одов во причем (нтации in, где е, что в сфере х реше- менные веские стемы, плани- ических
- •1. Основы алгоритмического
- •1.3.1. Построение концептуальной модели
- •1.3.2. Разработка алгоритма модели
- •Разработка программы
- •Проведение машинных экспериментов с моделью системы
- •1.6.1. Моделирование простого события
- •Метод обратной функции
- •Моделирование случайных величин с показательным распределением
- •1.8.4. Моделирование случайных величин с нормальным распределением
- •1.8.5. Моделирование случайных величин с усеченным нормальным распределением
- •1.8.6. Моделирование случайных величин с произвольным распределением
- •1.9.1. Повременное моделирование с постоянным шагом
- •1.9.2. Повременное моделирование с переменным шагом
- •1.9.3. Последовательная проводка заявок
- •1.9.4. Поэтапная последовательная проводка заявок
- •Поток заявок первого приоритета
- •Гн1.1 Гк1.1 Гк1.2 Гн1.3 Гк1.3 Гкон
- •2. Классификация математических моделей экономических систем
- •3. «Паутинообразная» модель фирмы
- •4.4. Пример решения задачи моделирования
- •5.5. Пример решения задачи моделирования
- •6.4. Пример решения задачи моделирования
- •7.4. Пример решения задачи моделирования
- •1.1. Таблица свойств
- •1.2. Процедуры обработки прерываний
- •2.1. Таблица свойств формы 2
- •1.1. Таблица свойств
- •1.1. Таблица свойств
- •1.1. Таблица свойств
- •1.2. Процедуры обработки прерываний
4.4. Пример решения задачи моделирования
Рассмотрим пример решения задачи исследования системы массового обслуживания с помощью разработанной алгоритмической модели. Выберем следующие входные параметры:
среднее время между заявками Тз ср = 1 ч;
максимальное время ожидания 7^.max = 0,25 ч;
число случайных реализаций Np - 5000. Варьируемые переменные:
среднее время обслуживания заявок Г()бсср = 0,5; 1; 2; 4 ч;
81
число каналов обслуживания Агк= 1; 2; 3. Результаты расчетов приведены в табл. 4.1.
Таблица
4.1
N
Щ>
N
К
Г
овс.ср
С
сггн.ср
1
1
.0,5
6,27
2
2
0,5
7,12
3
3
0,5
5,53
4
1
1
4,24
5
2
1
5,83
6
3
1
4,74
7
1
2
2,33
8
2
2
3,61
9
3
2
2,94
10
1
4
0,95
11
2
4
1,40
12
3
4
0,65
Следовательно, при выбранных исходных данных, в частности при среднем времени между соседними заявками, равном 1 ч, наибольшая прибыль достигается при числе каналов Агк= 2.
6-3041
Проведенные
исследования показали, что оптимальное
число каналов зависит от соотношения
между величинами среднего времени
между соседними заявками и среднего
времени обслуживания (рис. 4.7).
Рис.
4.7. Зависимость оптимального числа
каналов N от параметров Т и Т
4.5. ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ
Задание 4.5.1
В интегральной среде Visual Basic 5.0 создайте программу «Модель бензоколонки», текст которой приведен в приложении 2. Произведите отладку программы с целью ликвидации формальных ошибок.
Задание 4.5.2
Произведите проверку программы расчетом. Подставьте те же исходные данные, которые были выбраны в приведенном выше примере. Убедитесь в том, что результаты расчетов практически совпадают.
Задание 4.5.3
Произведите самостоятельное исследование закономерностей функционирования фирмы с помощью алгоритмической модели. Выберите исходные данные, проведите расчеты и проанализируйте результаты моделирования.
Задание 4.5.4 (контрольное)
6*
83
Таблица
4.2
Характеристики
вариантов модели
№
варианта
Вид
распределения времени обслуживания
заявок
Род
отказа
№
варианта
Вид
распределения времени обслуживания
заявок
Род
отказа
1
Нормальное
1-й
7
Показательное
2-й
2
Равномерное
1-й
8
Усеченное
2-й
нормальное
3
Показательное
1-й
9
Нормальное
1-й
и 2-й
4
Усеченное
1-й
10
Равномерное
1-й
и 2-й
нормальное
5
Нормальное
2-й
11
Показательное
1-й
и 2-й
6
Равномерное
2-й
12
Усеченное
1-й
и 2-й
нормальное
5. МОДЕЛЬ
УПРАВЛЕНИЯ ЗАПАСАМИ
5.1. РАЗГОВОР ПРЕДПРИНИМАТЕЛЯ
С КОНСУЛЬТАНТОМ
Предприниматель: - Я хотел бы вложить средства в строительство склада для продажи автомашин. У меня уже есть контора, где будут оформляться документы на покупку, а затем покупатель будет отправляться на склад и получать автомашину. Я бы хотел разработать модель процесса работы склада.
Консультант: - На какие вопросы Вы хотите получить ответы с помощью модели?
Предприниматель: - Нужно установить, каким должно быть оптимальное количество автомашин, хранящихся на складе. Количество покупателей, приобретающих товар каждый день, заранее неизвестно. Его можно только ориентировочно оценить. Поэтому неопределенным является и минимальный запас, который нужно поддерживать на складе ежедневно. С одной стороны, с увеличением запаса товара растут эксплуатационные расходы. С другой стороны, при уменьшении запаса товара может возникнуть ситуация, при которой некоторые покупатели, оформившие покупку, не смогут получить товар к концу рабочего дня. По правилам, действующим на нашей фирме, в этом случае нужно выплачивать покупателям неустойку в довольно крупных размерах. В то же время организация подвоза новых партий товара требует нескольких дней и сопряжена с дополнительными затратами.
Консультант: - Зависят ли затраты на поставку дополнительной партии товара от ее объема?
Предприниматель: - Да, конечно. Стоимость затрат на хранение товара пропорциональна количеству автомашин, находящихся на складе в данный день. Стоимость затрат на поставку товара пропорциональна объему партии. Стоимость затрат, вызванных дефицитом товара, пропорциональна количеству покупателей, спрос которых остался неудовлетворенным.
Консультант: - Все ясно. С точки зрения разработчика моделей задача заключается в создании алгоритмической модели процесса функционирования сложной системы с целью оптимизации ее параметров. В данном случае условием оптимальности будет условие минимизации затрат на содержание склада в течение определенного периода времени.
Предприниматель: — А к какому классу будет относиться такая модель? Будет ли она моделью системы массового обслуживания?
Консультант: - Процесс, который Вы описали, не содержит характерных признаков системы массового обслуживания. Здесь нет потока заявок, нет явного описания процесса обслуживания, отсутствуют и правила обслуживания. Однако это, несомненно, должна быть алгоритмическая статистическая модель, так как среди входных переменных имеются случайные переменные. Одна из них - случайное число продаваемых ежедневно автомашин (ежедневный расход товара). Вторая - случайное число дней, затраченных на организацию поставки дополнительной партии товара. Для этих величин нужно подобрать подходящие по физическому смыслу стандартные распределения. Все остальные входные переменные могут задаваться как постоянные величины или варьироваться для различных вариантов расчета.
Предприниматель: - Для величины ежедневного спроса я могу указать только возможный диапазон ее изменения. Речь может идти о сотнях покупателей в день с некоторым отклонением в ту и другую сторону.
Консультант: - Это уже кое-что. Поскольку количество покупателей - это дискретная случайная величина, здесь больше всего подошло бы так называемое биномиальное распределение, которое при большом числе возможных значений (что мы и имеем в данном случае) может быть успешно заменено нормальным распределением.
Его характеризуют двумя параметрами: математическим ожиданием и средним квадратическим отклонением числа покупателей. Единственное дополнительное условие заключается в том, что полученное возможное значение случайной величины нужно округлить до целой величины.
Предприниматель: - Очевидно, так же можно подойти и к выбору вида распределения для случайной величины времени поставки партии товара?
Консультант: - Да, конечно. Здесь также можно использовать вместо биномиального распределения дискретной случайной величины нормальное распределение непрерывной случайной величины. Однако в данном случае диапазон возможных значений числа дней на поставку товара невелик, и поэтому такая аппроксимация является менее точной, чем для количества покупателей. Характеристиками распределения являются математическое ожидание и среднее квадратическое отклонение времени поставки партии товара. Естественно, что и в этом случае возможное значение случайной величины должно быть округлено до целого числа.
Предприниматель: - Так какие же характеристики нужно знать, чтобы можно было разработать модель?
Консультант: - Давайте перечислим. Ко входным переменным следует отнести следующие величины:
средний ежедневный спрос и среднее квадратическое отклонение ежедневного спроса;
среднее время поставки дополнительной партии товара и его среднее квадратическое отклонение;
стоимость хранения единицы товара на складе в течение одних суток;
стоимость затрат на доставку единицы товара; затраты, связанные с дефицитом каждой единицы товара; начальный уровень запаса товара; период работы склада.
Итого получилось семь входных переменных. К ним нужно добавить две варьируемых переменных: объем дополнительной партии товара;
критический уровень запаса товара, при достижении которого администратор склада должен заказывать новую партию.
Предприниматель: - А что будет определяться на выходе модели?
Консультант: - В качестве выходной величины можно использовать средние затраты на содержание склада за заданный период времени.
Предприниматель: - Средняя величина затрат для меня не является полной характеристикой работы склада. Мне важно знать, каков может быть верхний предел затрат. Это необходимо для того, чтобы избежать банкротства фирмы.
Консультант: - Действительно, среднее значение случайной величины не является ее полной характеристикой. Нужно еще учесть разброс этой величины. Поэтому в качестве показателя эффективности моделируемого процесса целесообразно выбрать максимальные гарантированные затраты с заданным уровнем гарантии.
Предприниматель: - А что характеризует такой показатель?
Консультант: - Он представляет собой максимальный уровень затрат, которые с заданной надежностью не могут быть превышены при длительном использовании склада. В какие-то периоды склад может работать с относительно малыми затратами, а в какие-то с большими затратами. Но практически никогда затраты не превзойдут величины выбранного показателя эффективности.
Предприниматель: - Ну что же, такой показатель меня устраивает. Только мне пока не ясно, каков должен быть уровень надежности?
Консультант: - Это зависит от того, какова Ваша «склонность к риску». Если Вы не хотите рисковать, то должны ориентироваться на высокий уровень надежности, порядка 0,99. Это означает, что только в одном из ста периодов функционирования склада затраты превысят величину показателя эффективности. Если Вы согласны на определенный риск, то можно выбрать уровень надежности 0,9. Тогда уже в десяти случаях из ста затраты превысят величину показателя эффективности.
Предприниматель: — Но кроме показателя существует еще критерий эффективности. Что он будет представлять собой в нашей модели?
Консультант: - Вопрос о выборе критерия эффективности возникает только тогда, когда имеется несколько вариантов или стратегий использования системы. В данном случае под стратегией мы можем подразумевать вариант сочетаний значений варьируемых переменных: объема партии товара и критического уровня товара, при достижении которого необходимо заказывать дополнительную партию. Критерием может быть условие минимума показателя эффективности при изменении варьируемых переменных.
5.2. КОНЦЕПТУАЛЬНАЯ МОДЕЛЬ
Имеется склад, где хранится запас однотипного товара. Начальный уровень запаса равен jVyp. В результате удовлетворения ежедневного спроса происходит уменьшение запаса на случайную величину, имеющую нормальное распределение с известными характеристиками: математическим ожиданием А/д и средним квадратическим отклонением стд. Затраты на хранение единицы товара в течение суток составляют $Ci.
Если на складе не останется товара, то администрации склада придется уплатить прибывшим покупателям компенсацию в размере $С3 за каждую недостающую единицу товара по отношению к заказанному количеству.
Чтобы избежать затрат, вызванных дефицитом товара, администрация склада периодически подает заявки на поставку дополнительных партий товара выбранного объема Part. Подача заявки производится в момент, когда уровень запаса товара снизится до выбранного уровня URmiTl. Время выполнения заявки является случайной величиной с нормальным распределением и известными характеристиками Мт и ат. Затраты на поставку единицы товара составляют $С2. Цикл работы склада составляет TD дней.
Требуется разработать математическую модель, которая бы описывала возможный реальный процесс, позволяла изучать его закономерности и выбирать наивыгоднейший режим работы склада, обеспечивающий минимальные затраты на его содержание.
В частности, требуется установить:
оптимальный уровень запаса L7Jmin, при достижении которого необходимо подавать заявку на поставку партии товара;
оптимальный объем партии товара Part.
В качестве показателя эффективности моделируемого процесса целесообразно выбрать максимальные гарантированные затраты на содержание склада (с заданным уровнем гарантии), определяемые по формуле
Cgar = Мс+ КаОс,
где Мс - средние затраты на содержание склада в течение периода TD дней;
ос - среднее квадратическое отклонение затрат на содержание склада;
Ка - квантиль, зависящий от уровня гарантии а (АГЦ=1,28 при а=0,9).
В качестве критерия выбора оптимального режима работы склада может быть принят минимум максимальных гарантированных затрат:
K(UR min, Part) : MIN{ Cgar (URmin, Part) },
где UR'mm - оптимальное значение уровня запаса товара, при достижении
которого необходимо подавать заявку на поставку новой партии; Part - оптимальный объем партии товара.
5.3. АЛГОРИТМ МОДЕЛИ
В качестве языка программирования для разработки компьютерной модели рассматриваемого процесса выбран Visual Basic 5.0.
Общий вид (макет) стартовой формы показан на рис. 5.1. Она включает следующие объекты управления:
Модель управления запасами
|
Part- |
|
URmin |
|
|
|
|
|
|
|
|
|
—-ST" |
|
MD |
|
|
|
|
|
Ct |
|
С2 |
|
|
|
|
|
|
||
|
"тЬ- |
|
Nr |
-3D-
Измените исходные данные и нажмите «Расчет» Nur,
ч
/'
' // / / / /
// /
сз
;
- .Максимальные гарантированные
* ^--s
..расходы
N.
**
»
*
»» _ "**■
--
Расчет
Очистка
Выход
Рис.
5.1. Макет стартовой формы: 1,2-
текстовые поля;
3
- командные кнопки
- текстовое поле «Начальный уровень товара»;
- текстовое поле «Объем партии товара»;
- текстовое поле «Среднее время выполнения заказа»;
- текстовое поле «СКО времени выполнения заказа»;
— текстовое поле «СКО дневного расхода»;
- текстовое поле «Стоимость хранения единицы товара»;
- текстовое поле «Штраф за отсутствие единицы товара»;
- текстовое поле «Период работы склада»;
— командную кнопку «Расчет»;
- командную кнопку «Очистка»;
- командную кнопку «Выход»;
- текстовое поле «Критический уровень товара»;
- текстовое поле «Средний дневной расход»;
- текстовое поле «Стоимость доставки единицы товара»;
- текстовое поле «Число случайных реализаций»;
- текстовое поле «Результат расчета».
Схема алгоритма процедур обработки прерываний, связанных с объектами стартовой формы, показана на рис. 5.2.
Рис.
5.2. Схема алгоритма процедур обработки
прерываний
После нажатия кнопки «Start» активизируется стартовая форма. С этого момента программа находится в режиме ожидания действий пользователя.
Цифрой 1 обозначено действие, заключающееся в корректировке исходных данных. Необходимые изменения вносятся в соответствующие текстовые поля.
Цифрой 2 обозначено действие, заключающееся в нажатии (с помощью мыши) кнопки «Расчет». В процедуре, связанной с этой кнопкой, оператор 3 осуществляет перевод исходных данных из символьной формы в числовую. Затем оператор 4 обращается к модулю общего назначения «Model3». Схема алгоритма этого модуля приведена на рис. 5.3.
После окончания работы модуля и выдачи на экран результатов моделирования работа процедуры, связанной с кнопкой «Расчет», заканчивается. Программа вновь переходит в режим ожидания действий пользователя.
Цифрой 5 на схеме обозначено действие пользователя, заключающееся в нажатии кнопки «Очистка». В процедуре, связанной с ней, производится очищение текстового поля для вывода результата моделирования. Затем может быть произведено изменение исходных данных и проведены новые расчеты с использованием кнопки «Расчет».
Цифрой 7 на схеме обозначено действие пользователя, заключающееся в нажатии кнопки «Выход». В результате работа программы прекращается.
В состав базового комплекта исходных данных входят:
начальный уровень запаса товара - Nyv;
средний ежедневный спрос товара - Л/д;
среднее квадратическое отклонение ежедневного спроса - <тд;
объем партии товара - Parr,
уровень запаса, при котором должна оформляться заявка на поставку дополнительной партии товара, - URmin;
среднее время поставки партии товара - Мт дней;
среднее квадратическое отклонение времени поставки товара - csT дней;
стоимость хранения единицы товара в течение суток - $Q;
стоимость поставки единицы товара - $С2;
стоимость затрат на компенсацию отсутствия товара на складе - $С3 за каждую недостающую единицу;
период функционирования склада - TD дней;
число случайных реализаций - Np.
Блок 1 обеспечивает обнуление глобальных переменных, к которым относятся:
MSC - начальное значение суммы случайных величин общих затрат на содержание склада для различных реализаций моделируемого процесса; SSC - начальное значение суммы квадратов случайных величин общих затрат.
Кроме того, в этом же блоке устанавливается начальное значение времени поставки дополнительной партии товара, которое выходит за пределы периода работы склада и равняется
Тпост.С = TD +1.
Оператор 2 представляет собой заголовок цикла случайных реализаций.
Блок 3 производит обнуление локальных переменных, к которым относятся:
SCi - начальное значение суммарных затрат на хранение товара в течение всего периода работы склада для одной реализации; 5с2 — начальное значение суммарных затрат, связанных с нехваткой товара в течение всего периода работы склада для одной реализации; Scз - начальное значение суммарных затрат на поставку дополнительных партий товара в течение всего периода работы склада для одной реализации; Т - исходное значение счетчика дней (модельное время);
Zajav - числовой признак отсутствия заявки на поставку дополнительной партии товара (если заявка подана, то Zajav =1).
Рис.
5.3. Схема алгоритма модуля «Model3»
В этом же блоке планируемое время поставки партии товара приравнивается к его начальному значению, т. е. Гпост = Гп^о- Наконец, текущий уровень запаса товара приравнивается к его начальному уровню:
V= N
Г /Уур.
Оператор 4 является началом циклического перебора дней работы склада. Оператор 5 увеличивает модельное время на один шаг (на одни сутки). Условный оператор 6 проверяет условие продолжения работы склада для каждой случайной реализации.
Оператор 7 обращается к процедуре «Norm», формирующей возможное значение нормированной, центрированной случайной величины с нормальным распределением. Оператор 8 определяет возможное значение величины случайного ежедневного спроса при заданном его математическом ожидании Мп и среднем квадратическом отклонении сгл. Результат расчета округляется до целого числа.
Условный оператор 9 проверяет условие наступления срока поставки дополнительной партии товара. Если этот срок наступил, то оператор 10 увеличивает текущий запас товара на величину объема партии Part. Одновременно здесь же числовой признак отсутствия заявки на поставку партии товара устанавливается на нуль. Кроме того, планируемое время поставки вновь выводится за пределы периода работы склада.
Оператор 11 определяет текущий уровень запаса товара на складе с учетом удовлетворения ежедневного спроса. В дальнейшем оператор 14 определяет затраты на содержание склада в текущие сутки.
Если количество заявок превысит текущий запас товара на складе, то в операторе 11 будет получено отрицательное число. В этом случае оператор 13 определяет затраты, связанные с дефицитом товара, и устанавливает значение текущего запаса на нуль.
Оператор 15 проверяет выполнение одновременно двух условий: превышает ли текущий запас минимально допустимый (критический) уровень и была ли уже оформлена заявка на поставку дополнительной партии товара. Если хотя бы одно из этих условий не выполняется, то в алгоритме происходит передача управления на начало цикла, т. е. оператору 4.
Если же одновременно выполняются оба условия, то группа операторов с 16-го по 19-й определяет затраты на поставку дополнительной партии товара.
Оператор 16 увеличивает текущие затраты на величину стоимости партии товара. Оператор 17 обращается к процедуре формирования возможного значения нормированной, центрированной случайной величины с нормальным распределением. Оператор 18 определяет возможное значение случайной величины времени выполнения заявки на поставку партии товара с учетом заданных параметров: среднего времени поставки и среднего квадратического отклонения времени поставки. При этом результат расчета округляется до целого числа. Оператор 19 устанавливает на единицу числовой признак подачи заявки.
Блок 20 служит для расчета суммарных характеристик затрат на содержание склада по формулам:
Sq — Sc i + Sc2 + ^сз» MSC = MSC + Sc~, SSC = SSc + Sc* Sc*
Блок 21 служит для определения показателя эффективности по формулам:
MC=MSC/ NP-
Gar = Mc+ 1,28-стс.
5.4. ГРАФИК ИЗМЕНЕНИЯ УРОВНЯ ЗАПАСА ТОВАРА
Типовой график изменения уровня запаса товара на складе с учетом дополнительных поставок показан на рис. 5.4.
В начальный момент на складе имеется Л^ единиц товара. В этот момент числовой признак подачи заявки на поставку дополнительного товара Zajav=Q, а время поставки превышает время окончания работы склада.
В результате удовлетворения случайного ежедневного спроса уровень запаса товара снижается. Если уровень запаса товара снизится ниже величины URmim то подается заявка на поставку дополнительной партии товара объемом Part единиц. В этот момент числовой признак Zajav становится равным единице, а время выполнения поставки определяется по формуле
7пост= Т + А7"посх= Т+Мт+пат,
где Т - текущее модельное время (в днях); Допоет - период выполнения заказа;
Мт - среднее время выполнения заказа;
ат - среднее квадратическое отклонение времени выполнения заказа; п - возможное значение нормированной, центрированной случайной величины с нормальным распределением.
Когда модельное время становится равным Гпост, поступает партия товара, и текущий уровень запаса товара скачком увеличивается на величину Part. В этот момент числовой признак Zajav становится равным нулю, а время поступления партии товара вновь приравнивается величине Ттуст0.