Здравствуйте, прошел курс "Концептуальное проектирование систем в AnyLogic и GPSS World". Можно ли получить по нему сертификат? У нас в институте требуют сертификаты для создания портфолио. |
Модель функционирования предприятия
Имитация склада готовых изделий
Для имитации склада готовых изделий используйте объект sink со следующими свойствами:
- Имя: ГотИзделия
- Класс заявки: Product
- Действие при выходе
kolGotIzd++; timeIzd = time()/kolGotIzd; costGotIzd += entity.cost; minCostGotIzd+=minCostIzd; koefIncrCostIzd = (costGotIzd+costBrakBlock)/minCostGotIzd; ostGotBlock1 = gotBlock1 - kolGotIzd - zamBlock1; ostGotBlock2 = gotBlock2 - kolGotIzd - zamBlock2; ostGotBlock3 = gotBlock3 - kolGotIzd - zamBlock3; ostGotBlock4 = gotBlock4 - kolGotIzd - zamBlock4;
Код свойства Действие при выходе введен для счёта количества kolGotIzd готовых изделий, их стоимости costGotIzd и коэффициента koefIncrCostIzd увеличения себестоимости изделия вследствие наличия брака.
Кроме того, ведется счёт готовых для сборки блоков, то есть изготовленных цехами и проверенных на постах контроля, но не использованных для сборки изделий блоков по типам ostGotBlock1… ostGotBlock4 на текущее модельное время.
Имитация склада бракованных блоков
Ранее (см. п. 6.2.4.2) для имитации склада бракованных блоков было рекомендовано использовать один объект sink.
Предположим, что требуется вести раздельный учёт забракованных блоков на постах контроля цехов и забракованных на стендах контроля и пунктах приёма изделий. Для разделения потока брака дополнительному полю entity.sign1 присваивались признаки 1 или 2.
- Перетащите объекты selectOutput и sink на прямоугольник с именем Склад бракованных блоков диаграммы класса Main.
- Разместите и соедините их согласно рис. 6.12.
- Поочередно выделите объекты имитации склада бракованных блоков, начиная с объекта selectOutput, и установите свойства согласно табл. 6.8.
Коды в свойстве Действие при выходе обоих объектов sink одинаковые. Они предназначены для счёта:
- стоимости costzbrakBlock забракованных блоков не по типам, а в целом всех блоков;
- количества забракованных блоков по типам allBrakBlock1… allBrakBlock4.
- Из палитры Картинки перетащите на сегменты имитации складов готовых изделий и бракованных блоков картинки Склад.
Свойства | Значение |
---|---|
selectOutput | |
Класс заявки: | Product |
Выход true выбирается | При выполнении условия |
Условие | entity.sign1 == 1 |
sink | |
Имя | БрПостКонтр |
Класс заявки: | Product |
Действие при выходе | if (entity.numBlBrak1 == 1) |
{costBrakBlock += costBlock1; | |
allBrakBlock1++;} | |
if (entity.numBlBrak2 == 1) | |
{costBrakBlock += costBlock2 ; | |
allBrakBlock2++;} | |
if (entity.numBlBrak3 == 1) | |
{costBrakBlock += costBlock3; | |
allBrakBlock3++;} | |
if (entity.numBlBrak4 == 1) | |
{costBrakBlock += costBlock4; | |
allBrakBlock4++;} | |
Имя | БрБлЗам |
Класс заявки: | Product |
Действие при выходе | if (entity.numBlBrak1 == 1) |
{costBrakBlock += costBlock1; | |
allBrakBlock1++;} | |
if (entity.numBlBrak2 == 1) | |
{costBrakBlock += costBlock2; | |
allBrakBlock2++;} | |
if (entity.numBlBrak3 == 1) | |
{costBrakBlock += costBlock3; | |
allBrakBlock3++;} | |
if (entity.numBlBrak4 == 1) | |
{costBrakBlock += costBlock4; | |
allBrakBlock4++;} |
В начало первого кода добавить:
if (entity.sign1 == 1) { код для БрПостКонтр } а во второго if (entity.sign1 == 2) { код для БрБлЗам }
Количественный результат будет аналогичным, только во время прогонов модели вы не сможете визуально наблюдать раздельные потоки забракованных блоков.
Организация переключения между областями просмотра
Добавьте свои собственные элементы презентации на ранее созданные области просмотра Mainview, Data, Result, Kont1 и Sbor, щелчком на которых будет производиться переход к той или иной области просмотра. Сделайте так, чтобы из любой области можно было переходить в любую другую область.
Для этого разместите на каждой области просмотра элементы презентации, показанные на рис. 6.13.
Начните с области просмотра Mainview.
- В Палитре выделите Презентация. Перетащите элемент text на область просмотра Mainview, разместите и введите в поле Текст: Предприятие (рис. 6.13). На странице Основные панели Свойства установите в поле Цвет: black, а также выберите выравнивание текста и шрифт.
- Перетащите второй элемент text, разместите и введите в поле Текст: Посты контроля блоков. На странице Основные панели Свойства установите в поле Цвет: blue, а также выберите выравнивание текста и шрифт. На панели Свойства выделите Динамические и в поле Действие по щелчку: введите код: test.Kontr1.navigateTo();
Замечание. Можете выбрать и другие цвета элементов презентации. При этом нужно исходить из того, чтобы различались по цвету текст открытой области просмотра и тексты закрытых областей просмотра.
- Перетащите третий элемент text, разместите и введите в поле Текст: Пункты сборки изделий. На панели Свойства выделите Динамические и в поле Действие по щелчку: введите: sborka.Sbor.navigateTo();
- Перетащите четвертый элемент text, разместите и введите в поле Текст: Исходные данные. На панели Свойства выделите Динамические и в поле Действие по щелчку: введите: Data.navigateTo();
- Перетащите пятый элемент text, разместите и введите в поле Текст: Результаты моделирования. На панели Свойства выделите Динамические и в поле Действие по щелчку: введите: Result.navigateTo();
Таким образом, с области просмотра Mainview можно будет переходить на любую из четырех областей просмотра. При этом элемент презентации открытой области высвечивается черным цветом, а остальные элементы презентации - голубым цветом.
- Скопируйте элементы презентации так, как они показаны на рис. 6.13.
- Последовательно переходите на остальные области просмотра, вставьте скопированные элементы презентации и внесите правки в их свойства согласно табл. 6.9.
Построение модели для проведения простого эксперимента завершено. Теперь отладьте модель и проведите эксперимент.
Элемент презентации | Действие по щелчку |
---|---|
Data | |
Предприятие | Mainview.navigateTo(); |
Посты контроля блоков | test.Kontr1.navigateTo(); |
Пункты сборки изделий | sborka.Sbor.navigateTo(); |
Исходные данные | |
Результаты моделирования | Result.navigateTo(); |
Result | |
Предприятие | Mainview.navigateTo(); |
Посты контроля блоков | test.Kontr1.navigateTo(); |
Пункты сборки изделий | sborka.Sbor.navigateTo(); |
Исходные данные | Data.navigateTo(); |
Результаты моделирования | |
Kontrol | |
Предприятие | get_Main().Mainview.navigateTo(); |
Посты контроля блоков | |
Пункты сборки изделий | get_Main().sborka.Sbor.navigateTo(); |
Исходные данные | get_Main().Data.navigateTo(); |
Результаты моделирования | get_Main().Result.navigateTo(); |
Sbor | |
Предприятие | get_Main().Mainview.navigateTo(); |
Посты контроля блоков | get_Main().test.Kontr1.navigateTo(); |
Пункты сборки изделий | |
Исходные данные | get_Main().Data.navigateTo(); |
Результаты моделирования | get_Main().Result.navigateTo(); |