Аналитический обзор методов и систем имитационного моделирования
Принцип метода Монте-Карло и проверка статистических гипотез. Закон распределения случайных величин при имитации экономических процессов. Программы имитационного моделирования. Описание граф-схемы стратегии и разработка редактора сетевых графиков.
Рубрика | Экономико-математическое моделирование |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 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