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

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

Рубрика Экономико-математическое моделирование
Вид дипломная работа
Язык русский
Дата добавления 05.09.2009
Размер файла 224,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Иногда при вводе формулы Excel выдает значение, которое начинается с символа решетка (#). Это говорит о том, что данная формула возвращает ошибочное значение. В подобном случае следует исправить формулу (или ссылку на ячейку содержащуюся в этой формуле), чтобы избавиться от сообщения об ошибке. Если ячейка полностью заполнена знаками решетки (#), это означает, что столбец недостаточно широк, чтобы отобразить некоторую величину. В этом случае нужно или расширить столбец, или изменить числовой формат ячейки.

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

Сценарий представляет собой набор сохраненных программой Excel значений, которые она может автоматически подставить в ячейки рабочего листа. Сценарии можно использовать для прогноза результатов моделирования и расчетов. Существует возможность создать отчет по результатам работы сценария, который содержит как исходные, так и итоговые значения, что позволяет прослеживать зависимости между данными в таблице [11].

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

В Excel существует возможность красочно оформлять рабочие листы, используя для этого различные графические объекты. Причем такие объекты можно создавать непосредственно в самой программе Excel, а можно внедрять из других приложений. Для создания графических объектов в Excel предназначен встроенный графический редактор, доступный при наличии панели инструментов Drawing (Рисование).

Ошибочное значение

Описание

# ДЕЛ / 0!

1) Формула пытается выполнить деление на 0.

2) Формула пытается выполнить деление на содержимое пустой ячейки

#ИМЯ?

В формуле используется имя, которое Excel не может распознать. Например, удалено имя, используемое в формуле, или при вводе текста где-то пропущена кавычка

#Н/Д

Неопределенные данные. Формула ссылается (прями или косвенно) на ячейку, содержащую функцию, ссылающуюся на недопустимый тип данных

#ЧИСЛО!

Проблема связана со значением; например, задано отрицательное число там, где необходимо положительное.

#ССЫЛКА!

Недопустимая ссылка; например, формула ссыпается на ячейку, удаленную из рабочей таблицы.

#ЗНАЧ!

В формулу включен аргумент недопустимого типа.

Рис. 1.4.4.1. Типы ошибок в формулах Excel

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

2.2 Visual Basic for Application

VBA является единой средой разработки приложений во всех программах Microsoft Office 2003. Основные принципы работы в среде VBA и в среде Visual Basic 2003 идентичны. Перечислим главные преимущества, получаемые в результате применения языка VBA.

Во-первых, с помощью VBA можно записывать последовательности повторяющихся команд, характерных для какого-либо приложения, и назначать правила (условия), в соответствии с которым эти последовательности (процедуры VBA) будут вызываться в приложении. Например, после нажатия некоторой кнопки, рабочий лист Excel будет отформатирован с учетом ваших требований, записанных на VBA и сохраненных в рабочей книге или шаблоне.

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

Наконец, использование единого языка программирования способствует более тесному взаимодействию Excel с продуктами Microsoft Office. С помощью VBA можно разрабатывать приложения, одновременно применяющие компоненты нескольких программ [12].

В Excel существует возможность создавать собственные макросы и таким образом автоматизировать выполнение основных операций. Макрос представляет собой последовательность команд и функций, записанных в модуле VBA. Насколько сложными могут быть макросы, можно судить по входящим в пакет поставки Excel надстройкам, при создании которых использовались средства макропрограммирования.

Существует два способа создания макроса: записывать свои действия во время работы с листом Excel или же написать макрос, используя редактор Visual Basic.

Наиболее простым способом создания макрокоманды является ее запись с помощью макрорекордера, и для этого вовсе не нужны глубокие знания по программированию. Работа макрорекордера во многом напоминает работу обычного магнитофона, осуществляющего запись и воспроизведение звука. Макрорекордер протоколирует все выполняемые пользователем действия и представляет их в виде VBA-кода.

Однако следует помнить, что «собственноручно написанные макросы позволяют создавать гораздо более мощные и гибкие программы, чем макросы, записываемыми с помощью макрорекордера, но, конечно, записать макрос гораздо проще, чем создать его программный код [10].

Процесс записи макроса с помощью макрорекордера можно условно разбить на три следующих этапа:

