Приложение В
(справочное)
Разработка имитационной модели в 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. Финансовая аренда (лизинг)
- Приложения
- Приложения
- Приложения
- Приложения
- Приложения
- Приложения
- Приложения
- Приложение
- Содержание и техника составления приложения к бухгалтерскому балансу
- Приложения
- Приложения
- Приложения
- Приложения