Аналитический обзор методов и систем имитационного моделирования

Принцип метода Монте-Карло и проверка статистических гипотез. Закон распределения случайных величин при имитации экономических процессов. Программы имитационного моделирования. Описание граф-схемы стратегии и разработка редактора сетевых графиков.

Рубрика Экономико-математическое моделирование
Вид курсовая работа
Язык русский
Дата добавления 20.12.2012
Размер файла 1,4 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

rightHandles[i].Paint(mainBufWorks);

}

else

if (treeGridViewWorks.Columns[10].DataGridView["RightHandle", i].Value.ToString() == "checked")

{

rightHandles.Add(new HandleBlock(new SolidBrush(Color.Black), new Pen(Color.Black),

leftIndent * 22 + duration * 22 - 3, currentHeight + 4, 6, 6));

rightHandles[i].Paint(mainBufWorks);

}

}

else

{

rightHandles.Add(new HandleBlock(new SolidBrush(Color.White), new Pen(Color.White), 0, 0, 0, 0));

leftHandles.Add(new HandleBlock(new SolidBrush(Color.White), new Pen(Color.White), 0, 0, 0, 0));

}

#endregion

}

}

#endregion

}

public void EditParentNodeInfo(TreeGridNode node)

{

DateTime minDateChild = DateTime.Today.AddYears(200);

DateTime maxDateChild = DateTime.Today.AddYears(-100);

DateTime currentDateBegin, currentDateEnd;

//TimeSpan n;

#region Изменяем данные о родителе

node.Cells[1].ReadOnly = true;

node.Cells[2].ReadOnly = true;

for (int i = 0; i < node.Nodes.Count; i++)

{

if (node.Nodes[i].HasChildren == true)

{

EditParentNodeInfo(node.Nodes[i]);

}

currentDateBegin = Convert.ToDateTime(node.Nodes[i].Cells[1].Value);

currentDateEnd = Convert.ToDateTime(node.Nodes[i].Cells[2].Value);

//currentDate2 = currentDate2.AddDays(Convert.ToInt16(node.Nodes[i].Cells[2].Value));

if (currentDateBegin < minDateChild)

{

minDateChild = currentDateBegin;

}

if (currentDateEnd > maxDateChild)

{

maxDateChild = currentDateEnd;

}

}

//n = maxDateChild - minDateChild;

node.Cells["Begin"].Value = minDateChild.ToShortDateString() + ' ' + minDateChild.ToShortTimeString();

node.Cells["End"].Value = maxDateChild.ToShortDateString() + ' ' + maxDateChild.ToShortTimeString();

#endregion

}

public int Duration(ToolStripMenuItem Days, ToolStripMenuItem Hours, ToolStripMenuItem Minutes,

DateTime begin, DateTime end)

{

int duration = 0;

if (Days.Checked == true)

{

begin = begin.AddMinutes(-begin.Minute);

begin = begin.AddHours(-begin.Hour);

TimeSpan lengthWork = end - begin;

duration = lengthWork.Days;

if ((lengthWork.Hours != 0) || (lengthWork.Minutes != 0))

duration++;

}

if (Hours.Checked == true)

{

begin = begin.AddMinutes(-begin.Minute);

TimeSpan lengthWork = end - begin;

duration = Convert.ToInt32(Math.Ceiling(lengthWork.TotalMinutes / 60));

}

if (Minutes.Checked == true)

{

TimeSpan lengthWork = end - begin;

duration = Convert.ToInt32(lengthWork.TotalMinutes);

}

return (duration);

}

public int LeftIndent(ToolStripMenuItem Days, ToolStripMenuItem Hours, ToolStripMenuItem Minutes,

DateTime begin, DateTime startDate)

