- •1. Стадии построения имитационных моделей.
- •2. Основные концепции системной динамики.
- •3. Размеченная диаграмма дпсс.
- •4. Построение концептуальной модели в системе имитак.
- •5. Работа с моделью программой в системе имитак и диагностика ошибок.
- •6. Расширение аппарата формализации системной динамики.
- •7. Функции имитации систем массового обслуживания.
- •8. Адаптация имитационных моделей одноканальной смо.
- •9. Имитация многоканальной смо.
- •10. Основные концепции работы с матричными переменными в системе имитак.
- •11. Векторные встроенные функции.
- •12. Имитация детерминированных цепей Маркова (putty - clay).
- •13. Этапы имитационного исследования.
- •14. Регрессионный анализ планирования экстремального эксперимента.
- •15. Полный факторный эксперимент.
- •16. Дробный факторный эксперимент.
- •17. Исследование уравнения регрессии, полученного при помощи дробных реплик.
- •18. Крутое восхождение по поверхности отклика.
- •19. Ортогональное планирование 2 - го порядка.
- •20. Анализ экономической ситуации (программная реализация курсового проекта).
- •21. Графические встроенные функции системы имитак.
- •22. Паутинообразная модель рынка №1.
- •23. Паутинообразная модель рынка №2 (с обучением).
- •24. Паутинообразная модель рынка №3 (с учетом запасов непроданного товара).
- •25. Имитация удовлетворения спроса скоропортящейся продукции.
- •26. Имитация кредитно – финансовых операций фирмы.
- •27. Моделирование производственной деятельности фирмы.
10. Основные концепции работы с матричными переменными в системе имитак.
81 год – работа с одномерными массивами, вложенность, работа с другими языками, скалярные переменные. =>Переход к ИМИТАК2 – векторные многомерные матричные переменные.
Одной из версий системы ИМИТАК – ИМИТАК2 является вариант, когда мы работаем с векторными переменными. При этом введение многомерных массивов (1,2 и 3-х мерные) не должно нарушать основные концепции системной динамики. Основным действием ИМИТАК2 является представление в виде 1 оператора (уравнения) нескольких однообразных (одинаковых) операторов и наборов исходных данных (матриц). Такой набор операторов и исходных данных будем называть массивом. При реализации массивов в ИМИТАК2 объявление размерностей ведется не с помощью специального оператора, а внутри самого уравнения. Т.о. при адаптации модели упрощено введение новых массивов.
ИМИТАК1 |
ИМИТАК2 |
У А1.Н = ……. |
|
У А2.Н = ……. |
У А: (3).Н = ……. |
У А3.Н = ……. |
|
- варианты одномерного массива | |
Д А11.Н = … |
|
Д А12.Н = … |
|
Д А21.Н = … |
Д А: (3, 2).Н = …… |
Д А22.Н = … |
|
Д А31.Н = … |
|
Д А33.Н = … |
|
- варианты многомерного массива (2-х мерного) |
Считается, что если массив стоит в левой части оператора, то правая часть используется многократно для расчета любого элемента этого массива. В правой части такого уравнения могут быть как скаляры, так и массивы с той же размерностью, что и в левой части. Для выделения какого – нибудь одного элемента массива используется знак #. Например:
У А: (3).Н = …
Д В.Н = А#(2).Н*К1 – используется только второй элемент массива А при расчете В.
В 2-х и 3-х мерных массивах могут использоваться несколько переменных, объединенных в группу – так называемое сечение (строка, столбец в матрице). Причем указание на сечение ведется с использованием значка (*). Пример: Есть следующий фрагмент модели – программы:
Д А: (3,3).Н = …. (1)
Д В: (3).Н = А#(2,*).Н (2)
Д С: (3).Н = RANGE(А#(*, 1).Н, А#(*, 3).Н) (3)
Ф.Н = RANGE(А.Н, В.Н), т.е. Ф(t) = (А (t))^B (t) – степенная функция.
После выполнения (1) будем иметь:
| А11 А12 А13|
| А21 А22 А23| = А: (3, 3)
| А31 А32 А33|
После (2): В: (3) = | А21 А22 А23 |
После (3): С#(1) =(А11)^А13
С#(2) =(А21)^А23
С#(3) =(А31)^А33
При расчете правой части в матричных выражениях необязательно в правой части могут быть одинаковые алгоритмы. Тогда работает следующий механизм задания специфических алгоритмов: после написания (общей части) одинаковых алгоритмов для всего массива или сечений строго следующим оператором вводится «во изменении» специфический алгоритм. Пример:
ИМИТАК1 |
ИМИТАК2 |
Д А1.Н = RAND(20, 40) |
|
Д А2.Н = sin(время) |
Д А: (3).Н = RAND(20, 40) |
Д А3.Н = RAND(20, 40) |
Д А#(2).Н =sin(время) |
Т.е. 1 и 3 элемент массива А1 и А3 рассчитываются как случайная величина, а А2 как синусоидальная. При этом между 2 операторами ИМИТАК2 не должно стоять никакого значимого оператора (к незначимым относят комментарии).
При введении сечения мы используем значок *для отображения всех индексов элементов, входящих в сечение. Если необходимо использовать определенный порядок движения индексов, то вводятся 3 скалярные ячейки:I1, I2, I3, что соответствует ортам i, j, kсоответственно.
I1, I2, I3могут использоваться в правой части, причем для каждого оператора задается свой вариант, где максимальные значения индекса объявляются в левой части оператора.
Пример: Пусть имеется матрица А: (20, 10). Задача – её надо транспонировать, т.е. получить матрицу В(10,20).
У А: (20, 10).Н = (1)
Д В: (10, 20).Н = А#(I2, I1).H(2)
Т.е. в первом операторе (1) есть I1, I2, тогда во (2) I1 (2) = I2, I2 (1) = I1.
Следствия:
1. В первый момент времени уровням присваиваются начальные значения, соосветственно объявленным значениям.
2. Для массивов констант объявление размерностей ведется не в левой части оператора, а непосредственно в правой части в момент его использования.
Пример:
У А: (3, 2).Н = А.П + ТВХ.ПН - ТВП.ПН (1)
Т ТВХ: (3, 2).НБ = А#(I1, I2).H* К: (3, 2)#(I1, I2) (2)
Т ТВП: (3, 2).НБ = А#(I1, I2).H- К: (2, 3)#(I2, I1) (3)
Е
И А = 3/4/6/7/3/2
И К = 1/2/3/4/5/6
Результат: в первый момент времени (1):
в первый момент времени (1):
А#(1, 1) = 3
А#(1, 2) = 4| 3 4 |
А#(2, 1) = 6 А: (3, 2) =| 6 7 |
А#(2, 2) = 7 | 3 2 |
А#(3, 1) = 3
А#(3, 2) = 2
(2)
| 1 2 | ТВХ (1, 1) = 3 * 1
Квх = | 3 4 | ТВХ (1, 2) = 4 * 2
| 5 6 | ТВХ (2, 1) = 6 * 3
ТВХ (2, 2) = 7 * 4
ТВХ (3, 1) = 3 * 5
ТВХ (3, 2) = 2 * 6
(3)
ТВП (1, 1) = 3 - 1
Квых = | 1 2 3 | ТВП (1, 2) = 4 - 4
| 4 5 6 | ТВП (2, 1) = 6 - 2
ТВП (2, 2) = 7 - 5
ТВП (3, 1) = 3 - 3
ТВП (3, 2) = 2 - 6
При использовании матричных переменных сталкиваются с понятием «массивы необъявленной размерности». Массивы необъявленной размерности возникают потому, что в скалярных встроенных функциях типа TABLEи QUANTобязательно используются одномерные массивы. При работе с векторными (встроенными) функциями (операторами) в правых частях оператора могут встретиться функцииTABLEили QUANT, размерность которых в левой части оператора не может быть объявлена. Кроме того, если в левой части оператора объявляется размерность меньше, чем объявленная ранее размерность массива, используемого в правой части, то фактически используется только часть массива, находящегося в правой части.
Пример:
Д В: (3).Н = TABLE (MAC: (5, 4)#(I1,*), время, 0,1)
Е
И МАС = 10/20/30/40/0.1/0.2/0.3/0.4/1/2/3/4/9/8/7/6/30/25/20/15
Результат:
Время |
B#(1) |
B#(2) |
B#(3) |
0 |
10 |
0.1 |
1 |
1 |
20 |
0.2 |
2 |
2 |
30 |
0.3 |
3 |
3 |
40 |
0.4 |
4 |
4 |
40 |
0.4 |
4 |
5 |
40 |
0.4 |
4 |
I = {1, 2, 3}, т.к. В: (3)
Предположим, что имеется другой фрагмент: пусть вместо В записана следующая строчка, т.е. надо рассчитать С.
Д С: (4) = QUANT (MAC: (5, 4)#(I1,*),0)
Результат:
Время |
С#(1) |
С#(2) |
С#(3) |
С#(4) |
0 |
10 |
0.1 |
1 |
9 |
1 |
20 |
0.2 |
2 |
8 |
2 |
30 |
0.3 |
3 |
7 |
3 |
40 |
0.4 |
4 |
6 |
4 |
10 |
0.1 |
1 |
9 |
5 |
20 |
0.2 |
2 |
8 |