Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 12

Хмельницький національний університет

Кафедра комп’ютерних наук

Звіт з лабораторної роботи №2 (2 частина)


з курсу “Моделювання систем та системний аналіз”
Тема: «Імітаційне моделювання для вирішення задач
організаційного управління)»
Варіант 24

Виконав:
ст.гр.КН-21-1
Швачка І. С.
Перевірила:
викладач каф. КН
Драч І. В.

Хмельницький 2022
Завдання 1

Магазин електротоварів реалізує пральні машини. Денний попит на


пральні машини розподілений наступним чином:

Денний 1 2 3 4 5 6
попит
Відсоток 10 30-N 30+N 20 5 5
N = 10 6 54 20 5 5
варіант
Запаси зазвичай поповнюються при досягненні рівня в 6 одиниць і
менше, при цьому розмір замовлення становить 8 пральних машин, а цикл
замовлення - 3 дні. За умови, що початковий запас становить 10 пральних
машин, визначте за допомогою методу моделювання попит на цей товар
протягом 20 днів. Яка ймовірність виникнення дефіциту при проведенні такої
політики розміщення замовлень?

Завдання 2

Доповніть модель із завдання 2 наступною інформацією:


а) Пральні машини продаються в роздріб за ціною 9000 грн. за штуку.
б) Вартість придбання у виробника однієї машини становить 5500 грн.
в) Витрати на оформлення замовлення становлять 1400 грн. на одне
замовлення у вигляді адміністративних витрат і витрат з доставки.
г) Незадоволена потреба обходиться магазину в 5000 грн.
Визначте найкращу стратегію розміщення замовлень з наступних:
1) замовляти по 10 машин в одній партії при точці замовлення в 8 або менше.
2) замовляти по 20 машин при точці замовлення від 10 і нижче.
Виконання

Завдання 1
Відомо, що:
1) Початковий рівень запасів складає 10 пральних машин.
2) Рівень запасів перевіряється на початку кожного дня. Коли він
складає 6 одиниць і менше, розміщується замовлення на нову партію з 8
пральних машинок.
3) Замовлення виконується за 3 дні.
Визначити:
a) середній рівень запасів;
b) кількість замовлень, яке необхідно розмістити протягом 20 днів.
c) ймовірність виникнення дефіциту при проведенні такої політики
розміщення замовлень.

Для побудови моделі можна взяти випадкові числа з інтервалу з 0 до


99. Перші 10% випадкових чисел (00-09) показують попит на одну пральну
машину, наступні 8% - попит на 2 правильні машини, тощо. У таблиці нижче
показані випадкові числа, які будуть використовуватися при моделюванні
попиту на пральні машини:
Таблиця 4 Щоденний попит

Кількість 1 2 3 4 5 6
пральних
машин
Відсоток 10 6 54 20 5 5
Випадкові 00-09 10-15 16-69 70-89 90-94 95-99
числа

За допомогою таблиці випадкових чисел моделюємо попит на пральні


машини протягом 20 днів. У таблиці показана цю модель попиту.

У цій таблиці значення в стовпчиках отримані наступним чином:


1) Попит. Ці значення змодельовані за допомогою випадкових чисел і
відповідно до таблиці 4.
2) Початковий півень запасів. У день 1 початковий рівень запасів відомий і
дорівнює 10. У наступні дні початковий рівень запасів дорівнює рівню
запасів по закриттю попереднього дня.
3) Розміщення замовлень. Замовлення на 8 телевізорів розміщується в той
день, коли рівень запасів дорівнює 6 або менше телевізорам. До отримання
поточного замовлення інші замовлення не розміщуються (тобто як мінімум в
3 попередні дні не було зроблено замовлень).
4) Отримання замовлень. Доставка 8-ми телевізорів займе три дні після
розміщення замовлення.
5) Рівень запасів при закритті. Рівень запасів у кінці кожного дня
розраховується наступним чином:
Рівень запасів при закритті = Початковий рівень запасів - Попит + Отримані
замовлення.
З цієї таблиці отримали середній попит на товар протягом 20 днів який
становить 2,2, і ймовірність виникнення дефіциту при проведенні такої
політики яка дорівнює 0,3.
Завдання 2

Відомо що:
а) Пральні машини продаються в роздріб за ціною 9000 грн. за штуку.
б) Вартість придбання у виробника однієї машини становить 5500 грн.
в) Витрати на оформлення замовлення становлять 1400 грн. на одне
замовлення у вигляді адміністративних витрат і витрат з доставки.
г) Незадоволена потреба обходиться магазину в 5000 грн.

Визначте найкращу стратегію розміщення замовлень з наступних:


1) замовляти по 10 машин в одній партії при точці замовлення в 8 або менше.
2) замовляти по 20 машин при точці замовлення від 10 і нижче.
Для визначення найкращої стратегії, порахуємо виручку для кожного випадку з
урахуванням витрат та прибутку.

Результат розміщення 1 стратегії:


Як бачимо всього вдалось заробити за 20 днів 66000 грн.

Результат розміщення 2 стратегії:

Як бачимо при використанні 2 політики не тільки не змогли нічого заробити, так


ще зазнали втрат в розмірі 9000. Через те що попит на цей товар дуже малий, і
він не встигає окупити себе.

