Моделирование работы библиографической системы

Автор: Пользователь скрыл имя, 01 Мая 2012 в 21:21, курсовая работа

Описание работы

В данной курсовой работе моделируется работы библиографической системы в течение 8 ч. Для определения эффективности смоделированной системы необходимо определить длину очереди, коэффициенты загрузки ЭВМ, вероятность отказа обслуживания. При необходимости представить рекомендации к улучшению работы системы.

Содержание

Введение ………………………………………………………………..……………….5
1. Постановка задачи………………………………………………………..………5
2. Выявление основных особенностей системы…………………………..……6
2.1 Структурная схема системы………………………….……....….…6
2.2 Q-схема системы ……………………….……………………………..…6
2.3 Состояния системы …………………….……………………….…...…7
2.4 Характер функционирования системы……………………..….…....7
2.5 Потоки поступления заявок в систему….……………………..….….7
2.6 Число требований, поступающих в один момент…………….……..7
2.7 Характер взаимодействия смежных требований в потоке….…...7
2.8 Характер поведения требований в системе…………………...……..7
2.9 Дисциплина обслуживания…………………….………….……….……..7
2.10 Время обслуживания требований…………………………..…...…..7
2.11 Число каналов обслуживания…………………………….........……...8
2.12 Число фаз обслуживания…………………….……………...........…...8
2.13 Однородность требований, поступающих на обслуживание....8
2.14 Связь выходных и входных потоков…………………….……….…...8
2.15 Время моделирования…………………….………………………….…...8
2.16 Выходной поток…………………….…………………….………….…....8
3. Алгоритм имитационной модели…………………………………………..…..….9
4. Программа на языке высокого уровня PHP…………………………….…….…10
5. Среда имитационного моделирования GPSS World…………………….…..….31
6. Планирование эксперимента…………………………………………………..…...33
6.1 Полный факторный эксперимент……………………………………....33
6.2 Обработка математической модели………………………….…………34
Заключение…………………………………………………………………..38
Список литературы………………………………………………………….39

Работа содержит 1 файл

Курсовой пхп моделирование.docx

