Разработка системы имитационного моделирования принятия политико-экономических решений макроэкономического уровня
Целевые переменные и их значения. Назначение и классификация экономических моделей. Константы, применяющиеся для расчёта промежуточных и целевых параметров. Основные преимущества деловой игры как способа анализа и моделирования экономических процессов.
Рубрика | Математика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 28.10.2019 |
Размер файла | 208,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
SetVar("TAX.REV", GetVar("GDP", Step.Current) * GetVar("TAX.TOT.FACT.Q", Step.Previous));
SetVar("BUDG.REV.TOT", GetVar("EXT.AID.RU", Step.Current) + GetVar("TAX.REV", Step.Current) + GetVar("CUSTOMS.REV", Step.Current));
SetVar("BUDG.DEF.TOT", GetVar("BUDG.EXPEND.TOT", Step.Current) - GetVar("BUDG.REV.TOT", Step.Current));
SetVar("BUDG.DEF.PRIM", GetVar("BUDG.DEF.TOT", Step.Current) - GetVar("EXT.DEBT.PUBL.SER.RU", Step.Current) - GetVar("NAT.DEBT.SER", Step.Current));
SetVar("BUDG.DEF.TOT/GNP.Q", GetVar("BUDG.DEF.TOT", Step.Current) / GetVar("GNP", Step.Current));
// SetVar("INFLAT.R", ЕСЛИ(D13<=0;D13+E14*E209;D13*(1+E31*D97*E206)*(1+E14*E208)*(1+(E14-D14)*E207)*(1-E143*E211)*(1+E27*E210)*(1+(E137-D137)*E212)*(1+(E34-D34)*D97*D213)));
SetVar("INFLAT.R", GetVar("INFLAT.R", Step.Previous) <= 0 ?
(GetVar("INFLAT.R", Step.Previous) + GetVar("BUDG.DEF.TOT/GNP.Q", Step.Current) * GetVar("infl.abs-abs.def", Step.Current)) :
(GetVar("INFLAT.R", Step.Previous) * (1 + GetVar("DEVAL.R", Step.Current) * GetVar("IMP.$.Q", Step.Previous) * GetVar("infl-r.deval", Step.Current)) * (1 + GetVar("BUDG.DEF.TOT/GNP.Q", Step.Current) * GetVar("infl-abs.def", Step.Current)) * (1 + (GetVar("BUDG.DEF.TOT/GNP.Q", Step.Current) - GetVar("BUDG.DEF.TOT/GNP.Q", Step.Previous)) * GetVar("infl-marg.def", Step.Current)) * (1 - GetVar("INTEREST.RR", Step.Current) * GetVar("infl-r.interest", Step.Current)) * (1 + GetVar("INCR.MARKET.Q", Step.Current) * GetVar("infl-incr.market", Step.Current)) * (1 + (GetVar("TAX.TOT.FACT.Q", Step.Current) - GetVar("TAX.TOT.FACT.Q", Step.Previous)) * GetVar("infl-tax.fact", Step.Current)) * (1 + (GetVar("IMP.DUTY.R", Step.Current) - GetVar("IMP.DUTY.R", Step.Previous)) * GetVar("IMP.$.Q", Step.Previous) * GetVar("infl-customs", Step.Previous))));
SetVar("OFFICERS.INC.R.GR", (1 + GetVar("OFFICER.INC.PC.G", Step.Current)) / (1 + GetVar("INFLAT.R", Step.Current)) - 1);
SetVar("BUDG.EXPEND.TOT.G", (GetVar("BUDG.EXPEND.TOT", Step.Current) - GetVar("BUDG.EXPEND.TOT", Step.Previous)) / GetVar("BUDG.EXPEND.TOT", Step.Previous));
SetVar("GOV.EXPEND.OFFICER/EXPEND", GetVar("GOV.EXPEND.OFFICER", Step.Current) / GetVar("BUDG.EXPEND.TOT", Step.Current));
SetVar("NAT.DEBT.SER/BUDG.EXPEND.TOT.Q", GetVar("NAT.DEBT.SER", Step.Current) / GetVar("BUDG.EXPEND.TOT", Step.Current));
SetVar("PENSIONER.INC.TOT/EXPEND.TOT.Q", GetVar("PENSIONER.INC.TOT", Step.Current) / GetVar("BUDG.EXPEND.TOT", Step.Current));
SetVar("PUBL.INV/EXPEND.TOT.Q", GetVar("PUBL.INV", Step.Current) / GetVar("BUDG.EXPEND.TOT", Step.Current));
SetVar("SECUR.EXPEND/EXPEND.Q", GetVar("SECUR.EXPEND", Step.Current) / GetVar("BUDG.EXPEND.TOT", Step.Current));
SetVar("SOC.EXPEND/EXPEND.Q", GetVar("SOC.EXPEND", Step.Current) / GetVar("BUDG.EXPEND.TOT", Step.Current));
SetVar("UNEMPL.INC.TOT/EXPEND.TOT.G", GetVar("UNEMPL.INC.TOT", Step.Current) / GetVar("BUDG.EXPEND.TOT", Step.Current));
SetVar("SECUR.EXPEND.Q", GetVar("SECUR.EXPEND", Step.Current) / GetVar("GNP", Step.Current));
SetVar("OFFICER.INC.Q", GetVar("OFFICERS.INC.PC", Step.Current) / GetVar("PCI", Step.Current));
SetVar("CORRUPT.CALC", (1 + (GetVar("MARKET.Q", Step.Current) - GetVar("MARKET.INSTIT.Q", Step.Current)) * GetVar("corrupt-instit", Step.Current)) * (1 + (GetVar("officer.inc.norm.q", Step.Current) - GetVar("OFFICER.INC.Q", Step.Current)) * GetVar("corrupt-officer.inc", Step.Current)) * (1 + (GetVar("secur.norm.q", Step.Current) - GetVar("SECUR.EXPEND.Q", Step.Current)) * GetVar("corrupt-security", Step.Current)) - 1);
// SetVar("CORRUPT.FACTOR", ЕСЛИ(E146<0;0;E146));
SetVar("CORRUPT.FACTOR", GetVar("CORRUPT.CALC", Step.Current) < 0 ? 0 : GetVar("CORRUPT.CALC", Step.Current));
SetVar("PCI.$", GetVar("GNP.$", Step.Current) / GetVar("POPUL", Step.Current));
SetVar("PCI.$.G", (GetVar("PCI.$", Step.Current) - GetVar("PCI.$", Step.Previous)) / GetVar("PCI.$", Step.Previous));
SetVar("EXP.$.Q", GetVar("EXP.$", Step.Current) / GetVar("GDP.$", Step.Current));
SetVar("EXT.DEBT.PUBL.SER/EXPEND.TOT.Q", GetVar("EXT.DEBT.PUBL.SER.RU", Step.Current) / GetVar("BUDG.EXPEND.TOT", Step.Current));
SetVar("EXT.DEBT.PUBLIC.SER.Q", GetVar("EXT.DEBT.PUBL.SER.RU", Step.Current) / GetVar("GDP", Step.Current));
SetVar("EXT.DEBT.PUBL/GDP$.Q", GetVar("EXT.DEBT.PUBL.$", Step.Current) / GetVar("GDP.$", Step.Current));
SetVar("FDI.IN./GDP.Q", GetVar("FDI.IN.$", Step.Current) / GetVar("GDP.$", Step.Current));
SetVar("IMP.$.Q", GetVar("IMP.$", Step.Current) / GetVar("GDP.$", Step.Current));
SetVar("BUDG.EXPEND.TOT/GNP.Q", GetVar("BUDG.EXPEND.TOT", Step.Current) / GetVar("GNP", Step.Current));
SetVar("NAT.DEBT/GNP.Q", GetVar("NAT.DEBT", Step.Current) / GetVar("GNP", Step.Current));
SetVar("PUBL.INV.Q", GetVar("PUBL.INV.$", Step.Current) / GetVar("GNP.$", Step.Current));
//End
SetVar("GDP.$.G", (GetVar("GDP.$", Step.Current) - GetVar("GDP.$", Step.Previous)) / GetVar("GDP.$", Step.Previous));
SetVar("GDP.$.IND", GetVar("GDP.$.IND", Step.Previous) * (1 + GetVar("GDP.$.G", Step.Current)));
SetVar("PCI.$.IND", GetVar("PCI.$.IND", Step.Previous) * (1 + GetVar("PCI.$.G", Step.Current)));
SetVar("BELT.TIGHT.IND", GetVar("GNP.$.IND", Step.Current) / GetVar("GDP.$.IND", Step.Current) * 100);
SetVar("PUBL.INFRA.ASSETS/GDP.Q", GetVar("PUBL.INFRA.ASSETS.$", Step.Current) / GetVar("GDP.$", Step.Current));
SetVar("EXT.DEBT.TOT.SER/EXP.Q", (GetVar("EXT.DEBT.PUBL.SER.$", Step.Current) + GetVar("EXT.DEBT.PRIV.SER.$", Step.Current)) / GetVar("EXP.$", Step.Current));
SetVar("EXT.DEBT.PUBL/GDP.$.Q", GetVar("EXT.DEBT.PUBL.$", Step.Current) / GetVar("GDP.$", Step.Current));
SetVar("IMP.SURPL.$", GetVar("IMP.$", Step.Current) - GetVar("EXP.$", Step.Current));
SetVar("UNEMPL.Q", GetVar("UNEMPLOYED", Step.Current) / GetVar("PERS.WORK.AGE", Step.Current));
SetVar("BUDG.DEF.PRIM./GNP.Q", GetVar("BUDG.DEF.PRIM", Step.Current) / GetVar("GNP", Step.Current));
SetVar("NAT.DEBT/GNP.Q ", GetVar("NAT.DEBT", Step.Current) / GetVar("GNP", Step.Current));
SetVar("NAT.DEBT.SER/GNP.Q", GetVar("NAT.DEBT.SER", Step.Current) / GetVar("GNP", Step.Current));
SetVar("UNEMPL.INC.Q", GetVar("UNEMPL.INC.PC", Step.Current) / GetVar("PCI", Step.Current));
SetVar("PENSIONERS.INC.Q", GetVar("PENSIONER.INC.PC", Step.Current) / GetVar("PCI", Step.Current));
SetVar("SOC.EXPEND.Q", GetVar("SOC.EXPEND", Step.Current) / GetVar("GNP", Step.Current));
SetVar("GINI.Q", GetVar("GINI.Q", Step.Previous) + (GetVar("CORP.Q", Step.Current) - GetVar("CORP.Q", Step.Previous)) * GetVar("gini-delta.corp", Step.Previous) + GetVar("INCR.MARKET.Q", Step.Previous) * GetVar("gini-delta.market", Step.Previous) - GetVar("IMPROV.INSTIT.Q", Step.Previous) * GetVar("gini-delta.instit", Step.Previous) - (GetVar("UNEMPL.INC.Q", Step.Current) - GetVar("UNEMPL.INC.Q", Step.Previous)) * GetVar("gini-unemploy.inc", Step.Current) - (GetVar("PENSIONERS.INC.Q", Step.Current) - GetVar("PENSIONERS.INC.Q", Step.Previous)) * GetVar("gini-pensioners.inc", Step.Current) - (GetVar("SOC.EXPEND.Q", Step.Current) - GetVar("SOC.EXPEND.Q", Step.Previous)) * GetVar("gini-soc.expend", Step.Current));
SetVar("UNEMPL.INC.MIN.Q", GetVar("OFFICER.INC.Q", Step.Previous) * GetVar("unempl.y-officers.inc", Step.Previous));
}
public bool IsVariableInstr(string name)
{
int id = variableIds[name];
if (id >= endVars.Count && id < endVars.Count + instrVars.Count)
return true;
return false;
}
private float GetVar(string name, Step step)
{
if (step == Step.Current)
{
// BIG COSTIL
if (gridWrapper[variableIds[name]][CurrentStep] == null)
{
Trace.WriteLine(name);
}
return float.Parse(gridWrapper[variableIds[name]][CurrentStep]);
}
else
{
return float.Parse(gridWrapper[variableIds[name]][CurrentStep - 1]);
}
}
private void SetVar(string name, float value)
{
gridWrapper[variableIds[name]][CurrentStep] = value.ToString();
}
public void MoveCarriageTo(int to)
{
if (CurrentStep == to)
return;
else if (CurrentStep < to)
{
while (CurrentStep != to)
{
gridWrapper.AddColum(CurrentStep++);
}
return;
}
else
{
while (CurrentStep != to)
{
gridWrapper.PopColum();
CurrentStep--;
}
return;
}
}
}
}
VariableTypes.cs:
namespace GameOfEconomy.MainLogic
{
public class EVariable
{
public string Name { get; set; }
public string LongName { get; set; }
}
public class EInstrVar : EVariable
{
public string Value { get; set; }
}
public class EInterVar : EVariable
{
}
public class EEndVar : EVariable
{
}
public class EConstVar : EVariable
{
}
}
MainWindow.xaml.cs
using GameOfEconomy.MainLogic;
using Microsoft.Win32;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Xml.Serialization;
namespace GameOfEconomy
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private DataGridWrapper gridWrapper;
public Game game;
public MainWindow()
{
InitializeComponent();
Initialize();
}
private void Initialize()
{
gridWrapper = new DataGridWrapper(MainTable);
game = new Game(gridWrapper);
}
private void NextYear_Click(object sender, RoutedEventArgs e)
{
game.SimulateNextStep();
}
private void MainTable_BeginningEdit(object sender, DataGridBeginningEditEventArgs e)
{
// Canceling editing to make dialog
e.Cancel = true;
Binding binding = ((DataGridTextColumn)e.Column).Binding as Binding;
DataGridRow row = e.Row.Item as DataGridRow;
if (int.TryParse(binding.Path.Path.Substring(4), out int yearIndex))
{
if (game.IsVariableInstr(row.Name))
ShowEditDialog(row, yearIndex);
else
new NotEditableDialog().Show();
}
else
{
ChartWindow chartWindow = new ChartWindow(row);
chartWindow.Show();
}
}
private void ShowEditDialog(DataGridRow row, int yearIndex)
{
EditDialog dialog = new EditDialog(row.Name, row[yearIndex] == null ? 0 : float.Parse(row[yearIndex]));
dialog.Show();
dialog.Closed += (object s, System.EventArgs closedEvent) =>
{
row[yearIndex] = dialog.Value.ToString();
gridWrapper.Apply();
game.CurrentStep--;
game.SimulateStep();
game.CurrentStep++;
};
}
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
if (saveFileDialog.ShowDialog() == true)
{
using (var writer = new StreamWriter(saveFileDialog.FileName))
{
var serializer = new XmlSerializer(typeof(DataGridRow[]));
serializer.Serialize(writer, gridWrapper.rows.ToArray());
writer.Flush();
}
}
}
private void MenuItem_Click_1(object sender, RoutedEventArgs e)
{
LoadGame();
}
public void LoadGame()
{
OpenFileDialog openFileDialog = new OpenFileDialog();
if (openFileDialog.ShowDialog() == true)
{
using (StreamReader reader = new StreamReader(openFileDialog.FileName))
{
var serializer = new XmlSerializer(typeof(DataGridRow[]));
gridWrapper.rows = ((DataGridRow[])serializer.Deserialize(reader)).ToList();
gridWrapper.Apply();
int i = 0;
while (gridWrapper.rows[0][i++] != null) { }
i--;
game.MoveCarriageTo(i);
reader.Close();
}
}
}
}
}
PlotViewModel.cs
using OxyPlot;
using OxyPlot.Series;
namespace GameOfEconomy
{
class PlotViewModel
{
public PlotViewModel(DataGridRow row)
{
var tmp = new PlotModel { Title = row.Name, Subtitle = row.LongName};
var series = new LineSeries {MarkerType = MarkerType.Circle };
int i = 0;
while (row[i] != null)
{
series.Points.Add(new DataPoint (i, double.Parse(row[i])));
i++;
}
tmp.Series.Add(series);
this.Model = tmp;
}
/// <summary>
/// Gets the plot model.
/// </summary>
public PlotModel Model { get; private set; }
}
}
ChartWindow.xaml.cs
using System;
using System.Collections.Generic;
using System.Windows;
using GameOfEconomy.MainLogic;
using OxyPlot;
using OxyPlot.Series;
namespace GameOfEconomy
{
/// <summary>
/// Interaction logic for ChartWindow.xaml
/// </summary>
public partial class ChartWindow : Window
{
public ChartWindow()
{
InitializeComponent();
}
public ChartWindow(DataGridRow row)
{
InitializeComponent();
this.DataContext = new PlotViewModel(row);
}
}
}
Размещено на Allbest.ru
...Подобные документы
Моделирование как метод научного познания, его сущность и содержание, особенности использования при исследовании и проектировании сложных систем, классификация и типы моделей. Математические схемы моделирования систем. Основные соотношения моделей.
курсовая работа [177,9 K], добавлен 15.10.2013Основные характерные черты моделирования. Эволюционный процесс в моделировании. Одним из наиболее распространённых методов расчёта внешнего теплообмена является зональный метод, рассматривающий перенос тепла излучением, конвекцией.
реферат [68,2 K], добавлен 25.11.2002Применение системы MathCAD при решении прикладных задач технического характера. Основные средства математического моделирования. Решение дифференциальных уравнений. Использование системы MathCad для реализации математических моделей электрических схем.
курсовая работа [489,1 K], добавлен 17.11.2016Процесс выбора или построения модели для исследования определенных свойств оригинала в определенных условиях. Стадии процесса моделирования. Математические модели и их виды. Адекватность математических моделей. Рассогласование между оригиналом и моделью.
контрольная работа [69,9 K], добавлен 09.10.2016Системы водоснабжения и канализации как главный элемент водохозяйственной системы. Этапы математического моделирования технологических процессов. Скважинный водозабор как единая инженерная система, проблемные вопросы переоценки запасов подземных вод.
презентация [9,0 M], добавлен 18.09.2017Исследование экономических задач методами дифференциального исчисления. Изучение экономических систем с помощью линейных балансовых моделей, сетевое планирование и управление. Эластичность производственных функций, элементы линейного программирования.
методичка [418,9 K], добавлен 10.11.2015Сущность моделирования, значение и необходимость создания различных моделей, сферы их практического использования. Свойства объекта, существенные и несущественные для принятия решений. Граф как средство наглядного представления состава и структуры схемы.
презентация [4,3 M], добавлен 26.06.2014Проведение численного моделирования системы, описанной системой дифференциальных уравнений первого порядка. Схемы моделирования методом последовательного (непосредственного) интегрирования, вспомогательной переменной и методом канонической формы.
контрольная работа [550,9 K], добавлен 12.12.2013Понятие об индексах и их роль в экономических исследованиях. Метод экономических индексов и их классификация по группировочным признакам. Индексы переменного и постоянного состава, ценные и базисные. Использование в макроэкономических исследованиях.
контрольная работа [59,9 K], добавлен 23.07.2009Основные понятия математического моделирования, характеристика этапов создания моделей задач планирования производства и транспортных задач; аналитический и программный подходы к их решению. Симплекс-метод решения задач линейного программирования.
курсовая работа [2,2 M], добавлен 11.12.2011Динамические системы в математическом понимании. Определение функционирующей системы и системы процессов. Основные и неосновные переменные динамики систем, множества их значений, типовые кванторы. Определения и классификация динамических свойств.
курсовая работа [144,0 K], добавлен 04.05.2011Основные понятия теории марковских цепей. Теория о предельных вероятностях. Области применения цепей Маркова. Управляемые цепи Маркова. Выбор стратегии. Оптимальная стратегия является марковской - может зависеть еще и от момента времени принятия решения.
реферат [75,6 K], добавлен 08.03.2004Расчет эффективности ведения многоотраслевого хозяйства, отображение связей между отраслями в таблицах балансового анализа. Построение линейной математической модели экономического процесса, приводящей к понятию собственного вектора и значения матрицы.
реферат [271,1 K], добавлен 17.01.2011Теоретические основы моделирования: понятие модели и моделирования. Моделирование в решении текстовых задач. Задачи на встречное движение двух тел. Задачи на движение двух тел в одном направлении и в противоположных направлениях. Графические изображения.
курсовая работа [98,9 K], добавлен 03.07.2008Анализ эффективности простейших систем массового обслуживания, расчет их технических и экономических показателей. Сравнение эффективности системы с отказами с соответствующей смешанной системой. Преимущества перехода к системе со смешанными свойствами.
курсовая работа [163,4 K], добавлен 25.02.2012Определение понятия модели, необходимость их применения в науке и повседневной жизни. Характеристика методов материального и идеального моделирования. Классификация математических моделей (детерминированные, стохастические), этапы процесса их построения.
реферат [28,1 K], добавлен 20.08.2015Изучение вопросов применения теории множеств, их отношений и свойств и теории графов, а также математических методов конечно-разностных аппроксимаций для описания конструкций РЭА (радиоэлектронной аппаратуры) и моделирования протекающих в них процессов.
реферат [206,9 K], добавлен 26.09.2010Основные положения теории принятия решений, разработанной на основе математических методов и формальной логики, классификация управленческих решений. Некорректно поставленные задачи и регуляризирующие (робастные) алгоритмы: адаптивные, инвариантные.
курсовая работа [1,1 M], добавлен 23.11.2010Построение многофакторной корреляционно-регрессионной модели доходности предприятия: оценка параметров функции регрессии, анализ факторов на управляемость, экономическая интерпретация модели. Прогнозирование доходности на основе временных рядов.
дипломная работа [5,1 M], добавлен 28.06.2011Дифференциальные уравнения как математический инструмент моделирования и анализа разнообразных явлений и процессов в науке и технике. Описание математических методов решения систем дифференциальных уравнений. Методы расчета токов на участках цепи.
курсовая работа [337,3 K], добавлен 19.09.2011