запуск макрорекордера;

присвоение макросу имени;

выполнение записываемых операций;

завершение записи.

Редактирование VBA-модулей выполняется в среде Visual Basic for Applications, в которой пользователю предоставляются средства для разработки программ, анализа связей между объектами (VBA является объектно-ориентированным языком программирования), отладки программ и их организации в единый программный комплекс (проект).

В VBA текст макроса оформляется в виде процедуры Sub. Данная процедура создается на основе событий (таковым может быть, например, изменение размера окна или щелчок на кнопке) и методов. Каждому событию поставлены в соответствие методы, которые задают необходимость выполнения определенных операций при наступлении данного события. Так, при щелчке на ярлычке рабочего листа событием является изменение активного листа. Благодаря связанному с этим событием методу лист, на ярлычке которого был произведен щелчок, активизируется и отображается на переднем плане. В зависимости от типа активизированного листа изменяются и некоторые команды меню. В VBA пользователь может задавать собственные события и ставить им в соответствие методы.

Visual Basic для приложений

Visual Basic для приложений -- это объектно-ориентированный язык макропрограммирования высокого уровня, встроенный во все программы пакета Office 2003. Включение в указанный пакет современного полнофункционального языка программирования, инструментов для написания на нем программ, их редактирования и отладки, а также обширных библиотек стандартных программ позволяет создавать программные продукты, способные с достаточной полнотой автоматизировать решение конкретных задач пользователя.

Основные понятия языка Visual Basic for Applications.

VBA является объектно-ориентированной средой, содержащей большой набор объектов, каждый из которых обладает множеством свойств и методов. Количество этих объектов может напугать новичка, но, к счастью, для того чтобы начать работать, знать их всех вовсе не обязательно. Сам объект и все инструменты, необходимые для его создания, отображения или, скажем, уничтожения, относятся к определенному классу. Имя класса указывает на тип объектов, которые он содержит. Классы можно рассматривать как основу для создания других объектов этого же типа. Поэтому все объекты одного класса, например класса TextBox, будут «действовать» одинаково. В других языках программирования вы можете сгруппировать связанные друг с другом данные и ссылаться на них, используя общее имя, предположим Employees или Рroducts, но в соответствии с объектно-ориентированной методологией класс обязательно должен включать в себя и исполняемый программный код.

Свойства и методы являются членами класса. С помощью свойств описывается, как выглядит объект, в частности дается информация о приемах форматирования текста, цвете и размере шрифта. Методы являются процедурами, или, другими словами, множеством осуществляющих определенную задачу операторов, которые могут быть выполнены для объекта (процедуры создания и удаления объекта, процедуры событий, определяющие принцип взаимодействия объекта с пользователем, и т. д.) [12].

Объекты

При объектно-ориентированном программировании практически все компоненты среды разработки являются объектами. В Excel VBA-объектом считается любой элемент приложения -- ячейка, лист, рабочая книга, диаграмма. Фактически объектом является и само приложение Excel. Объекты могут включать области ячеек, рамки ячеек, окна, сценарии, стили, и этот список можно продолжить. Каждый класс объектов имеет свое множество свойств, функций и событий.

Когда вы добавляете объект на рабочий лист, создается экземпляр класса объектов, и объекту присваиваются те значения свойств, которые определены в этом классе. По умолчанию экземпляры одного и того ж класса имеют имя, которое состоит из имени родительского класса и порядкового номера. Свойства каждого экземпляра одного и того же класса инициализируются одними и теми же значениями, за исключением свойства Name. Так как VBA присваивает значения всем элементам, которые в этом нуждаются, пользователю действительно не нужно много знать, чтобы начать работать в данной среде.

Свойства

Свойство является атрибутом объекта, описывающим, как объект выглядит (его цвет, размер и местоположение) и как он действует (является ли видимым, ссылается ли на другой объект). Когда вы создаете объект, Excel выполняет процедуру создания экземпляра этого объекта. Данная процедура, хранимая в классе объектов, присваивает значения всем свойствам, что позволяет вам сразу же работать с объектом. Если вы захотите изменить несколько свойств, то обнаружите, что в большинстве своем они заданы именно так, как вам нужно, поэтому вносить изменения вам не придется. Для того чтобы в макросе VBA присвоить свойству новое значение, необходимо лишь создать оператор присваивания, в котором слева от знака равенства будут указаны имя и свойство объекта (разделенные точкой), а справа -- новое значение. К примеру, указанный ниже оператор заменит присвоенное по умолчанию имя листа Sheetl именем Accounts (Счета):

