ΠΠΎΠ΄Π°ΡΠΎΠΊ Π. ΠΡΠΎΠ΅ΠΊΡΡΠ²Π°Π½Π½Ρ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΌΠ°ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ»ΡΠ³ΠΎΠ²ΡΠ²Π°Π½Π½Ρ
AverageEmptySectionOne += ((Convert.ToDouble (this.emptySectionOne) * 100) / (Convert.ToDouble (timeHours) * 60)); Int sectionOne, sectionTwo, assembledDetails, emptySectionOne, emptySectionTwo, emptyConveyor, emptyError; //. If (busy == false && sectionOne > needGoodsToCompilation && sectionTwo > needGoodsToCompilation) emptyError++; EmptySectionOne = 0; emptySectionTwo = 0; emptyConveyor = 0… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΠΎΠ΄Π°ΡΠΎΠΊ Π. ΠΡΠΎΠ΅ΠΊΡΡΠ²Π°Π½Π½Ρ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΌΠ°ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ»ΡΠ³ΠΎΠ²ΡΠ²Π°Π½Π½Ρ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
ΠΠ°Π»ΡΠ½ΠΎΠΊ 2 ΠΠ²ΡΡ GPSS World.
ΠΠΎΠ΄Π°ΡΠΎΠΊ Π
ΠΠ°Π»ΡΠ½ΠΎΠΊ 3 ΠΡΠ°Π³ΡΠ°ΠΌΠ° ΠΊΠ»Π°ΡΡΠ².
ΠΠ°Π»ΡΠ½ΠΎΠΊ 4 ΠΡΠ°Π³ΡΠ°ΠΌΠ° ΠΏΠΎΡΠ»ΡΠ΄ΠΎΠ²Π½ΠΎΡΡΡ.
ΠΠ°Π»ΡΠ½ΠΎΠΊ 5 ΠΡΠ°Π³ΡΠ°ΠΌΠ° Π²Π°ΡΡΠ°Π½ΡΡΠ².
ΠΠ°Π»ΡΠ½ΠΎΠΊ 6 ΠΡΠ°Π³ΡΠ°ΠΌΠ° ΡΡΠ°Π½ΡΠ².
ΠΠ°Π»ΡΠ½ΠΎΠΊ 7 ΠΡΠ°Π³ΡΠ°ΠΌΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡΠ².
ΠΠ°Π»ΡΠ½ΠΎΠΊ 8 ΠΡΠ°Π³ΡΠ°ΠΌΠ° ΡΠΎΠ·Π³ΠΎΡΡΠ°Π½Π½Ρ.
ΠΠΎΠ΄Π°ΡΠΎΠΊ Π
using System;
using System.Collections.Generic;
using System. Linq;
using System. Text;
using System.Threading.Tasks;
namespace ConsoleApplication1.
{.
class ClassConveyor.
{.
private.
int timeHours, needGoodsToCompilation; byte timeCompilation; //ΡΡΠ»ΠΎΠ²ΠΈΠ΅.
int sectionOne, sectionTwo, assembledDetails, emptySectionOne, emptySectionTwo, emptyConveyor, emptyError; //.
ClassProduct first = new ClassProduct (), second = new ClassProduct ();
//timeFirstStep = 5, timeSecondStep = 20, rangeFirstStep = 1, rangeSecondStep = 7.
public ClassConveyor () //ΠΊΠΎΠ½ΡΡΡΡΡΠΊΡΠΎΡ
{.
timeHours = 8;
timeCompilation = 10;
needGoodsToCompilation = 10;
}.
private void Compilation ().
{.
ClassProduct first = new ClassProduct (5, 5, 1);
ClassProduct second = new ClassProduct (20, 20, 7);
bool busy = false; //Π·Π°Π½ΡΡΠΎΡΡΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ°.
byte counterBusy=0; //ΡΡΠ΅ΡΡΠΈΠΊ Π·Π°Π½ΡΡΠΎΡΡΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ°.
assembledDetails = 0; //ΡΠΎΠ±ΡΠ°Π½Π½ΠΎ Π΄Π΅ΡΠ°Π»Π΅ΠΉ.
sectionOne = 0; sectionTwo = 0; //Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»Ρ ΠΈΠ·Π΄Π΅Π»ΠΈΠΉ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ±ΠΎΡΠΊΠΎΠΉ.
emptySectionOne = 0; emptySectionTwo = 0; emptyConveyor = 0; emptyError = 0; //ΡΡΠ΅ΡΡΠΈΠΊ ΠΏΡΠΎΡΡΠΎΡ.
int counterBusyFirst = first. TimeToSupply (), counterBusySecond = second. TimeToSupply ();//Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΡΡΠΏΠ»Π΅Π½ΠΈΡ ΠΈΠ·Π΄Π΅Π»ΠΈΠΉ 1ΠΈ2 ΡΠΈΠΏΠ°.
for (int i = 0; i < timeHours * 60; i++)//Π²ΡΠ΅ΠΌΡ.
{.
if (counterBusyFirst > 0)//ΠΏΠΎΡΡΡΠΏΠ°Π΅Ρ ΠΈΠ·Π΄Π΅Π»ΠΈΠΉ 1 ΡΠΈΠΏΠ°.
{.
counterBusyFirst—;
if (counterBusyFirst == 0).
{.
sectionOne += first. ProductGet ();
counterBusyFirst = first. TimeToSupply ();
}.
}.
if (counterBusySecond > 0)//ΠΏΠΎΡΡΡΠΏΠ°Π΅Ρ ΠΈΠ·Π΄Π΅Π»ΠΈΠΉ 2 ΡΠΈΠΏΠ°.
{.
counterBusySecond—;
if (counterBusySecond == 0).
{.
sectionTwo += second. ProductGet ();
counterBusySecond = second. TimeToSupply ();
}.
}.
if (sectionOne >= needGoodsToCompilation && sectionTwo >= needGoodsToCompilation && busy==false).
{.
busy = true; counterBusy = timeCompilation;
sectionOne -= needGoodsToCompilation;
sectionTwo -= needGoodsToCompilation;
}.
if (busy == false && sectionOne < needGoodsToCompilation) emptySectionOne++;
if (busy == false && sectionTwo < needGoodsToCompilation) emptySectionTwo++;
if (busy == false && sectionOne > needGoodsToCompilation && sectionTwo > needGoodsToCompilation) emptyError++;
if (busy == false) emptyConveyor++;
if (busy && counterBusy ≠ 0).
{.
counterBusy—;
if (counterBusy == 0).
{.
busy = false;
assembledDetails++;
}.
}.
}.
}.
private void Result (int x, double y, double a, double b).
{.
Console.Clear ();
Console.Write («ΠΡΠΎΠ±Π»Π΅Π½ΠΈΡ Π΄Π΅ΡΠ°Π»Π΅ΠΉ = «); Console. WriteLine (x);
Console.WriteLine («ΠiΠ΄ΡΠΎΡΠΎΠΊ ΠΏΡΠΎΡΡΠΎΡ ΠΊΠΎΠ½Π²Π΅ΡΡΠ° = {0:f3}», y," %");
Console.WriteLine («ΠiΠ΄ΡΠΎΡΠΎΠΊ ΠΏΡΠΎΡΡΠΎΡ ΠΊΠΎΠ½Π²Π΅ΡΡΠ° ΡΠ΅ΡΠ΅Π· ΡΠ΅ΠΊΡiΡ № 1 = {0:f3}», a," %");
Console.WriteLine («ΠiΠ΄ΡΠΎΡΠΎΠΊ ΠΏΡΠΎΡΡΠΎΡ ΠΊΠΎΠ½Π²Π΅ΡΡΠ° ΡΠ΅ΡΠ΅Π· ΡΠ΅ΠΊΡiΡ № 2 = {0:f3}», b," %");
}.
public void Analysis ().
{.
int averageAssembledDetails = 0, quantity = 10 000;
double averageEmptyConveyor = 0, averageEmptySectionOne = 0, averageEmptySectionTwo = 0;
for (int j = 0; j < quantity; j++).
{.
this.Compilation ();
averageAssembledDetails += this. assembledDetails;
averageEmptyConveyor += ((Convert.ToDouble (this.emptyConveyor)*100)/(Convert.ToDouble (timeHours)*60));
averageEmptySectionOne += ((Convert.ToDouble (this.emptySectionOne) * 100) / (Convert.ToDouble (timeHours) * 60));
averageEmptySectionTwo += ((Convert.ToDouble (this.emptySectionTwo) * 100) / (Convert.ToDouble (timeHours) * 60));
}.
averageAssembledDetails /= quantity;
averageEmptyConveyor /= quantity;
averageEmptySectionOne /= quantity;
averageEmptySectionTwo /= quantity;
Result (averageAssembledDetails, averageEmptyConveyor, averageEmptySectionOne, averageEmptySectionTwo);
}.
}.
class ClassProduct.
{.
private int product, timeStep, rangeTime;
public ClassProduct () { }.
public ClassProduct (int c, int t, int r).
{.
product = c;
timeStep = t;
rangeTime = r;
}.
public int TimeToSupply ().
{.
Random r= new Random ();
if (r.Next (2) == 0) return timeStep + r. Next (rangeTime + 1);
else return timeStep — r. Next (rangeTime + 1);
}.
public int ProductGet ().
{.
return product;
}.
}.
class Program.
{.
static void Main (string[] args).
{.
ClassConveyor x = new ClassConveyor ();
x.Analysis ();
Console.ReadKey ();
}.
}.
}.