На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> GPSS , Асы GPSS, подскажите, как сделать правильно?
    Имеются следующие исходные данные:
    1. В порт каждый день приходит в среднем 4 судна. Половина из них в зависимости от объема груза направляется к причалам с портовым краном, а другая половина к причалам без крана. После разгрузки/погрузки, которая длится в среднем пол дня, около 60% судов покидают порт, а остальные направляются на небольшой ремонт в док. Ремонт в среднем занимает один день. После ремонта судно направляется на погрузку к причалу.
    2. Определить аналитическим путем вероятность того, что в сети не будет ни одной заявки.

    Я написала программу на GPSS, вроде все проходит, ошибок нет, но результат получается совершенно не такой, как в расчетной части. Подскажите, пожалуйста, что я сделала не так?
    Заранее благодарна.
    Листинг:

    SIMULATE
    RAB1 STORAGE 2
    RAB2 STORAGE 2
    RAB3 STORAGE 3
    GENERATE 6*FN$XPDIS
    TRANSFER .5,,PRI2
    PRI1 QUEUE LIN1
    SEIZE RAB1
    DEPART LIN1
    ADVANCE 12*FN$XPDIS
    RELEASE RAB1
    TRANSFER .4,,DOK
    TERMINATE
    *
    PRI2 QUEUE LIN2
    SEIZE RAB2
    ADVANCE 12*FN$XPDIS
    RELEASE RAB2
    TRANSFER .4,,DOK
    TERMINATE
    *
    DOK QUEUE LIN3
    SEIZE RAB3
    ADVANCE 24*FN$XPDIS
    RELEASE RAB3
    TRANSFER .5,,PRI2
    TRANSFER ,PRI1
    *
    GENERATE 24*100000
    TERMINATE 1
    START 1
    END
      Знаешь, если ты используешь storage, т.е. многоканальные устройства, то для их занятия/освобождения неободимо использовать enter/leave. А можно вопрос, что это за необъявленная функция XPDIS?

      Добавлено
      Судя по исходным данным искомая вероятность будет около 0.
      А вот программа:

      prichal_kran storage 2;причалы с краном
      prichal storage 2;причалы без крана
      dok storage 3;доки
      generate (Exponential(1,0,1/4));генерируем в среднем 4 судна в день
      met4 transfer .5,,met1;половину на причал с краном,остальных на причал без крана
      queue line1;очередь перед причалом с краном
      enter prichal_kran;занимаем причал с краном
      depart line1;освобождаем место в очереди
      advance (Exponential(1,0,1/2));разгрузка/погрузка в среднем пол дня
      leave prichal_kran;освобождаем причал с краном
      transfer ,met2;переходим к выбору дальнейшего пути
      met1 queue line2;осередь перед причалом без крана
      enter prichal;занимаем причал без крана
      depart line2;освобождаем место в очереди
      advance (Exponential(1,0,1/2));разгрузка/погрузка в среднем полдня
      leave prichal;освобождаем причал
      met2 transfer .6,,met3;60 % отправляем на выход из порта,остальные в док
      queue line3;занимаем место в очереди перед доком
      enter dok;занимаем сам док
      depart line3;освобождаем место в очереди
      advance (Exponential(1,0,1));ремонт длится в среднем день
      leave dok;освобождаем док
      transfer ,met4;переходим к выбору причала с краном или без
      met3 terminate 1;
      start 1000;

      Всё так, только есть один не разрешённый вопрос:что делать с судами, которые уже были в доках, затем на причале, а потом попали опять в доки. Это бред, их нужно отсеивать.Для этого нужно завести параметр и присваивать ему что-то после доков, а перед отправкой на доки проверять на это значение, если судно уже было в доках, значит его полюбому на выход.Ну и сегмент таймера доработай сама,пожалуйста.
        Огромное спасибо за помощь.
        Признаться меня саму тоже смущает, как будет идти распределение
        судов по признаку отремонтированности...
        Попробую что-нибудь изобразить соответствующее... :D
        1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0270 ]   [ 14 queries used ]   [ Generated: 12.07.25, 14:51 GMT ]