SheetI.Name- "Accounts"

Свойство листа Name отображается на его ярлычке. Причем данное свойство входит также во множество других классов.

Методы

Метод -- это действие, которое может быть выполнено над объектом. Методы реализуются посредством выполнения процедуры, которая является членом класса объектов. Синтаксис вызова метода таков; имя объекта и имя метода, разделенные точкой. К примеру, для того чтобы использовать метод Protect для защиты объекта Sheetl от внесения изменений, вам следует ввести такую команду:

Sheetl.Protect

События

Всякий раз, когда пользователь взаимодействует с определенным объектом на рабочем листе, совершается событие. Каждый класс объектов имеет собственную группу событий, на которые объекты данного класса реагируют. Так, рабочая книга имеет событие NewSheet, которое выполняется всякий раз, когда пользователь добавляет в нее новый лист; событие SelectionChange происходит при выборе пользователем другой ячейки или области ячеек. При создании процедуры события Excel автоматически добавляет в ее код первую и последнюю строки; при желании вы можете самостоятельно написать программу для обработки события, на которое должны реагировать объекты.

Взаимодействие объектов, свойств и методов

Когда вы создаете лист в рабочей книге, функцией-членом в классе Worksheet создается объект Worksheet. Значения свойств нового объекта присваиваются по умолчанию (например, значение свойства Name, объект стиля ссылок А1 или R1C1), и с объектом можно сразу же работать. К этому объекту можно применить любой из встроенных в класс методов, таких как Printout или Save, и создать программу реагирования на такие события, как SheetCaleulate или, скажем, Open.

Использование свойств и методов, возвращающих объекты

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

Workbooks{"Bookl").ActlveSheet.Name= "Expenses"

Метод Workbooks("Bookl").ActiveSheet возвращает объект Worksheet, который содержит активную на данный момент таблицу, находящуюся в рабочей книге Bookl. Свойство Name является свойством объекта Worksheet, а не объекта ActiveSheet. Так как лист Sheetl считается активным, то этот оператор присваивания эквивалентен следующему:

Sheetl.Name= "Expenses"

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

Свойство ActiveCel1 возвращает объект Range -- одну или несколько ячеек, обращение к которым необходимо произвести одновременно. Это свойство является членом классов Application (активное приложение, в данном случае -- Excel) и Window (активное окно) и возвращает область ячеек, которая содержит активную ячейку, находящуюся в активном окне активного приложения. Вот как это выглядит в коде:

Application.ActlveWlndow.ActiveCell.Borders.Color = vbRed

Так как в каждый момент времени активной может быть только одна ячейка, то свойства ActlveCell объектов Application и Window ссылаются на одну и ту же область ячеек. Таким образом, этот оператор можно переписать по-другому -- так:

ActiveWindow.ActiveCell. Borders. Color = vbRed

или так:

Application.ActiveCell.Borders.Color = vbRed

А в связи с тем, что возвращаемый объект Range определяется однозначно, оператор можно переписать и следующим образом:

ActiveCell.Borders.Color - vbRed

Свойство Borders тоже относится к числу свойств, возвращающих объект. Часть оператора ActlveCellBorders возвращает объект Border (рамку области ячеек), а затем свойству Color (цвет) этого объекта присваивает значение red (красный). Префикс vb, предшествующий значению red, указывает на то, что это значение является константой Visual Basic, в отличие от переменных, которые нужно описывать в программе.

Объект, возвращаемый свойством ActiveCell, - это объект Range. Таким образом, свойство Borders задает прямоугольную рамку вокруг группы ячеек, определенных в объекте Range.

Оператор Application.ActiveWIndow.ActiveCell.Borders.Color = vbRed

станет более понятным, если прочитать его справа налево: «Цвет расположенной в активном окне приложения рамки области ячеек, которая содержит активную ячейку, становится красным [10].

Области в Excel -- объекты VBA