— 174.11 Кб (Скачать)

          </div></td>

    </tr>

    <tr>

          <td>

          <label for="opk1">Обращение  к поиску информации  на втором пк</label>

          <td><div class="input-container">

                                        <input name="opk1" id="opk1" type="text" value="<? if (isset($_GET['opk1'])) echo $_GET['opk1']; else echo "3";  ?>" />

                </div></td>

          <td>

          <label for="opk10">+/-<label>

          </td>

          <td><div class="input-container">

                                              <input name="opk10" id="opk10" type="text" value="<? if (isset($_GET['opk10'])) echo $_GET['opk10']; else echo "1";  ?>" />

          </div></td>

    </tr>

    <tr>

    <td>&nbsp;</td>

      <td colspan="3"><input type="submit" class="greenButton" value="Начать" />

      </td>

      </div>

    </table>

    </form> 

    <table cellpading="0" cellspacing="0">

    <tr style="font-weight:bold; background-color:yellow;">

                      <td>Обращение  к системе</td>

                      <td>1</td>

                       <td> 2</td>

                       <td> 3</td>

                       <td> 4</td>

                       <td> 5</td>

                       <td> 6</td>

                       <td> 7</td>

                       <td> 8</td>

                       <td> 9</td>

                        <td> 10</td>

                       <td>Всего  времени</td>

                        <td>Ушло</td>

    </tr>

    <?php 

    if (isset($_GET['obk'])) $obk=$_GET['obk']; else $obk=5;

    if (isset($_GET['obk0'])) $obk0=$_GET['obk0']; else $obk0=2; 

    if (isset($_GET['opk'])) $opk=$_GET['opk']; else $opk=6;

    if (isset($_GET['opk0'])) $opk0=$_GET['opk0']; else $opk0=4; 

    if (isset($_GET['opk1'])) $opk1=$_GET['opk1']; else $opk1=3;

    if (isset($_GET['opk10'])) $opk10=$_GET['opk10']; else $opk10=1; 

    function interval($osn,$dop) {

          $int[0]=$osn-$dop;

          $int[1]=$osn+$dop;

          return $int;

    } 

    $terminal=interval($obk,$obk0);

    $pk1=interval($opk,$opk0);

    $pk2=interval($opk1,$opk10); 

    $end_model_time=0;

    $ushel=0;

    $prishell=0;

    $prishell2=0;

    while ($end_model_time<=480) {

           $arr=rand($terminal[0], $terminal[1]); // периоды времени между людьми

           

           $end_model_time=$end_model_time+$arr;

           if ($end_model_time<=480)

                {

                echo "<tr><td class='main'>".$arr."</td>";

                $c=0; //!!! счетчик людей  в очереди

                $time1=rand($pk1[0],$pk1[1])+rand(1,3)+1; // время задержки работы первой ЭВМ

                $time2=rand($pk2[0],$pk2[1])+rand(1,3)+1; // время задержки работы второй ЭВМ

                $ver=rand(1,10); // вероятность обращения  к 1 или 2 ЭВМ

                if ($ver<8) // обращение к 1-му  ЭВМ

                      {

                      $ochered[]=$time1;

                      $komp[1]=$komp[1]+$arr;

                      $prishell++;

                      } // добавить новый  элемент массива    

                else //вторая ЭВМ   

                      {

                      $ochered[]=$time2;

                      $komp[2]=$komp[2]+$arr;

                      $prishell2++;

                      } // добавить новый  элемент массива 
     

                      while(($arr>=0)and(isset($ochered[$c])))

                      {

                            $arr=$arr-$ochered[$c]; // вычитать из arr сначала  первый элемент  очереди затем  второй и т д  пока не выйдет из массива

                            $vstalvochered++;

                            if ($arr>=0)

                                  $c++;

                      } 

                      for ($i=0;$i<10;$i++)

                            {

                            if (isset($ochered[$i]))

                                  echo "<td>".$ochered[$i]."</td>";

                            else

                                  echo "<td >-</td>";

                            } 

                      // Считаем среднее  число в очереди

                      $cc=count($ochered);

                      if ($cc==11) $cc=10;

                      $sr_ochered[]=$cc;

                       

                      while($c>0)

                            {

                                  array_shift($ochered); // удалить с первого из очереди кол-во элементов равное $c

                                  $c--;

                            } 

                      if ($arr<0)

                            {

                            $ochered[0]=abs($arr);

                            } 
     

                if (count($ochered)>10) //проверка  сколько людей  в очереди

                {

                      $terminal2[]=array_pop($ochered); // удалить последнего в массиве

                      $ushel++;

                } 
     
     

                echo "<td>$end_model_time</td><td>$ushel</td></tr>";

                }

    } 

    $sr_dlina=array_sum($sr_ochered)/count($sr_ochered); // средняя длина очерели

    $sr_koef_okrugl=round($srednee/$end_model_time*100); // средний коэфициент очереди округленный

    $sr_koef=$srednee/$end_model_time*100; // средний коэфициент очереди

    $koef_pk1=$komp[1]/$end_model_time*100; // средний коэфициент ПК1

    $koef_pk2=$komp[2]/$end_model_time*100; // средний коэфициент ПК2

    rsort($sr_ochered);

    $max_element=$sr_ochered[0]; // Максимальное число людей в очереди

    $max_prishell=$prishell+$prishell2; 

    ?>

    </table> 

    <div id="ltable">

    <table>

    <tr>

    <td> Средняя длина очереди</td><td><?=round($sr_dlina,3) ?></td>

    </tr>

    <tr>

    <td> Максимальная длина  очереди</td><td><?=$max_element ?></td>

    </tr>

    <tr>

    <td> Коэфицент загрузки  ПК1</td><td><?=round($koef_pk1,3) ?></td>

    </tr>

    <tr>

    <td> Коэфицент загрузки  ПК2</td><td><?=round($koef_pk2,3) ?></td>

    </tr>

    <tr>

    <td> Людей пришло к пк1</td><td><?=round($prishell) ?></td>

    </tr>

    <tr>

    <td> Людей пришло к терминалу</td><td><?=round($max_prishell) ?></td>

    </tr>

    <tr>

    <td colspan=2><a href="javascript:void(0);" onclick="$('#table_show').toggle('low');" class="greenButton">Включить в работу второй терминал</a></td>

    </tr>

    </table> 

    <table id="table_show" style="display:none" cellpading="0" cellspacing="0" width="35%">

    <tr style="font-weight:bold; background-color:yellow;">

                      <td>Обращение  к системе</td>

                      <td>1</td>

                       <td> 2</td>

                       <td> 3</td>

                       <td> 4</td>

                       <td> 5</td>

                       <td> 6</td>

                       <td> 7</td>

                       <td> 8</td>

                       <td> 9</td>

                        <td> 10</td>

                       <td>Всего  времени</td>

                       <td>Снова  ушли</td>

    </tr>

    <?

    if (isset($terminal2))

    {

    $ushel2=0;

    $end_model_time2=0;

    $num=-1;

    $kol=count($terminal2);

    while (($end_model_time2<=480)and($num<=$kol)) {  

           $arr2=rand($terminal[0], $terminal[1]); // периоды времени между людьми

           $end_model_time2=$end_model_time2+$arr2;

           $num++;

           

           if (($end_model_time2<=480)and($num<=$kol))

                {

                //echo $terminal2[$num].", ";

                echo "<tr><td class='main'>".$arr2."</td>";

                $c=0; //!!! счетчик людей в очереди 

                if ($num<count($terminal2))

                      {

                      $time1=$terminal2[$num]; // время задержки работы первой ЭВМ

                      $time2=$time1; // время задержки  работы второй  ЭВМ

Информация о работе Моделирование работы библиографической системы