Разработка имитационной модели процессов для исследуемого объекта "Департамент стратегического планирования Вологодской области"
Значение и актуальность теории массового обслуживания, теории временных рядов. Логико-математическое описание моделируемой системы. Разработка формализованной схемы объекта моделирования. Разработка блок-схем программных блоков и основной программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 27.10.2017 |
Размер файла | 5,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
18. Рыжиков, Ю.И. Имитационное моделирование. Теория и технология / Ю.И.Рыжиков. - СПб.: Корона-принт, 2004. - 367 с.
19. Бражик, А.Н. Имитационное моделирование: возможности GPSS World / А.Н.Бражик. - СПб.: РЕНОМЕ, 2006. - 439 с.
20. О стратегии социально-экономического развития Вологодской области на период до 2030 года: постановление Правительства Вологодской области от 17.10.2016 №920 // Вестник Вологодской области. - 2016. - 17 октября - с.2-95.
ПРИЛОЖЕНИЯ
Приложение А
Научная статья из сборника материалов межрегиональной конференции
При изучении реальных объектов необходимо работать не с конкретными их функциями, а с формальным представлением (моделями), получившимся после упрощения свойств в той или иной сущности. При моделировании технических объектов чаще всего используется математический аппарат алгебраических и дифференциальных уравнений, алгебра логики, теория автоматов и др. При обследовании организационно-управленческих объектов эти подходы неприменимы, так как в этих объектах важную роль играют критерии неопределенности и способность изменения характеристик различными путями, не всегда прогнозируемыми заранее. В этом случае можно применить имитационное моделирование с помощью специализированных программных средств и приложений.
В данной работе была поставлена задача по реализации и соблюдению основных процессов в имитационной модели управленческого объекта «Департамент стратегического планирования области» на первоначальном этапе его исследования.
Имитационная модель организационно-управленческого объекта (в данном случае конкретного структурного подразделения) должна полностью соответствовать поставленным задачам и процессам, которые происходят как внутри его, так и вне. Модель должна позволить осуществить автоматизацию ряда функций (обработка входящего и исходящего документооборота, анализ времени и формы поступаемой информации, регламентирующие и нормативные факторы, представление ключевых показателей эффективности - KPI и др.), а также получить и визуализировать обобщенный результат.
Определив источники поступления информации от отделов (управлений) изучаемого организационно-управленческого объекта, изобразим их схематично. Формы представления определяются внутренними регламентами и локальными нормативно-правовыми документами, указанными в общем перечне регионального и федерального законодательства.
В данной ситуации необходимо определить основные процессы и задачи, исполняемые внутри каждого управления, а также определить их приоритеты.
Для выполнения автоматизации и определения временных (вероятностных) характеристик исследуемого объекта было выбрано программное средство GPSS - программу имитационного моделирования, получившую своё распространение в 1961 году. Она оказалась наиболее удачной и продолжает своё существование в настоящее время, используется под современными операционными системами на персональных компьютерах. В ходе своей модернизации она получила обновленное название - GPSS World (рис.1).
Окно программы GPSS World в процессе моделирования
В ходе анализа и синтеза изучаемого объекта были определены основные характеристики и критерии для реализации имитационной модели:
1) количество сотрудников Департамента;
2) размер бюджета и финансовых средства Департамента;
3) время исполнения одной задачи в каждом управлении;
4) количество задач, выполняемых каждым управлением, в течение рабочего дня;
5) количество и частота поступаемых обращений от граждан в приемную Департамента;
6) исполнение регламентирующих документов по оценке регулирующего воздействия.
Основными блоками, используемыми в построении модели, являются GENERATE, TERMINATE, TRANSFER, ADVANCE, QUEUE и RETURN.
Каждый блок содержит в себе конкретные цифровые показатели и средние величины по выполнению одного процесса в единицу времени. Таким образом это упростит представление модели и позволит сократить время на обработку «очередей» в информационном потоке. В данном случае построение модели также можно сравнить с построением системы массового обслуживания с очередями (СМО). В данном методе исследования также необходимо отметить, что полученная визуализация может корректироваться на любом этапе её обработки.
В общем итоге имитационная модель позволит увидеть конкретные результаты деятельности организационно-управленческого объекта, повысить основные (ключевые) показатели эффективности (KPI), избавить от «очередей» в процессе обработки поступивших обращений и постоянного потока документации, а также сэкономить время по реализации параллельных задач и операций более высокого приоритета.
Приложение Б
Листинг модели (программный код)
package документооборотдсп;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Currency;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
import java.util.Locale;
import java.util.Map;
import java.util.PriorityQueue;
import java.util.Random;
import java.util.Set;
import java.util.SortedMap;
import java.util.SortedSet;
import java.util.Stack;
import java.util.Timer;
import java.util.TreeMap;
import java.util.TreeSet;
import java.util.Vector;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import com.anylogic.engine.connectivity.ResultSet;
import com.anylogic.engine.connectivity.Statement;
import com.anylogic.engine.elements.*;
import com.anylogic.engine.markup.Network;
import com.anylogic.engine.Position;
import com.anylogic.engine.markup.PedFlowStatistics;
import com.anylogic.engine.markup.DensityMap;
import static java.lang.Math.*;
import static com.anylogic.engine.UtilitiesArray.*;
import static com.anylogic.engine.UtilitiesCollection.*;
import static com.anylogic.engine.presentation.UtilitiesColor.*;
import static com.anylogic.engine.presentation.UtilitiesDrawing.*;
import static com.anylogic.engine.HyperArray.*;
import com.anylogic.engine.*;
import com.anylogic.engine.analysis.*;
import com.anylogic.engine.connectivity.*;
import com.anylogic.engine.database.*;
import com.anylogic.engine.gis.*;
import com.anylogic.engine.markup.*;
import com.anylogic.engine.presentation.*;
import com.anylogic.libraries.processmodeling.*;
import java.awt.geom.Arc2D;
public class Main extends Agent
{
// Параметры
@AnyLogicInternalCodegenAPI
private static Map<String, IElementDescriptor> elementDesciptors_xjal = null;
@AnyLogicInternalCodegenAPI
@Override
public Map<String, IElementDescriptor> getElementDesciptors() {
if (elementDesciptors_xjal == null) {
elementDesciptors_xjal = createElementDescriptors(super.getElementDesciptors(), Main.class);
}
return elementDesciptors_xjal;
}
@AnyLogicCustomProposalPriority(type = AnyLogicCustomProposalPriority.Type.STATIC_ELEMENT)
public static final Scale scale = new Scale( 10.0 );
@Override
public Scale getScale() {
return scale;
}
// События
@AnyLogicInternalCodegenAPI
public EventTimeout _chart_autoUpdateEvent_xjal = new EventTimeout(this);
@AnyLogicInternalCodegenAPI
public EventTimeout _chart1_autoUpdateEvent_xjal = new EventTimeout(this);
@Override
@AnyLogicInternalCodegenAPI
public String getNameOf( EventTimeout _e ) {
if( _e == _chart_autoUpdateEvent_xjal ) return "chart auto update event";
if( _e == _chart1_autoUpdateEvent_xjal ) return "chart1 auto update event";
return super.getNameOf( _e );
}
@Override
@AnyLogicInternalCodegenAPI
public EventTimeout.Mode getModeOf( EventTimeout _e ) {
if ( _e == _chart_autoUpdateEvent_xjal ) return EVENT_TIMEOUT_MODE_CYCLIC;
if ( _e == _chart1_autoUpdateEvent_xjal ) return EVENT_TIMEOUT_MODE_CYCLIC;
return super.getModeOf( _e );
}
@Override
@AnyLogicInternalCodegenAPI
public double getFirstOccurrenceTime( EventTimeout _e ) {
double _t;
if ( _e == _chart_autoUpdateEvent_xjal ) {
_t =
0
;
_t = toModelTime( _t, SECOND );
return _t;
}
if ( _e == _chart1_autoUpdateEvent_xjal ) {
_t =
0
;
_t = toModelTime( _t, SECOND );
return _t;
}
return super.getFirstOccurrenceTime( _e );
}
@Override
@AnyLogicInternalCodegenAPI
public double evaluateTimeoutOf( EventTimeout _e ) {
double _t;
if( _e == _chart_autoUpdateEvent_xjal) {
_t =
1
;
_t = toModelTime( _t, SECOND );
return _t;
}
if( _e == _chart1_autoUpdateEvent_xjal) {
_t =
1
;
_t = toModelTime( _t, SECOND );
return _t;
}
return super.evaluateTimeoutOf( _e );
}
@Override
@AnyLogicInternalCodegenAPI
public void executeActionOf( EventTimeout _e ) {
if ( _e == _chart_autoUpdateEvent_xjal ) {
chart.updateData();
return;
}
if ( _e == _chart1_autoUpdateEvent_xjal ) {
chart1.updateData();
return;
}
super.executeActionOf( _e );
}
public AgentAnimationSettings getAnimationSettingsOf( Agent ao ) {
return super.getAnimationSettingsOf( ao );
}
public String getNameOf( AgentList<?> aolist ) {
return super.getNameOf( aolist );
}
public AgentAnimationSettings getAnimationSettingsOf( AgentList<?> aolist ) {
return super.getAnimationSettingsOf( aolist );
}
/**
* Создает экземпляр вложенного объекта<br>
* <i>Пользователь не должен вызывать этот метод</i>
*/
protected com.anylogic.libraries.processmodeling.Source<Inquiry> instantiate_source_xjal() {
com.anylogic.libraries.processmodeling.Source<Inquiry> _result_xjal = new com.anylogic.libraries.processmodeling.Source<Inquiry>( getEngine(), this, null ) {
@Override
public double interarrivalTime( ) {
return _source_interarrivalTime_xjal( this );
}
@AnyLogicInternalCodegenAPI
public TimeUnits getUnitsForCodeOf_interarrivalTime() {
return SECOND;
}
@Override
public Agent newEntity( ) {
return _source_newEntity_xjal( this );
}
@Override
public void onExit( Inquiry agent ) {
_source_onExit_xjal( this, agent );
}
};
return _result_xjal;
}
/**
private void setupParameters_source_xjal( final com.anylogic.libraries.processmodeling.Source<Inquiry> self ) {
setupParameters_source_xjal( self, null );
}
/**
* Инициализация экземпляра вложенного объекта<br>
* Пользователь не должен вызывать этот метод
*/
@AnyLogicInternalCodegenAPI
private void create_source_xjal( com.anylogic.libraries.processmodeling.Source<Inquiry> self ) {
create_source_xjal(self, null );
}
*/
private void setupParameters_source_xjal( final com.anylogic.libraries.processmodeling.Source<Inquiry> self, TableInput _t ) {
self.arrivalType =
self.INTERARRIVAL_TIME
;
self.rate = self._rate_DefaultValue_xjal();
self.rateSchedule = self._rateSchedule_DefaultValue_xjal();
self.modifyRate = self._modifyRate_DefaultValue_xjal();
self.arrivalSchedule = self._arrivalSchedule_DefaultValue_xjal();
self.setAgentParametersFromDB = self._setAgentParametersFromDB_DefaultValue_xjal();
self.databaseTable = self._databaseTable_DefaultValue_xjal();
self.multipleEntitiesPerArrival = self._multipleEntitiesPerArrival_DefaultValue_xjal();
self.limitArrivals = self._limitArrivals_DefaultValue_xjal();
self.maxArrivals = self._maxArrivals_DefaultValue_xjal();
self.locationType = self._locationType_DefaultValue_xjal();
self.locationXYZInNetwork = self._locationXYZInNetwork_DefaultValue_xjal();
self.enableCustomStartTime = self._enableCustomStartTime_DefaultValue_xjal();
self.startTime = self._startTime_DefaultValue_xjal();
self.addToCustomPopulation = self._addToCustomPopulation_DefaultValue_xjal();
self.pushProtocol = self._pushProtocol_DefaultValue_xjal();
self.discardHangingEntities = self._discardHangingEntities_DefaultValue_xjal();
}
/**
* Инициализация экземпляра вложенного объекта<br>
* Пользователь не должен вызывать этот метод
*/
@AnyLogicInternalCodegenAPI
private void create_source_xjal( com.anylogic.libraries.processmodeling.Source<Inquiry> self, TableInput _t ) {
self.create();
}
/**
* Создает экземпляр вложенного объекта<br>
* <i>Пользователь не должен вызывать этот метод</i>
*/
protected com.anylogic.libraries.processmodeling.Delay<Inquiry> instantiate_delay_xjal() {
com.anylogic.libraries.processmodeling.Delay<Inquiry> _result_xjal = new com.anylogic.libraries.processmodeling.Delay<Inquiry>( getEngine(), this, null ) {
@Override
public double delayTime( Inquiry agent ) {
return _delay_delayTime_xjal( this, agent );
}
@AnyLogicInternalCodegenAPI
public TimeUnits getUnitsForCodeOf_delayTime() {
return SECOND;
}
};
return _result_xjal;
}
/**
private void setupParameters_delay_xjal( final com.anylogic.libraries.processmodeling.Delay<Inquiry> self ) {
setupParameters_delay_xjal( self, null );
}
/**
* Инициализация экземпляра вложенного объекта<br>
* Пользователь не должен вызывать этот метод
*/
@AnyLogicInternalCodegenAPI
private void create_delay_xjal( com.anylogic.libraries.processmodeling.Delay<Inquiry> self ) {
create_delay_xjal(self, null );
}
* Инициализация параметров экземпляра вложенного объекта<br>
* Пользователь не должен вызывать этот метод
*/
private void setupParameters_delay_xjal( final com.anylogic.libraries.processmodeling.Delay<Inquiry> self, TableInput _t ) {
self.type = self._type_DefaultValue_xjal();
self.capacity = self._capacity_DefaultValue_xjal();
self.maximumCapacity = self._maximumCapacity_DefaultValue_xjal();
self.entityLocation =
node
;
self.pushProtocol = self._pushProtocol_DefaultValue_xjal();
self.restoreEntityLocationOnExit = self._restoreEntityLocationOnExit_DefaultValue_xjal();
self.forceStatisticsCollection = self._forceStatisticsCollection_DefaultValue_xjal();
}
/**
@AnyLogicInternalCodegenAPI
private void create_delay_xjal( com.anylogic.libraries.processmodeling.Delay<Inquiry> self, TableInput _t ) {
self.create();
}
/**
* Создает экземпляр вложенного объекта<br>
* <i>Пользователь не должен вызывать этот метод</i>
*/
protected com.anylogic.libraries.processmodeling.Sink<Inquiry> instantiate_sink_xjal() {
com.anylogic.libraries.processmodeling.Sink<Inquiry> _result_xjal = new com.anylogic.libraries.processmodeling.Sink<Inquiry>( getEngine(), this, null ) {
@Override
public void onEnter( Inquiry agent ) {
_sink_onEnter_xjal( this, agent );
}
};
return _result_xjal;
}
/**
* Инициализация параметров экземпляра вложенного объекта<br>
* Пользователь не должен вызывать этот метод
*/
private void setupParameters_sink_xjal( final com.anylogic.libraries.processmodeling.Sink<Inquiry> self ) {
setupParameters_sink_xjal( self, null );
}
/**
* Инициализация экземпляра вложенного объекта<br>
* Пользователь не должен вызывать этот метод
*/
@AnyLogicInternalCodegenAPI
private void create_sink_xjal( com.anylogic.libraries.processmodeling.Sink<Inquiry> self ) {
create_sink_xjal(self, null );
}
/**
* Инициализация параметров экземпляра вложенного объекта<br>
* Пользователь не должен вызывать этот метод
*/
private void setupParameters_sink_xjal( final com.anylogic.libraries.processmodeling.Sink<Inquiry> self, TableInput _t ) {
}
/**
* Инициализация экземпляра вложенного объекта<br>
* Пользователь не должен вызывать этот метод
*/
@AnyLogicInternalCodegenAPI
private void create_sink_xjal( com.anylogic.libraries.processmodeling.Sink<Inquiry> self, TableInput _t ) {
self.create();
}
/**
* Создает экземпляр вложенного объекта<br>
* <i>Пользователь не должен вызывать этот метод</i>
*/
protected com.anylogic.libraries.processmodeling.Queue<Inquiry> instantiate_queue_xjal() {
com.anylogic.libraries.processmodeling.Queue<Inquiry> _result_xjal = new com.anylogic.libraries.processmodeling.Queue<Inquiry>( getEngine(), this, null );
return _result_xjal;
}
/**
* Инициализация параметров экземпляра вложенного объекта<br>
* Пользователь не должен вызывать этот метод
*/
private void setupParameters_queue_xjal( final com.anylogic.libraries.processmodeling.Queue<Inquiry> self ) {
setupParameters_queue_xjal( self, null );
}
/**
* Инициализация экземпляра вложенного объекта<br>
* Пользователь не должен вызывать этот метод
*/
@AnyLogicInternalCodegenAPI
private void create_queue_xjal( com.anylogic.libraries.processmodeling.Queue<Inquiry> self ) {
create_queue_xjal(self, null );
}
/**
* Инициализация параметров экземпляра вложенного объекта<br>
* Пользователь не должен вызывать этот метод
*/
private void setupParameters_queue_xjal( final com.anylogic.libraries.processmodeling.Queue<Inquiry> self, TableInput _t ) {
self.capacity =
50
;
self.maximumCapacity = self._maximumCapacity_DefaultValue_xjal();
self.entityLocation =
path
;
self.queuing = self._queuing_DefaultValue_xjal();
self.enableTimeout = self._enableTimeout_DefaultValue_xjal();
self.enablePreemption = self._enablePreemption_DefaultValue_xjal();
self.restoreEntityLocationOnExit = self._restoreEntityLocationOnExit_DefaultValue_xjal();
self.forceStatisticsCollection =
true
;
}
@AnyLogicInternalCodegenAPI
private void drawModelElements_Connectors_xjal(Panel _panel, Graphics2D _g, boolean _publicOnly, boolean _isSuperClass ) {
if (!_publicOnly) {
drawConnector( _panel, _g, _connector2_pointsX_xjal, _connector2_pointsY_xjal, false );
}
if (!_publicOnly) {
drawConnector( _panel, _g, _connector_pointsX_xjal, _connector_pointsY_xjal, false );
}
if (!_publicOnly) {
drawConnector( _panel, _g, _connector4_pointsX_xjal, _connector4_pointsY_xjal, false );
}
}
/**
* Инициализация экземпляра вложенного объекта<br>
* Пользователь не должен вызывать этот метод
*/
@AnyLogicInternalCodegenAPI
private void create_queue_xjal( com.anylogic.libraries.processmodeling.Queue<Inquiry> self, TableInput _t ) {
self.create();
}
private double _source_interarrivalTime_xjal( final com.anylogic.libraries.processmodeling.Source<Inquiry> self ) {
double _value;
_value =
exponential( 1/120.0 )
;
return _value;
}
private Agent _source_newEntity_xjal( final com.anylogic.libraries.processmodeling.Source<Inquiry> self ) {
Agent _value;
_value =
new документооборотдсп.Inquiry()
;
return _value;
}
private void _source_onExit_xjal( final com.anylogic.libraries.processmodeling.Source<Inquiry> self, Inquiry agent ) {
inquiry.time_vxod=time()
;
}
private double _delay_delayTime_xjal( final com.anylogic.libraries.processmodeling.Delay<Inquiry> self, Inquiry agent ) {
double _value;
_value =
exponential(1/600.0 )
;
return _value;
}
private void _sink_onEnter_xjal( final com.anylogic.libraries.processmodeling.Sink<Inquiry> self, Inquiry agent ) {
time_obrabotki.add(time()-entity.time_vxod);
;
}
// Области
public ViewArea _origin_VA = new ViewArea( this, "[Нач. координат]", 0, 0, 1000.0, 600.0 );
@Override
@AnyLogicInternalCodegenAPI
public int getViewAreas(Map<String, ViewArea> _output) {
if ( _output != null ) {
_output.put( "_origin_VA", this._origin_VA );
}
return 1 + super.getViewAreas( _output );
}
@AnyLogicInternalCodegenAPI
protected static final int _chart = 1;
@AnyLogicInternalCodegenAPI
protected static final int _chart1 = 2;
@AnyLogicInternalCodegenAPI
protected static final int _path = 3;
@AnyLogicInternalCodegenAPI
protected static final int _node = 4;
/** Internal constant, shouldn't be accessed by user */
@AnyLogicInternalCodegenAPI
protected static final int _SHAPE_NEXT_ID_xjal = 5;
/**
* Идентификатор группы presentation верхнего уровня
*/
@AnyLogicInternalCodegenAPI
protected static final int _presentation = 0;
@AnyLogicInternalCodegenAPI
public boolean isPublicPresentationDefined() {
return true;
}
/**
* Идентификатор группы icon верхнего уровня
*/
@AnyLogicInternalCodegenAPI
protected static final int _icon = -1;
@AnyLogicInternalCodegenAPI
private void _initialize_network_xjal() {
network.addAll(path, node);
network.initialize();
}
@AnyLogicInternalCodegenAPI
private static MarkupSegment[] _path_segments_xjal() {
return new MarkupSegment[] {
new MarkupSegmentLine( 30.0, 140.0, 0.0, 80.0, 140.0, 0.0 ),
new MarkupSegmentArc( 80.0, 140.0, 0.0, 60.0, 200.0, 0.0, 1.5707963267948966, 4.71238898038469, 1.0000000000000002,
80.0, 156.66666666666666, 16.666666666666668, -1.5707963267948966, 3.7850937623830783,
60.0, 183.33333333333334, 16.666666666666668, -0.9272952180016125, -3.785093762383077 ),
new MarkupSegmentLine( 60.0, 200.0, 0.0, 260.0, 170.0, 0.0 ), };
}
/**
* <i>Пользователь не должен вызывать этот метод</i>
*/
@AnyLogicInternalCodegenAPI
private double _chart_DataItem0Value() {
return
delay.statsUtilization.mean()
;
}
/**
* <i>Пользователь не должен вызывать этот метод</i>
*/
@AnyLogicInternalCodegenAPI
private double _chart1_DataItem0Value() {
return
queue.statsSize.mean()
;
}
@AnyLogicInternalCodegenAPI
private void _node_SetDynamicParams_xjal( RectangularNode shape ) {
shape.setFillColor(
delay.size()>0?red:green
);
}
};
path = new Path( this, SHAPE_DRAW_2D3D, true, true, PATH_DASHEDLINE, dodgerBlue, 2.0, null, node, _path_segments_xjal() );
}
@AnyLogicInternalCodegenAPI
private void _createPersistentElementsAP0_xjal() {
{
List<DataItem> _items = new ArrayList<DataItem>( 1 );
_items.add( new DataItem() {
@Override
public void update() {
setValue( _chart_DataItem0Value() );
}
});
List<String> _titles = new ArrayList<String>( 1 );
_titles.add( "SERVERdepartament" );
List<Color> _colors = new ArrayList<Color>( 1 );
_colors.add( lime );
chart = new BarChart(
{
List<DataItem> _items = new ArrayList<DataItem>( 1 );
_items.add( new DataItem() {
@Override
public void update() {
setValue( _chart1_DataItem0Value() );
}
});
List<String> _titles = new ArrayList<String>( 1 );
_titles.add( "queue Length" );
List<Color> _colors = new ArrayList<Color>( 1 );
_colors.add( maroon );
chart1 = new BarChart(
}
}
}
return super.getNameOfShape_xjal( _shape );
}
@AnyLogicInternalCodegenAPI
protected static final int[] _connector2_pointsX_xjal = {
240, 340 };
@AnyLogicInternalCodegenAPI
protected static final int[] _connector2_pointsY_xjal = {
90, 90 };
@AnyLogicInternalCodegenAPI
protected static final int[] _connector_pointsX_xjal = {
90, 50 };
@AnyLogicInternalCodegenAPI
protected static final int[] _connector_pointsY_xjal = {
90, 90 };
@AnyLogicInternalCodegenAPI
protected static final int[] _connector4_pointsX_xjal = {
130, 200 };
@AnyLogicInternalCodegenAPI
protected static final int[] _connector4_pointsY_xjal = {
90, 90 };
@AnyLogicInternalCodegenAPI
private void drawModelElements_EmbeddeObjects_xjal(Panel _panel, Graphics2D _g, boolean _publicOnly, boolean _isSuperClass ) {
// Embedded object "source"
if (!_publicOnly) {
drawEmbeddedObjectModel( _panel, _g, 0, 40, 15, 20, "source", this.source );
}
// Embedded object "delay"
if (!_publicOnly) {
drawEmbeddedObjectModel( _panel, _g, 140, 40, 60, 20, "delay", this.delay );
}
// Embedded object "sink"
if (!_publicOnly) {
drawEmbeddedObjectModel( _panel, _g, 290, 40, 45, 20, "sink", this.sink );
}
// Embedded object "queue"
if (!_publicOnly) {
drawEmbeddedObjectModel( _panel, _g, 20, 40, 65, 20, "queue", this.queue );
}
}
@AnyLogicInternalCodegenAPI
private void drawModelElements_Connectors_xjal(Panel _panel, Graphics2D _g, boolean _publicOnly, boolean _isSuperClass ) {
if (!_publicOnly) {
drawConnector( _panel, _g, _connector2_pointsX_xjal, _connector2_pointsY_xjal, false );
}
if (!_publicOnly) {
drawConnector( _panel, _g, _connector_pointsX_xjal, _connector_pointsY_xjal, false );
}
if (!_publicOnly) {
drawConnector( _panel, _g, _connector4_pointsX_xjal, _connector4_pointsY_xjal, false );
}
@Override
@AnyLogicInternalCodegenAPI
public void drawModelElements( Panel _panel, Graphics2D _g, boolean _publicOnly, boolean _isSuperClass ) {
super.drawModelElements( _panel, _g, _publicOnly, true );
drawModelElements_EmbeddeObjects_xjal( _panel, _g, _publicOnly, _isSuperClass );
drawModelElements_Connectors_xjal( _panel, _g, _publicOnly, _isSuperClass );
drawModelElements_AgentLinks_xjal( _panel, _g, _publicOnly, _isSuperClass );
}
@AnyLogicInternalCodegenAPI
private boolean onClickModelAt_EmbeddedObjects_xjal( Panel _panel, double _x, double _y, int _clickCount, boolean _publicOnly, boolean _isSuperClass ) {
if ( source.onClickIconAt( _x - 0, _y - 40, true ) ) {
if ( _clickCount == 2 ) {
_panel.browseAgent_xjal( _x, _y, this, "source" );
} else {
_panel.addInspect( _x, _y, this, "source" );
}
return true;
}
if ( delay.onClickIconAt( _x - 140, _y - 40, true ) ) {
if ( _clickCount == 2 ) {
_panel.browseAgent_xjal( _x, _y, this, "delay" );
} else {
_panel.addInspect( _x, _y, this, "delay" );
}
return true;
}
if ( sink.onClickIconAt( _x - 290, _y - 40, true ) ) {
if ( _clickCount == 2 ) {
_panel.browseAgent_xjal( _x, _y, this, "sink" );
} else {
_panel.addInspect( _x, _y, this, "sink" );
}
return true;
@AnyLogicInternalCodegenAPI
private boolean onClickModelAt_AgentLinks_xjal( Panel _panel, double _x, double _y, int _clickCount, boolean _publicOnly, boolean _isSuperClass ) {
if ( modelElementContains(_x, _y, 50, -50) ) {
_panel.addInspect_xjal( 50, -50, this, "connections", Panel.INSPECT_CONNECTIONS_xjal );
return true;
}
return false;
}
@Override
@AnyLogicInternalCodegenAPI
public boolean onClickModelAt( Panel _panel, double _x, double _y, int _clickCount, boolean _publicOnly, boolean _isSuperClass ) {
if ( onClickModelAt_EmbeddedObjects_xjal( _panel, _x, _y, _clickCount, _publicOnly, _isSuperClass ) ) { return true; }
if ( onClickModelAt_AgentLinks_xjal( _panel, _x, _y, _clickCount, _publicOnly, _isSuperClass ) ) { return true; }
return super.onClickModelAt( _panel, _x, _y, _clickCount, _publicOnly, true );
}
@AnyLogicInternalCodegenAPI
private void setupReferences_xjal() {
}
@Override
@AnyLogicInternalCodegenAPI
public void doCreate() {
super.doCreate();
instantiatePopulations_xjal();
setupPlainVariables_Main_xjal();
_createPersistentElementsAP0_xjal();
presentation = new ShapeTopLevelPresentationGroup( Main.this, true, 0, 0, 0, 0, path, node, chart, chart1 );
icon = new ShapeGroup( Main.this, true, 0, 0, 0 );
_initialize_network_xjal();
instantiatePopulations_xjal();
setupParameters_source_xjal( source );
create_source_xjal( source );
setupParameters_delay_xjal( delay );
create_delay_xjal( delay );
setupParameters_sink_xjal( sink );
create_sink_xjal( sink );
setupParameters_queue_xjal( queue );
create_queue_xjal( queue );
delay.out.connect( sink.in ); // connector2
queue.in.connect( source.out ); // connector
queue.out.connect( delay.in ); // connector4
setupInitialConditions_xjal( Main.class );
}
@Override
@AnyLogicInternalCodegenAPI
public void doStart() {
super.doStart();
_chart_autoUpdateEvent_xjal.start();
_chart1_autoUpdateEvent_xjal.start();
source.start();
delay.start();
sink.start();
queue.start();
* <em>This method isn't designed to be called by user and may be removed in future releases.</em>
@AnyLogicInternalCodegenAPI
private void setupPlainVariables_Main_xjal() {
}
@AnyLogicInternalCodegenAPI
static LinkToAgentAnimationSettings _connections_commonAnimationSettings_xjal = new LinkToAgentAnimationSettingsImpl( false, black, 1.0, LINE_STYLE_SOLID, ARROW_NONE, 0.0 );
public LinkToAgentCollection<Agent, Agent> connections = new LinkToAgentStandardImpl<Agent, Agent>(this, _connections_commonAnimationSettings_xjal);
@Override
public LinkToAgentCollection<? extends Agent, ? extends Agent> getLinkToAgentStandard_xjal() {
return connections;
}
@Override
@AnyLogicInternalCodegenAPI
public boolean isLoggingToDB(EventOriginator _e) {
if ( _e == _chart_autoUpdateEvent_xjal ) return false;
if ( _e == _chart1_autoUpdateEvent_xjal ) return false;
return super.isLoggingToDB( _e );
_createPersistentElementsAP0_xjal();
presentation = new ShapeTopLevelPresentationGroup( Inquiry.this, true, 0, 0, 0,
delay.out.connect( sink.in ); // connector2
queue.in.connect( source.out ); // connector
queue.out.connect( delay.in ); // connector4
setupInitialConditions_xjal( Inquiry.class );
}
@AnyLogicInternalCodegenAPI
public void setupExt_xjal(AgentExtension _ext) {
// Инициализация свойств агентов
if ( _ext instanceof ExtAgentWithSpatialMetrics && _ext instanceof ExtWithSpaceType ) {
double _value;
_value =
10
;
@AnyLogicInternalCodegenAPI
@Override
public void doFinish() {
source.doFinish();
super.doFinish();
delay.doFinish();
super.doFinish();
sink.doFinish();
super.doFinish();
queue.doFinish();
super.doFinish();
}
}
Размещено на Allbest.ru
...Подобные документы
Понятие стратегического планирования, разработка схем программных блоков и основной программы. Структурная схема имитационной модели, создание модели на языке моделирования General Purpose Simulation System. Математическое описание моделируемой системы.
дипломная работа [2,6 M], добавлен 12.08.2017Определение назначения и описание функций имитационных моделей стохастических процессов систем массового обслуживания. Разработка модели описанной системы в виде Q-схемы и программы на языке GPSS и C#. Основные показатели работы имитационной модели.
курсовая работа [487,4 K], добавлен 18.12.2014Математическое описание имитационной модели. Описание блок-схемы алгоритма. Анализ полученных результатов имитационного моделирования. Сопоставление полученных результатов для разработанных моделей. Математическое описание аналитического моделирования.
курсовая работа [306,5 K], добавлен 25.03.2015Понятие, основные задачи и функции общей теории систем как науки. Формулирование требований к системе, разработка концептуальной модели системы на примере системы массового обслуживания (СМО). Проектирование имитационной модели, ее реализация и испытание.
курсовая работа [131,3 K], добавлен 27.12.2010Методика системного исследования реальной динамической сложной системы посредством разработки ее имитационной модели. Разработка программы реализации алгоритма имитационного моделирования системы массового обслуживания "Интернет-провайдерская фирма".
курсовая работа [2,0 M], добавлен 20.01.2010Системы, описывающие массовое обслуживание. Разработка системы массового обслуживания для магазинов. Постановка в очередь, порядок обслуживания, выбывание из очереди, периодичность попадания в нее. Описание программного модуля, листинг программы.
курсовая работа [171,8 K], добавлен 20.01.2010Определение характеристик системы массового обслуживания – вероятность обслуживания заявки, занятости любого канала системы, среднее число занятых каналов. Описание блок-схемы алгоритма. Разработка имитационной и аналитической моделей и их сравнение.
курсовая работа [860,4 K], добавлен 24.12.2013Построение имитационной модели системы массового обслуживания, список и содержание ее активностей. Блок-схема алгоритма моделирования и текст процедуры. Моделирование случайных независимых величин и процессов. Оптимизация системы массового обслуживания.
курсовая работа [4,0 M], добавлен 28.05.2013Система GPSS World как мощная универсальная среда моделирования как дискретных, так и непрерывных процессов, предназначенная для профессионального моделирования самых разнообразных процессов и систем. Системы массового обслуживания. Листинг программы.
курсовая работа [499,6 K], добавлен 25.12.2013Описание модели в терминах PDEVS формализма с дискретными событиями DEJaView. Исследование принципов функционирования простейших моделей теории массового обслуживания, разработка ее алгоритма функционирования. Сущность терминов PDEVS под DEJaView.
курсовая работа [219,1 K], добавлен 31.10.2009Практические навыки системного исследования реальной динамической сложной системы на основе построения ее имитационной модели. Автоматизация работы по расчету эффективности системы массового обслуживания с понятным интерфейсом. Выбор алгоритма решения.
курсовая работа [1,0 M], добавлен 18.08.2009Создание математической модели системы массового обслуживания на примере банка. Разработка имитационной модели на языке программирования С++. Блок-схема программы, перевод модели на язык программирования. Верификация и валидация имитационной модели.
курсовая работа [630,5 K], добавлен 01.06.2015Проблемы и этапы построения имитационной модели системы массового обслуживания. Оценка результатов схем, построенных на Visual Basic и GPSSV. Анализ исходных данных и выбор недостающих, составление таблицы определений и построение блок-схем и диаграмм.
курсовая работа [204,1 K], добавлен 24.06.2011Необходимость создания моделируемой системы. Описание моделируемой системы и задание моделирования. Структурная схема модели системы. Блок–диаграмма. Текст программы. Описание текста программы. Результаты моделирования. Эксперимент, его результаты.
курсовая работа [35,9 K], добавлен 19.11.2007Проектирование напряженно-деформированного состояния объекта при граничных условиях. Разработка концептуальной модели и расчетной схемы объекта анализа. Выбор и краткое описание программных и технических средств. Интерпретация результатов моделирования.
дипломная работа [439,8 K], добавлен 18.08.2009Общая характеристика ателье "Вита", схема модели рабочего процесса. Исследование заданной системы с помощью моделирования динамических рядов, модели типа "система массового облуживания". Построение имитационной модели деятельности данного ателье.
курсовая работа [1,4 M], добавлен 01.06.2016Моделирование как основная функция вычислительных систем. Разработка концептуальной модели для системы массового обслуживания и ее формализация. Аналитический расчет и алгоритмизация модели, построение блок-диаграмм. Разработка и кодирование программы.
курсовая работа [164,8 K], добавлен 18.12.2011Определение основных параметров грузоперевозок, их организационная структура. Виды и функции имитационного моделирования. Разработка концептуальной модели перевозки грузов, ее представление в виде системы массового обслуживания и программная реализация.
курсовая работа [761,6 K], добавлен 22.01.2012Направления деятельности ООО "Тирион" и разработка модели "AS-IS" функционирования магазина по обслуживанию покупателей. Возможности табличного процессора MS Excel. Описание интерфейса и физической структуры программного обеспечения имитационной модели.
курсовая работа [990,6 K], добавлен 13.12.2011Проектирование системы массового обслуживания, состоящей из двух генераторов псевдослучайных величин и электронной вычислительной машины, обрабатывающей поступающие заявки. Разработка структурной схемы и алгоритмической модели проектируемой системы.
курсовая работа [194,5 K], добавлен 30.10.2013