{

int leftIndent = 0;

if (Days.Checked == true)

{

begin = Convert.ToDateTime(begin.ToShortDateString());

startDate = Convert.ToDateTime(startDate.ToShortDateString());

TimeSpan lengthSpan = begin - startDate;

leftIndent = lengthSpan.Days;

/*if ((lengthSpan.Hours != 0) || (lengthSpan.Minutes != 0))

leftIndent++;*/

}

if (Hours.Checked == true)

{

begin = begin.AddMinutes(-begin.Minute);

startDate = startDate.AddMinutes(-startDate.Minute);

TimeSpan lengthSpan = begin - startDate;

leftIndent = Convert.ToInt32(lengthSpan.TotalHours);

/* if (lengthSpan.Minutes != 0)

leftIndent++;*/

}

if (Minutes.Checked == true)

{

TimeSpan lengthSpan = begin - startDate;

leftIndent = Convert.ToInt32(lengthSpan.TotalMinutes);

}

return (leftIndent);

}

}

}using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using Excel = Microsoft.Office.Interop.Excel;

namespace Logist

{

public class FromGant

{

public class Res

{

public string name;

public int count;

public int index;

}

public List<Res> NResources;

public List<Res> VResources;

public string f;

public List<Job> jobs;

public string fname;

public int[] resuse;

public int[,] vresuse;

public FromGant()

{

fname = var.Fname;

NResources = new List<Res>();

VResources = new List<Res>();

}

public void LoadJobs()

{

Excel.Application loadProject = null;

object misValue = System.Reflection.Missing.Value;

loadProject = new Excel.Application();

Excel.Workbook loadProjectBook;

loadProjectBook = loadProject.Workbooks.Open(fname,

Type.Missing, Type.Missing, Type.Missing, Type.Missing,

Type.Missing, Type.Missing, Type.Missing, Type.Missing,

Type.Missing, Type.Missing, Type.Missing, Type.Missing,

Type.Missing, Type.Missing);

Excel.Worksheet loadProjectWorksheet;

Excel.Range excelcell;

//таблица

loadProjectWorksheet = (Excel.Worksheet)loadProjectBook.Sheets[1];

//копирование листа 1 в массив valueArray

Excel.Range excelRange = loadProjectWorksheet.UsedRange;

object[,] valueArray = (object[,])excelRange.get_Value(

Excel.XlRangeValueDataType.xlRangeValueDefault);

jobs = new List<Job>();

#region Загрузка работ

string name, edIzm, index, lefthandle, righthandle, after, before, parent;

DateTime begin, end;

for (int i = 2; i <= valueArray.Length / 11; i++)

{

Job job = new Job();

name = valueArray[i, 1].ToString();

job.name = name;

begin = Convert.ToDateTime(valueArray[i, 2]);

job.startDate = begin;

end = Convert.ToDateTime(valueArray[i, 3]);

job.endDate = end;

job.duration = (end-begin).TotalMinutes;

edIzm = valueArray[i, 4].ToString();

//excelcell = loadProjectWorksheet.get_Range("E" + i.ToString(), Type.Missing);

index = valueArray[i, 6].ToString();

lefthandle = valueArray[i, 7].ToString();

righthandle = valueArray[i, 8].ToString();

//if (valueArray[i, 9] == null)

// after = "";

//else

// after = valueArray[i, 9].ToString();

// if (valueArray[i, 10] == null)

// before = "";

// else

// before = valueArray[i, 10].ToString();

// parent = valueArray[i, 11].ToString();

jobs.Add(job);

}

#endregion;

#region Загрузка списка невозобновляемых ресурсов

//f = "";

loadProjectWorksheet = (Excel.Worksheet)loadProjectBook.Sheets[2];

//копирование листа 2 в массив valueArray

excelRange = loadProjectWorksheet.UsedRange;

valueArray = (object[,])excelRange.get_Value(

Excel.XlRangeValueDataType.xlRangeValueDefault);

for (int i = 2; i <= valueArray.Length / 5; i++)

{

Res resource = new Res();

name = valueArray[i, 1].ToString();

resource.name = name;

// if (valueArray[i, 2] == null)

// edIzm = "";

// else

// edIzm = valueArray[i, 2].ToString();

index = valueArray[i, 3].ToString();

resource.index = Convert.ToInt32(index);

// excelcell = loadProjectWorksheet.get_Range("D" + i.ToString(), Type.Missing);

//parent = valueArray[i, 5].ToString();

//f += name + ' ' + index + '\n';

NResources.Add(resource);

}

#endregion;

#region Загрузка невозобновляемых ресурсов работ

resuse = new int[jobs.Count];

loadProjectWorksheet = (Excel.Worksheet)loadProjectBook.Sheets[4];

//копирование листа 4 в массив valueArray

excelRange = loadProjectWorksheet.UsedRange;

valueArray = (object[,])excelRange.get_Value(

Excel.XlRangeValueDataType.xlRangeValueDefault);

if (valueArray != null)

{

for (int i = 1; i <= valueArray.GetLength(1); i++)

{

if (valueArray[1, i] != null)

{

NResources[i - 1].count = Convert.ToInt32(valueArray[1, i]);

}

}

for (int i = 2; i <= valueArray.GetLength(0); i++)

for (int j = 1; j <= valueArray.GetLength(1); j++)

{

if (valueArray[i, j] != null)

resuse[i - 2] = j;

}

//for (int j = 1; j <= valueArray.GetLength(1); j++)

//{

// if (valueArray[i, j] == null)

// resourcesWorks[i - 1, j, 0] = 0;

// else

// resourcesWorks[i - 1, j, 0] = Convert.ToInt32(valueArray[i, j]);

//}

}

#endregion

#region Загрузка списка возобновляемых ресурсов

loadProjectWorksheet = (Excel.Worksheet)loadProjectBook.Sheets[3];

//копирование листа 3 в массив valueArray

excelRange = loadProjectWorksheet.UsedRange;

valueArray = (object[,])excelRange.get_Value(

Excel.XlRangeValueDataType.xlRangeValueDefault);

if (valueArray != null)

{

for (int i = 2; i <= valueArray.Length / 5; i++)

{

Res resource = new Res();

name = valueArray[i, 1].ToString();

//if (valueArray[i, 2] == null)

// edIzm = "";

//else

// edIzm = valueArray[i, 2].ToString();

index = valueArray[i, 3].ToString();

resource.name = name;

resource.index = Convert.ToInt32(index);

VResources.Add(resource);

}

}

#endregion

#region Загрузка возобновляемых ресурсов работ

vresuse = new int[jobs.Count, VResources.Count];

loadProjectWorksheet = (Excel.Worksheet)loadProjectBook.Sheets[5];

//копирование листа 5 в массив valueArray

excelRange = loadProjectWorksheet.UsedRange;

valueArray = (object[,])excelRange.get_Value(

Excel.XlRangeValueDataType.xlRangeValueDefault);

if (valueArray != null)

{

for (int i = 1; i <= valueArray.GetLength(1); i++)

{

if (valueArray[1, i] != null)

{

VResources[i - 1].count = Convert.ToInt32(valueArray[1, i]);

}

//for (int j = 1; j <= valueArray.GetLength(1); j++)

//{

//if (valueArray[i, j] == null)

// resourcesWorks[i - 1, j, 1] = 0;

//else

// resourcesWorks[i - 1, j, 1] = Convert.ToInt32(valueArray[i, j]);

//}

}

for (int i = 2; i <= valueArray.GetLength(0); i++)

for (int j = 1; j <= valueArray.GetLength(1); j++)

{

if (valueArray[i, j] != null)

vresuse[i - 2, j - 1] = Convert.ToInt32(valueArray[i, j]);

}

}

#endregion

}

public string GetCode()

{

string code="\tSIMULATE\n";

LoadJobs();

for (int i = 0; i < VResources.Count; i++)

{

code += "\tINTEGER &RES" + VResources[i].index + ' ' + VResources[i].name + '\n';

code += "\tLET &RES"+ VResources[i].index +" = " + VResources[i].count + '\n';

}

int num = 0;

foreach (Job job in jobs)

{

if (resuse[num] != 0)

code += "J" + (num + 1) + '\t' + "STORAGE" + ' ' +

NResources[resuse[num] - 1].count + ' ' +

NResources[resuse[num] - 1].name + "\n\tENTER J" + (num + 1)+'\n';

else

code += "J" + (num + 1) + '\t' + "SEIZE JOB" + (num + 1) + '\n';

code+="\tADVANCE " + job.duration + ' ' + job.name + '\n';

for (int i = 0; i < VResources.Count; i++)

{

if (vresuse[num,i]!=0)

code += "\tLET &RES"+ VResources[i].index+" = "+"&RES"+ VResources[i].index+ " - " + vresuse[num,i]+'\n';

}

if (resuse[num] != 0)

code += "\tLEAVE " + "J" + (num + 1)+'\n';

else

code += "\tRELEASE " + "JOB" + (num + 1)+'\n';

num++;

}

code += "\tTERMINATE 1\n\tSTART 1\n\tEND";

//foreach (Res res in NResources)

//{

// code += res.name + ' ' + res.count+'\n';

//}

//foreach (Res res in VResources)

//{

// code += res.name + ' ' + res.count + '\n';

//}

return code;

}

}

}