Объекты Range определяют ячейки или области ячеек, которым можно присваивать значения, записывать в них формулы и с которыми можно работать вручную. В частности, действие оператора ActiveCell.Borders.Color = vbRed эквивалентно команде Cells (Ячейки) меню Format (Формат) и изменению значения в поле Color (Цвет) вкладки Border (Граница) диалогового окна Format Cells (Формат ячеек).

Кроме того, существует свойство Range, которое возвращает объект Range. Данное свойство позволяет использовать ссылку на ячейку или область ячеек, обращаясь к ней как к аргументу. Правда, здесь имеется одно ограничение: ссылки должны записываться с применением относительной или абсолютной адресации только в стиле А1:

Range(Al")

Range("$ASl")

Свойство Range возвращает объект Range, поэтому все свойства и методы, связанные с этим объектом, могут быть установлены посредством данного свойства. Свойство Range также может использоваться для возвращения объекта Range, который применяет ссылку на ячейку А1 (свойство Value возвращает значение ячейки А1):

Range('Al"). Value

Если ячейка А2 содержит формулу, то результат можно вычислить, воспользовавшись методом Calculate объекта Range, который возвращает свойство Range:

Range("A2").Calculate

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

Range("A3:B5.C3:D8").Value = 0

Свойство Range также можно использовать с двумя аргументами, которые указывают на ячейки, находящиеся в разных углах области ячеек, расположенных на одной диагонали. В частности приведенный ниже оператор выбирает ячейки области А1:С4:

Workbooks("Bookl").Sheets("Sheetl") Range{'Al","C4"}.Select

Процедуры и функции VBA

В VBA поддерживается следующая программная структура. На высшем уровне иерархии стоит приложение, далее идут проекты, связанные с фактическими документами этого приложения. На третьем уровне находятся модули (модули приложения, модули пользователя, модули класса, модули форм и модули ссылок), а на последнем -- их процедуры и функции. Схематически такая иерархия показана на рисунке 1.1 [12].

55

Рисунок 1.1 - Программная структура в VBA

Модуль -- это часть программы, оформленная в виде, допускающем ее независимую трансляцию. Модуль состоит из двух разделов: раздела объявлений (Declaration) и раздела процедур и функций. В первом разделе описываются глобальные переменные, типы, определенные пользователем, и перечисляемые типы, во втором -- процедуры и функции. Вы уже знаете, как создаются и используются макросы. Все они сохраняются в документах или шаблонах программ Office 2003 в виде процедур, написанных на языке VBA. Процедурой называется фрагмент кода (минимальная семантически законченная программная конструкция), заключенный между операторами Sub и End Sub. Синтаксис процедуры следующий:

[Private | Public | Friend] [Static] Sub имя_процедуры (аргунент_1, аргумент_2. ...аргумент_n)

<оператор VBA>

<оператор VBA>

<оператор VBA>

End Sub

Синтаксис функций несколько отличается от синтаксиса процедур, так как для функции необходимо указать тип возвращаемого ею значения:

[Private | Public | Friend] [Static] Function имя_функции (аргумент_1, аргумент__2, ...

аргумент_n As тип_возвращаемого_значения

<оператор VBA>

<оператор VBA>

имя - вычисленное_значение

End Function

Ключевое слово Private задает следующую область видимости для процедуры - модуль, в котором она описана. Значит, ее могут вызывать только процедуры этого же модуля. Ключевое слово Public, наоборот, объявляет процедуру доступной для всех модулей проекта. С помощью ключевого слова Friend процедура или функция становится видимой только в том проекте, где был описан класс, членом которого она является. По умолчанию любая процедура общедоступна, то есть имеет статус Public. За операторами объявления следует необязательное ключевое слово Static, объявляющее все локальные переменные статическими (что такое статическая переменная, объясняется ниже).

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

Очень важную роль в программировании на VBA играет такая разновидность процедуры, как процедура без параметров. Процедуры данного типа могут выступать в роли командных макросов и процедур обработки событий. Схема работы с командными макросами не отличается от традиционной схемы работы с макросами. После создания подобного макроса с помощью редактора VBA ему можно назначить комбинацию клавиш для вызова, сопоставить его с командой меню или кнопкой на панели инструментов. Процедуры обработки событий представляют собой основу механизма связи событий с программным кодом для их обработки [8].

Функции в VBA, как правило, содержат списки параметров. Они не могут использоваться для обработки событий или, скажем, в качестве программных макросов. Вызывать же их можно как с помощью оператора Са11 , так и непосредственно в процессе расчета значения выражения VBA (из кода других процедур или функций) или формулы рабочего листа Excel.

Как правило, программа на языке VBA состоит из нескольких процедур и функций. Описание этих программных единиц хранится в модулях. Модули, в свою очередь, как составные части входят в проекты. Проекты сохраняются в файлах рабочих книг Excel 2003, но работать с ними можно лишь при наличии отдельного приложения -- редактора Visual Basic. Если нужно вызвать процедуру или функцию, описание которой находится в другом модуле, ее имя при вызове указывается следующим образом: имя_модуля.имя_процедуры. Но если описание процедуры или функции содержится в другом проекте, при ее вызове следует использовать иной синтаксис: имя_проекта. имя_модуля. имя_процедуры.

Переменные в VBA

Описанные в процедурах VBA действия выполняются над переменными или объектами. Переменная -- это поименованная область памяти, которая используется для хранения данных в течение работы процедуры. Переменные VBA аналогичны переменным других языков программирования. Использованию переменной обычно предшествует ее объявление посредством оператора D1 т, в котором указываются имя переменной и тип данных, для хранения значений которого она предназначена. Хотя такой оператор не является обязательным (VBA способен определять тип данных переменной по последнему символу ее имени: !, #, $, %, &, @), тем не менее, хороший стиль программирования требует предварительного описания всех используемых переменных. Имена переменных могут иметь длину до 255 символов (используются и символы кириллицы) и не должны содержать пробелов, знаков препинания и перечисленных выше специальных символов (за исключением символа @). Они не могут совпадать с ключевыми словами VBA и именами стандартных объектов.

Управляющие конструкции VBA

Управляющие конструкции языка программирования -- это инструкции и группы инструкций, применение которых позволяет изменять по мере необходимости последовательность выполнения других инструкций программы. В современных языках программирования управляющие конструкции подразделяются на ветвления и циклы. Ветвлением называется управляющая конструкция, позволяющая пропускать при выполнении те или иные группы инструкций в зависимости от значения условия (If...Else, If...Then...Else, If...Then...ElseIf...Else и Select Case).

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

Конструкция If...Then

Конструкция If...Then дает VBA указание принять простейшее из решений: если условие If истинно, нужно выполнить следующий за ним оператор (или операторы); если же условие ложно, нужно прейти к строке, расположенной непосредственно за условной конструкцией. Данная конструкция может располагаться как в одной, так и в нескольких строках. Однострочная конструкция If...Then выглядит так:

If условие Then оператор[ы]

Если условие выполняется, VBA обрабатывает оператор или операторы, которые следуют за условием; в противном случае эти операторы пропускаются. Конструкция If...Then, занимающая несколько строк (известна также как блок If), выглядит следующим образом:

If условие Then

оператор

[операторы]

End If

Если условие истинно, VBA, опять-таки, выполняет оператор или операторы, а в противном случае передает управление строке, расположенной под строкой End If.

Конструкция If...Then...Else

Конструкция If ...Then -- прекрасный инструмент для выполнения одного действия, зависящего от условия. Но если приходится выбирать одно из двух возможных направлений, в которых будут производиться действия, следует воспользоваться конструкцией If...Then...Else. С помощью этой конструкции выбирается одно направление деятельности, если условие истинно, и другое, если оно ложно.

Например, конструкция If...Then...Else является очень удобным инструментом для работы с окнами сообщений, содержащими по две кнопки.

Синтаксис рассматриваемой конструкции таков:

If условие Then

операторы_1.

Else

операторы_2

End If

Если условие истинно, VBA выполняет первую группу операторов -- onepaторы_1,но если условие ложно, осуществляется переход к строке Else, а затем выполняется вторая группа операторов -- операторы_2 [12].

Конструкция Select Case

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

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

Конструкцию Select Case легче читать, чем сложные операторы If ...Then, главным образом потому, что она более компактна. Кроме того, в нее легче вносить изменения: когда нужно изменить одно или несколько используемых значений, приходится просматривать меньшее количество операторов. Синтаксис оператора Select Case таков:

Select Case проверяемое_выражение

Case выражение_1

операторы_1

[Case выражение_2

операторы_2]

[Case Else

операторы]

End Select

На первый взгляд данный синтаксис может показаться сложным, но это не так. Оператор Select Case начинает конструкцию, а оператор End Select завершает ее. Проверяемое выражение определяет, какой из операторов Case будет выполнен, а выражение_1, выражение_2 и т. д. - это те выражения, с которыми VBA сравнивает проверяемое. Предположим, необходимо проверить, кнопку с каким номером выбрал пользователь в диалоговом окне или в форме. Значит, проверяемое выражение будет связано с событием выбора кнопки. Если это первая кнопка, значение проверяемого выражения совпадет с выражением_1. В таком случае будут выполнены операторы, находящиеся в строках, следующих за оператором Case выражение_1. Если это вторая кнопка, то значение проверяемого выражения совпадет с выражением_2, а следовательно, будут выполнены операторы, расположенные в строках, следующих за оператором Case выражение_2. То же можно сказать и об остальных операторах Case. Оператор Case Else подобен ключевому слову Else в операторе If. Он представляет собой необязательный оператор, который, будучи указанным, выполняется в тех случаях, когда ни одно из предложенных выражений не подходит.

3 РАЗРАБОТКА ИМИТАЦИОННОЙ МОДЕЛИ автоматизированного участка обработки деталей

3.1 Концептуальная модель

Для реализации ИМ предлагается рассмотреть функционирование автоматизированного участка обработки деталей, состоящего из входного конвейера, транспортного робота и двух станков для обработки деталей. Транспортный робот выполняет весь цикл переноски деталей двух типов на два различных станка. Каждая деталь в зависимости от типа переноситься разное количество времени, т.к. обслуживающие их станки находятся на разном расстоянии от входного конвейера. Детали могут образовывать очереди как перед перевозкой на транспортном роботе, так и перед обработкой на станках. После переноски деталей и последующей их обработки детали поступают на выходной конвейер (рисунок 2.1).

Рисунок 2.1 - Структурная схема объекта моделирования

Цель моделирования:

Изучение влияния интенсивности поступления деталей на загрузку транспортного робота и станков обработки.

Декомпозиция сложной системы.

Декомпозиция системы осуществляется просто: отдельными элементами модели будут очереди, транспортный робот, станки (в дальнейшем этапы обработки).

Выбор параметров и переменных.

В качестве параметров системы будет интенсивность поступления деталей на транспортировку и обработку на станках () ().

Переменными модели системы являются функция распределения длительности перевозки или обработки детали на i-том этапе .

В качестве статистик моделирования будут выступать:

- коэффициенты загрузки этапов обработки ();

- количество обработанных деталей на автоматизированном участке () и на i-м этапе обработки ();

- размер очереди к каждому этапу обработки ();

- общее время обработки деталей на i-ом участке обработки ().

Уточнение критериев эффективности.

Так как структура модели проста, то в качестве критериев эффективности могут выступать коэффициент загруженности этапов обработки () и среднее значение времён обработки деталей ().

В результате имитационного моделирования нужно найти следующие функциональные зависимости: и .

Аппроксимация реальных процессов математическими величинами.

При задании функций распределения длительность обработки детали на i-ом этапе обработки достаточна аппроксимация ступенчатыми функциями.

Выдвижение гипотез и предположений.

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

Установление основной структуры моделирования.

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

3.2 Формальное описание модели

Алгоритм активностей

Активность поступления деталей

Поиск места для детали:

'Ищется место для детали. Либо новая строка, либо на место ушедшей.

i = 2

While Cells(i, 1).Value > 0

i = i + 1

Wend

Cells(i, 1).Value = ModelTime

lsum = lsum + (ModelTime - tlprev) * l

l = l + 1

tlprev = ModelTime

Генерация поступления и определение типа детали

'Генерируем поступление деталей в зависимости от параметров табличного распределения и определяем тип детали в зависимости от значения параметра равномерного распределения.

tActions(0) = tActions(0) + RndN1(k, min, max, v)

If tActions(0) > tRun Then

tActions(0) = TBIG

End If

i = 2

While Worksheets("Elements").Cells(i, 2).Value > ""

i = i + 1

Wend

Sheets("Elements").Select

det = RndP(Rp)

If det = 1 Then

Cells(i, 2) = 1

Else

Cells(i, 2) = 2

End If

Активность перевозки детали

1 Поиск первой детали в очереди

'найти первую деталь в очереди, т.е. с минимальным значением в столбце 1 листа Elements

last = Range("A30000").End(xlUp).Row

tinmin = TBIG

For i = 2 To last

If (Cells(i, 3).Value = "") And (Cells(i, 1).Value > 0) And (Cells(i,1).Value < tinmin) Then

inmin = Cells(i, 1).Value

imin = i

End If

Next i

lsum = lsum + (ModelTime - tlprev) * l

l = l - 1

tlprev = ModelTime

Перевозка детали транспортным роботом

'присвоение состоянию робота значение 1, т.е. робот занят

'начало перевозки детали роботом

state = 1

tkprev = ModelTime

tActions(1) = ModelTime

Cells(imin, 3) = tActions(1)

If Cells(imin, 2) = 1 Then

tActions(2) = tActions(1) + Tdown

Else

tActions(3) = tActions(1) + Tup

End If

'окончание перевозки детали роботом, в зависимости от типа детали на перевозку затрачивается различное количество времени

'если тип детали 1

If (tActions(2) <= ModelTime) And (Cells(imin, 2) = 1) And (state = 1) Then

ksum = ksum + (ModelTime - tkprev)

tkprev = ModelTime

l1 = l1 + 1 'увелечение очереди на 1 к первому станку

Cells(imin, 4) = tActions(2) 'окончание перевозки детали роботом

tActions(1) = tActions(2) + Tdown 'возвращение робота от первого станка

tActions(2) = TBIG

End If

'если тип детали 1

If (tActions(3) <= ModelTime) And (Cells(imin, 2) = 2) And (state = 1) Then

ksum = ksum + (ModelTime - tkprev)

tkprev = ModelTime

l2 = l2 + 1 'увелечение очереди на 1 ко второму станку

Cells(imin, 4) = tActions(3) 'окончание перевозки детали роботом

tActions(1) = tActions(3) + Tup 'возвращение робота от второго станка

tActions(3) = TBIG

End If

'изменение состояния робота на 0, т.е. незанет

If (state = 1) And (tActions(1) <= ModelTime) Then

state = 0

tActions(1) = TBIG

End If

Активность начала обработки детали на станке

'обработка детали первого типа

If (state1 = 0 And l1 > 0) Then

'найти первую деталь в очереди, т.е. с минимальным значением в столбце 4 листа Elements

last = Range("D30000").End(xlUp).Row

tinmin = TBIG

For i = 2 To last

If (Cells(i, 5).Value = "") And (Cells(i, 2) = 1) And

(Cells(i, 1).Value > 0) And (Cells(i, 1).Value < tinmin) Then

tinmin = Cells(i, 1).Value

imin1 = i

End If

Next i

i1 = 1

state1 = 1 'станок занят

l1 = l1 - 1 'уменьшение очереди к станку на 1

If ModelTime > Cells(imin1, 4) Then

tActions(4) = ModelTime

Else

tActions(4) = Cells(imin1, 4)

End If

Cells(imin1, 5) = tActions(4)

tActions(6) = tActions(4) + one 'время обработки детали типа на станке

End If

обработка детали второго типа

If (state2 = 0 And l2 > 0) Then

'найти первую деталь в очереди, т.е. с минимальным значением в столбце 4 листа Elements

last = Range("D30000").End(xlUp).Row

tinmin = TBIG

For i = 2 To last

If (Cells(i, 5).Value = "") And (Cells(i, 2) = 2) And

(Cells(i, 1).Value > 0) And (Cells(i, 1).Value < tinmin) Then

tinmin = Cells(i, 1).Value

imin2 = i

End If

Next i

i2 = 0

state2 = 1

l2 = l2 - 1

If ModelTime > Cells(imin2, 4) Then

tActions(5) = ModelTime

Else

tActions(5) = Cells(imin2, 4)

End If

Cells(imin2, 5) = tActions(5)

tActions(7) = tActions(5) + two

End If

Активность окончания обработки детали на станке

'окончание обработка детали первого типа

If (tActions(6) <= ModelTime) Then

NextModelTime = False

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

Nb = Nb + 1

tbuysum = tbuysum + (ModelTime - Cells(imin1, 1).Value)

If i1 = 1 Then

state1 = 0

End If

Cells(imin1, 6) = tActions(6)

tActions(6) = TBIG

End If

'окончание обработка детали второго типа

If (tActions(7) <= ModelTime) Then

NextModelTime = False

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

Nb = Nb + 1

tbuysum = tbuysum + (ModelTime - Cells(imin2, 1).Value)

If i2 = 0 Then

state2 = 0

End If

Cells(imin2, 6) = tActions(7)

tActions(7) = TBIG

Call Trace("Finish", imin2)

End If

4 ВЕРИФИКАЦИЯ ИМИТАЦИОННОЙ МОДЕЛИ

4.1 Контроль за выполнением порядка активностей

Порядок выполнения активностей рассмотрим на примере одной детали при первом прогоне. Arrival, Begin, Processing, Finish - это активности. В первой активности происходит генерация деталей. Первая активность появляется согласно закону нормального табличного распределения с параметрами k, min, max, v(i), где i=. Поэтому первая активность появляется случайным образом. На рисунке 4.1 видно, что деталь после ее появления начинают обрабатывать во второй, третьей, а затем и в четвертой активности.

Рисунок 4.1 - Изменение откликов на листе Trace


Подобные документы

  • Понятие, цели и область применения имитационного моделирования. Исследование основных бизнес-процессов транспортной компании. Построение имитационной модели логистических процессов транспортной компании, её калибровка и верификация в целях оптимизации.

    дипломная работа [4,7 M], добавлен 18.02.2017

  • Статические и динамические модели. Анализ имитационных систем моделирования. Система моделирования "AnyLogic". Основные виды имитационного моделирования. Непрерывные, дискретные и гибридные модели. Построение модели кредитного банка и ее анализ.

    дипломная работа [3,5 M], добавлен 24.06.2015

  • Процедура проведения имитационных экспериментов с моделью исследуемой системы. Этапы имитационного моделирования. Построение концептуальной модели объекта. Верификация и адаптация имитационной модели. Метод Монте-Карло. Моделирование работы отдела банка.

    курсовая работа [549,5 K], добавлен 25.09.2011

  • Построение модели, имитирующей процесс работы отдела обслуживания ЭВМ, разрабатывающего носители с программами для металлорежущих станков с ЧПУ. Этапы решения задач по автоматизации технологических процессов в среде имитационного моделирования GPSS World.

    курсовая работа [64,6 K], добавлен 27.02.2015

  • Теоретические основы имитационного моделирования. Пакет моделирования AnyLogic TM, агентный подход моделирования. Разработка имитационной модели жизненного цикла товара ООО "Стимул", модели поведения потребителей на рынке и специфика покупателей.

    курсовая работа [2,0 M], добавлен 26.11.2010

  • Понятие имитационного моделирования, применение его в экономике. Этапы процесса построения математической модели сложной системы, критерии ее адекватности. Дискретно-событийное моделирование. Метод Монте-Карло - разновидность имитационного моделирования.

    контрольная работа [26,7 K], добавлен 23.12.2013

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

    курсовая работа [177,9 K], добавлен 25.06.2011

  • Исследование особенностей разработки и построения модели социально-экономической системы. Характеристика основных этапов процесса имитации. Экспериментирование с использованием имитационной модели. Организационные аспекты имитационного моделирования.

    реферат [192,1 K], добавлен 15.06.2015

  • Изучение понятия имитационного моделирования. Имитационная модель временного ряда. Анализ показателей динамики развития экономических процессов. Аномальные уровни ряда. Автокорреляция и временной лаг. Оценка адекватности и точности трендовых моделей.

    курсовая работа [148,3 K], добавлен 26.12.2014

  • Структура и параметры эффективности функционирования систем массового обслуживания. Процесс имитационного моделирования. Распределения и генераторы псевдослучайных чисел. Описание метода решения задачи вручную. Перевод модели на язык программирования.

    курсовая работа [440,4 K], добавлен 30.10.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.