Завдання 3
Лістинг коду для 1 та 2 завдань:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace MSSA_LAB2
{
public partial class Form1 : Form
{
Random rand = new Random();
int[] massiv = new int[20];
int[] mass = new int[20];
int N, quantity_goods;
int Reserves = 10;
int Placed_orders;
int Received_orders;
Class1 class1 = new Class1();
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)


{
N = Convert.ToInt32(textBox1.Text);
quantity_goods = Convert.ToInt32(textBox2.Text);
listBox1.Items.Clear();
listBox2.Items.Clear();
listBox3.Items.Clear();
listBox4.Items.Clear();
listBox5.Items.Clear();
listBox6.Items.Clear();
listBox7.Items.Clear();
listBox8.Items.Clear();
listBox9.Items.Clear();
listBox10.Items.Clear();
listBox11.Items.Clear();
massiv = class1.Rand_Znach();
mass = class1.Znach(Reserves);
for (int i = 0; i < 20; i++)
{
listBox1.Items.Add(i+1+".");
listBox2.Items.Add(massiv[i]);
listBox3.Items.Add(mass[i]);
listBox6.Items.Add(class1.Reserv());
Placed_orders = class1.PlacedOrders(i, N, quantity_goods);
listBox4.Items.Add(Placed_orders);
Received_orders = class1.ReceivedOrders(i);
listBox5.Items.Add(Received_orders);
listBox8.Items.Add(class1.Deficit(i));
listBox7.Items.Add(class1.SoldOut(i));
listBox9.Items.Add(class1.Receipts(i));
listBox10.Items.Add(class1.SpendingDueShortages());
listBox11.Items.Add(class1.ClosingLevel());
}
textBox3.Text = Convert.ToString(class1.Profit());
textBox4.Text = Convert.ToString(class1.Demand());
textBox5.Text = Convert.ToString(class1.ProbabilityDeficit());
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MSSA_LAB2
{
class Class1
{
Random rand = new Random();
int[] massiv = new int[20];
int[] mass = new int[20];
int b, c, Sum;
double def;
int quantity_goods;
int Reserves;
int[] Placed_orders = new int[20];
int[] Received_orders = new int[20];
public int[] Rand_Znach()
{
Reserves = 10;
Sum = 0;
def = 0;
for (int i = 0; i < 20; i++)
{
massiv[i] = rand.Next(0, 99);
}
return massiv;
}
public int Reserv()
{
return Reserves;
}
public int[] Znach(int Reserves)
{
for (int i = 0; i < 20; i++)
{
if (massiv[i] < 10)
mass[i] = 0;
else if (massiv[i] < 16)
{
mass[i] = 1;
}
else if (massiv[i] < 70)
{
mass[i] = 2;
}
else if (massiv[i] < 90)
{
mass[i] = 3;
}
else if (massiv[i] < 95)
{
mass[i] = 4;
}
else
{
mass[i] = 5;
}
}
return mass;
}
public int PlacedOrders(int i, int N, int quantity_goods)
{
this.quantity_goods = quantity_goods;
if (i >= 3 && Placed_orders[i-1] == 0 && Placed_orders[i - 2] == 0 &&
Placed_orders[i - 3] == 0)
{
if (this.Reserves <= N)
{
Placed_orders[i] = quantity_goods;
}
}
else
Placed_orders[i] = 0;
return Placed_orders[i];
}
public int ReceivedOrders(int i)
{
if (i < 3)
{
Received_orders[i] = 0;
}
else if (i >= 3)
{
if (Placed_orders[i - 3] == quantity_goods)
{
Received_orders[i] = quantity_goods;
this.Reserves += quantity_goods;
}
}
return Received_orders[i];
}
public int SoldOut(int i)
{
if(this.Reserves >= mass[i])
{
this.Reserves -= mass[i];
b = mass[i];
}
else
{
b = this.Reserves;
this.Reserves-= this.Reserves;
}
return b;

}
public int Deficit(int i)
{

if(Reserves < mass[i])


{
c = Reserves - mass[i];
def++;
}
else
{
c = 0;
}
return c;
}
public int Receipts(int i)
{
int sum = 0;
if (Received_orders[i] == 0)
sum = b * 9000;
else
sum = (b * 9000) - (Received_orders[i] * 5500) - (Received_orders[i] * 1400)
- (-c * 5000);
Sum += sum;
return sum;
}
public int SpendingDueShortages()
{
int d = -c * 5000;
return d;
}
public int ClosingLevel()
{
return Reserves;
}
public int Profit()
{
return Sum;
}
public double Demand()
{
double t = 0;
for(int i = 0; i < 20;i++)
{
t += mass[i];
}
t /= 20;
return t;
}
public double ProbabilityDeficit()
{
return def / 20;
}
}

Результати роботи програми:


Для 1 завдання:
Для 2 завдання:

Висновок. На цій лабораторній роботі було використано імітаційну модель


організаційного управління. Також було порівняно декілька стратегій
розміщення замовлень. Через, що можна зробити висновок чим більшу кількість
товарів було замовлено тим менше становить прибуток, хоч і ймовірність
виникнення дефіциту менша.

You might also like