Размещено на Allbest.ru


Подобные документы

  • Понятие имитационного моделирования, применение его в экономике. Этапы процесса построения математической модели сложной системы, критерии ее адекватности. Дискретно-событийное моделирование. Метод Монте-Карло - разновидность имитационного моделирования.

    контрольная работа [26,7 K], добавлен 23.12.2013

  • Метод имитационного моделирования, его виды, основные этапы и особенности: статическое и динамическое представление моделируемой системы. Исследование практики использования методов имитационного моделирования в анализе экономических процессов и задач.

    курсовая работа [54,3 K], добавлен 26.10.2014

  • Характеристика метода Монте-Карло. Его преимущество и недостатки, области применения. Решение задач по оптимизации использования ресурсов, управлению запасами и системе массового обслуживания с помощью средств аналитического и имитационного моделирования.

    контрольная работа [1,4 M], добавлен 22.11.2013

  • Статические и динамические модели. Анализ имитационных систем моделирования. Система моделирования "AnyLogic". Основные виды имитационного моделирования. Непрерывные, дискретные и гибридные модели. Построение модели кредитного банка и ее анализ.

    дипломная работа [3,5 M], добавлен 24.06.2015

  • Изучение особенностей метода статистического моделирования, известного в литературе под названием метода Монте-Карло, который дает возможность конструировать алгоритмы для ряда важных задач. Решение задачи линейного программирования графическим методом.

    контрольная работа [1,2 M], добавлен 17.12.2014

  • Элементарные понятия о случайных событиях, величинах и функциях. Числовые характеристики случайных величин. Виды асимметрии распределений. Статистическая оценка распределения случайных величин. Решение задач структурно-параметрической идентификации.

    курсовая работа [756,0 K], добавлен 06.03.2012

  • Связь стохастических процессов и дифференциальных уравнений. Алгоритм Бюффона для определения числа Пи. Геометрический алгоритм Монте-Карло интегрирования. Применение метода Монте-Карло в логистике. Алгоритм Метрополиса, квантовый метод Монте-Карло.

    курсовая работа [258,0 K], добавлен 26.12.2013

  • Структура и параметры эффективности функционирования систем массового обслуживания. Процесс имитационного моделирования. Распределения и генераторы псевдослучайных чисел. Описание метода решения задачи вручную. Перевод модели на язык программирования.

    курсовая работа [440,4 K], добавлен 30.10.2010

  • Обоснование, схема и описание бизнес-процесса организации. Идентификация законов распределения случайных величин. Разработка и описание моделирующего алгоритма для реализации программы имитационной модели. Разработка компьютерной программы моделирования.

    курсовая работа [265,3 K], добавлен 28.07.2013

  • Статистическая модель случайного процесса. Численный метод Монте-Карло. Типы имитации, ее достоинства и возможности. Простая имитационная модель системы обработки документов. Использование для моделирования языка Siman. Его основные моделирующие блоки.

    презентация [1,6 M], добавлен 22.10.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.