Приложение В
(справочное)
Разработка имитационной модели в AnyLogic
В данном приложении приведем основные настройки и исходные коды разработанной имитационной модели на платформе AnyLogic 7.
Эта модель позволяет оценивать зависимость распространения инновации от параметров среды и определять управляющие воздействия в зависимости от параметров последующих поддерживающих инноваций. Основной интерфейс программы приведен на рисунках 4.6 - 4.9. На рисунке В.1 показан интерфейс, содержащийосновные элементы модели.
Рисунок В.1 - Основной интерфейс имитационной модели
Таблица В.1 - Общие настройки имитационной модели
| Основные | |
| Единицы модельного времени | дни |
| Численные методы | |
| Метод решения дифф.ур-й | Эйлер |
| Метод решения алгебр. ур-й | Измененный Ньютон |
| Метод решения смешанных ур-й | RK45+Newton |
| Абсолютная точность | 1.0E-5 |
| Временная точность | 1.0E-5 |
| Относительная точность | 1.0E-5 |
| Фиксированный шаг по времени | 0.001 |
Таблица В.2 - Настройки агента Main
| Агент в диаграмме процесса | |
| Использовать в диаграммах процесса | Агент |
| Пространство и сеть | |
| Тип пространства | Непрерывное |
| Тип расположения | Задается пользователем |
| Применить расположение при запуске | true |
| Тип сети | Задается пользователем |
| Создать сеть при запуске | true |
| Выполнять шаги | false |
| Java для экспертов | |
| Импорт | import j avax.swing.text.StyledEditorKit.F ontSizeAction; import j avax.activation.DataHandler; import java.util.function.DoubleToIntFunction; import com.anylogic.engine.internal.ln; |
Таблица В.3 - Настройки функции redrawFons
| Основные | |
| Тип возвращаемого значения: | Действие (не возвращает ничего) |
| На презентации | true |
| Отображать метку | true |
| Тело функции | |
| double MIN BUBBLE SIZE = 2, MAX BUBBLE SIZE = 2, DIAGRAM X POS = 180, DIAGRAM Y POS = 50, DIAGRAM HEIGHT = 200, DIAGRAM WIDTH = 170; | |
| double verticalGap = 8, horizontalGap = 8; | |
| Тело | for( Fon fo : fons ){ double yCoord = DIAGRAM Y POS + verticalGap + ((DIAGRAM_HEIGHT - 2 * verticalGap) * random() ); double xCoord = DIAGRAM X POS + horizontalGap + ((DIAGRAM_WIDTH - 2 * horizontalGap) * random() ); double size = MAX_BUBBLE_SIZE * FonSize_; fo.show( xCoord, yCoord, size, true ); } |
| Специфические | |
| Статическая | false |
| Уровень доступа | по умолчанию |
| Единицы измерения (сист. динамика) | false |
Таблица В.4 - Настройки функции KoefDiff
| Основные | |
| Тип возвращаемого значения | double |
| Тип возвращаемого значения: | Возвращает значение |
| На презентации | true |
| Отображать метку | true |
| Тело функции | |
| Тело | if ( StateinMarketNIP > 0 ) return ( InnPSize / (FonSize + InnPSize + NIPSize) ) * 0.01 * UserAbility * ( 1 + StateUsers ); // * log ( Demand / (StateUsers + 1) ) ((Demand - StateUsers) / Demand) * (Demand / (Demand + DemandNIP)); else return ( InnPSize / (FonSize + InnPSize) ) * 0.01 * UserAbility * ( 1 + StateUsers ); // * log ( Demand / (StateUsers + 1) ); // ((Demand - StateUsers) / Demand ); // ( 1 + StateUsers /* / MarketSize */ ); |
| Специфические | |
| Статическая | false |
| Уровень доступа | по умолчанию |
| Единицы измерения (сист. динамика) | false |
Таблица В.5 - Настройки функции Force
| Основные | |
| Тип возвращаемого значения | double |
| Тип возвращаемого значения: | Возвращает значение |
| На презентации | true |
| Отображать метку | true |
| Тело функции | |
| Тело | if ( Offer == 0 || Demand == 0 || ( Demand + StateKilled - 1 ) == StateUsers ) return 0; else {if ( StateinMarketNIP < 1 ) return log ( xidz(Demand + StateKilled, StateUsers + 1, 0) ); else return log ( xidz(Demand * Demand, (Demand + DemandNIP) * (StateUsers + 1), 0 ) ); } //else return 0; // (PotentUsers() * (StateUsers+1))/MarketSize; |
| Специфические | |
| Статическая | false |
| Уровень доступа | по умолчанию |
| Единицы измерения (сист. динамика) | false |
Таблица В.6 - Настройки функции FonSize_int
| Основные | |
| Тип возвращаемого значения | int |
| Тип возвращаемого значения: | Возвращает значение |
| На презентации | true |
| Отображать метку | true |
| Тело функции | |
| Тело | int i; double h; h = 0.5 * MarketSize * ( 1 - InnPSize ) ; return i = (int) h; |
| Специфические | |
| Статическая | false |
| Уровень доступа | по умолчанию |
| Единицы измерения (сист. динамика) | false |
Таблица В.7 - Настройки функции Force_NIP
| Основные | |
| Тип возвращаемого значения | double |
| Тип возвращаемого значения: | Возвращает значение |
| На презентации | true |
| Отображать метку | true |
| Тело функции | |
| Тело | if ( OfferNIP == 0 || DemandNIP == 0 || StateUsersNIP == DemandNIP ) return 0; else return log ( DemandNIP / ( StateUsersNIP + 1 ) ); |
Таблица В.8 - Настройки функции PointSatur
| Основные | |
| Тип возвращаемого значения: | Действие (не возвращает ничего) |
| На презентации | true |
| Отображать метку | true |
| Тело функции | |
| Тело | if ( (StateUsers ) >= ceil(QuanPoint - 5) && (StateUsers) 1 &&StateUsersNIP >= ceil(QuanPointNIP - 10) &&StateUsersNIP 1 && (StateUsersNIP = DemandNIP - 50) ) { TimeSaturNIP = time(); QSaturNIP = StateUsersNIP; QSumSatNIP = SumUsers(); } |
| Специфические | |
| Статическая | false |
| Уровень доступа | по умолчанию |
| Единицы измерения (сист. динамика) | false |
| Основные | |
| Logging | true |
| Условие | StateReadytoLaunch < 10 &&StateUsers < Demand |
| Тип события | При выполнении условия |
| На презентации | true |
| Отображать метку | true |
| Действие | |
| Действие | add_innovationPs(); //create a new agent //PointSatur(); StartNewInnProduct.restart(); |
Таблица В.11 - Настройки события setColor
| Основные | |
| Logging | true |
| Интенсивность | (1 : PER_SECOND) |
| Тип события | С заданной интенсивностью |
| На презентации | true |
| Отображать метку | true |
| Действие | |
| Действие | if (inState(inMarket) &&getX() >= 90 &&getX() = 250) { oval_innovation.setFillColor(brown); oval_innovation.setLineColor(gray); } // setCol or.re start(); |
Таблица В.12 - Настройки кнопки button_startNIP
| Основные | |
| Вкл. | true |
| Текст метки | Запуск |
| На верхнем уровне | true |
| Действие | |
| Действие | if (StateUsers < QuanPoint - 10) QuanPoint = (Demand * Demand / (Demand * E + E * DemandNIP) ); TStartNIP = time(); QStartIP = StateUsers; QSumStart = SumUsers(); QuanPointNIP = DemandNIP / E; StartNIPButton(); |
Таблица В.13 - Настройки перехода Launch
| Основные | |
| Доп. условие | main.StateinMarket < ( main.Demand - main.StateUsers + main.StateKilled ) |
| Действие | TimetoLaunch = time(); GetX = getX() + 110 + uniform (15, 110); moveTo( GetX, getY() ); |
| Интенсивность | (12 * main.Offer : PER_MONTH) |
| Тип события | С заданной интенсивностью |
| Отображать метку | true |
Таблица В.14 - Настройки перехода Purchase
| Основные | |
| Действие | main.StatePurchase++; moveTo( GetX + 195, getY() ); |
| Условие | get_Main().StateUsers < get_Main().slider_demand.getValue() + main.StateKilled |
| Переход по умолчанию | false |
| Отображать метку | true |
Таблица В.15 - Настройки состояния ReadyToLaunch
| Основные | |
| Действие при выходе | main.StateReadytoLaunch--; |
| Действие при входе | oval_innovation.setFillColor( gold ); oval_innovation.setLineColor( gold ); main.StateReadytoLaunch++; |
| Цвет заливки | gold |
| Отображать метку | true |
Таблица В.16 - Настройки состояния inMarket
| Основные | |
| Действие при выходе | main.StateinMarket--; |
| Действие при входе | if (isMoving()) { oval_innovation.setFillColor(transparent(orange, 0.3)); oval_innovation.setLineColor(white); } |
Еще по теме Приложение В:
- Приложения Приложение 1 Нормативно-правовые акты, регламентирующие инвестиционную деятельность на территории Калининградской области
- Приложения Приложение 1 Налоговые последствия управления задолженностью
- Приложения Приложение 1 Теоретические основы
- Приложения Приложение 1 Гражданский кодекс Российской Федерации (часть вторая) Глава 34. Аренда § 6. Финансовая аренда (лизинг)
- Приложения
- Приложения
- Приложения
- Приложения
- Приложения
- Приложения
- Приложения
- Приложения
- Содержание и техника составления приложения к бухгалтерскому балансу
- Приложения
- Приложение
- Приложения
- Приложения