
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.21] |
![]() |
|
Страницы: (54) « Первая ... 20 21 [22] 23 24 ... 53 54 ( Перейти к последнему сообщению ) |
Сообщ.
#316
,
|
|
|
Цитата Eugen @ QUEUE QueueContanerLenta ENTER ContanerLenta DEPART QueueContanerLenta TRANSFER BOTH,,met2 SEISE lenta1 ADVANCE xxx RELEASE lenta1 TRANSFER ,metEnd met2 TRANSFER BOTH,,met3 SEIZE lenta2 // и т.п. metEnd LEAVE ContanerLenta у такого кода есть один недостаток. основная нагрузка пойдет на первую ленту, чуть меньшая на вторую.. и на последнюю - минимальная нагрузка. что бы распределить: Цитата lenta storage 4 generate 1 QUEUE LNB TEST L (F1+F2+F3+F4),4 ASSIGN LEN,RN1 POVT ASSIGN LEN,((P$LEN@4)+1) TEST E F*LEN,0,POVT ENTER lenta SEIZE LEN DEPART LNB ADVANCE 4 RELEASE LEN LEAVE lenta TERMINATE 1 Вот как то так =) |
Сообщ.
#317
,
|
|
|
мне ни холодно ни жарко от этих недостатков, это ж лучше чем ничего
![]() Цитата TEMENb @ POVT ASSIGN LEN,((P$LEN@4)+1) TEST E F*LEN,0,POVT заменяестя на ![]() ![]() SELECT MIN LEN,1,4,,F Добавлено ЗерГуд! Цитата TEMENb @ ASSIGN LEN,RN1 POVT ASSIGN LEN,((P$LEN@4)+1) TEST xxx POVT |
Сообщ.
#318
,
|
|
|
Ребята помогите решить задачу, сессия уже почти на шее, очень нужна помощь !
Условие: К 3м рабочим поступают детали для обработки. Интервал поступления деталей 4-6 мин. Если первый занят, то деталь идет ко второму, если второй занят, то деталь идет к третьему. При этом 3й должен обрабатывать все имеющиеся детали. Время обработки: первый: 9-11 мин, второй 11-15 мин, третий 7-9. Вот мой примерный вариант решения. Можете помочь над поиском ошибок код программы: GENERATE 5,1 QUEUE detali QUEUE srednee_vremya_obrabotki TRANSFER Both,rabochiy1,perexod rabochiy1 SEIZE rab1 DEPART detali ADVANCE 10,1 DEPART srednee_vremya_obrabotki RELEASE rab1 TRANSFER ,Next perexod TRANSFER Both,rabochiy2,rabochiy3 rabochiy2 SEIZE rab2 DEPART detali ADVANCE 13,2 DEPART srednee_vremya_obrabotki RELEASE rab2 TRANSFER ,Next rabochiy3 SEIZE rab3 DEPART detali ADVANCE 8,1 DEPART srednee_vremya_obrabotki RELEASE rab3 TRANSFER ,Next Next SAVEVALUE Ave_Queue,QT$detali TERMINATE 1 |
Сообщ.
#319
,
|
|
|
Цитата Eugen @ Цитата TEMENb @ POVT ASSIGN LEN,((P$LEN@4)+1) TEST E F*LEN,0,POVT заменяестя на ![]() ![]() SELECT MIN LEN,1,4,,F не, не заменяется. в этом вся соль. селект выберет первый по списку. А моя конструкция выберет случайный свободный |
Сообщ.
#320
,
|
|
|
Eugen,TEMENb спасибо за помощь. А если багаж при разделении на ленты идет на разные рейсы по каждой ленте?
|
Сообщ.
#321
,
|
|
|
Arrrgh, можно поставить
Цитата REIS FUNCTION P$LEN,E4 1,MET1/2,MET2/3,MET3/4,MET4 ........... release P$len leave lenta TRANSFER ,(FN$REIS) Скрытый текст Ну это не то что б высший пилотаж, но несколько необычно Метки указывают каждая на соответствующий рейс. Причем не забудьте поставить эти метки в тексте, иначе вылетит ошибка. вовторых, можно использовать тесты Цитата ........... release P$len leave lenta TEST NE P$LEN,1,MET1 TEST NE P$LEN,2,MET2 TEST NE P$LEN,3,MET3 TEST NE P$LEN,4,MET4 ............ Скрытый текст такая реализацция имеет уже более привычную форму, хоть места занимает больше, а работает точно так же ну и третий, на мой взгляд самый приемлемый вариант - это выразить рейсы такими же числами Цитата ........... release P$len leave lenta ASSIGN REIS,P$LEN SEIZE P$REIS ............ |
Сообщ.
#322
,
|
|
|
Цитата TEMENb @ не, не заменяется. в этом вся соль. селект выберет первый по списку. Точно выберет первое свободное устройство ![]() |
Сообщ.
#323
,
|
|
|
Помогите несчастной блондинке
![]() tbl1 table M1,500,500,10 generate 10,3,,500 queue qpc1 seize pc1 depart qpc1 advance 2 advance 18,2 release pc1 transfer .5,kp1,out kp1 seize kp advance 3 release kp tabulate tbl1 savevalue 1,c1 transfer ,kom2 terminate 1 generate 600,300 funavail kp,re,kp1 advance 20,5 favail kp terminate kom2 queue qpc2 seize pc2 depart qpc2 advance 2 advance 18,2 release pc2 out terminate 1 |
Сообщ.
#324
,
|
|
|
Привет! Адекватно ли мое решение поставленной задаче?
![]() Задача: На 2-х канальный телефон скорой помощи в среднем 1 раз в 100 секунд с равной вероятностью звонят старики, взрослые и дети. Время разговора с ними соответственно 180, 150 и 200 секунд. Определить распределение времени ожидания, при условии, что если в очереди находятся заявки с разным временем обслуживания, то первой обслуживается заявка с меньшим временем. Решение: telefon storage 2 wosrast function rn1,d3 0.333,1/0.666,2/1,3 wremya function p$type,l3 1,180/2,150/3,210 generate (exponential(1,50,50)) assign type,fn$wosrast gate snf telefon,wait seg1 enter telefon advance fn$wremya leave telefon unlink que,seg1,1 terminate 1 wait link que,type Спасибо! |
Сообщ.
#325
,
|
|
|
tigreg, впринципе похоже на правильное, и очень даже симпатично использованы фукнции (респект))), только лень разбираться зачем вы использовали пользовательские списки.
почему вам не сделать еще одну функцию, которая будет попросту задавать приоритеть транзакта? ну а дальше очередь и мку. и никакхи СП ненадо. |
Сообщ.
#326
,
|
|
|
![]() Еще одна задача (условия почти те же): На 2-х канальный телефон скорой помощи в среднем 1 раз в 100 секунд с равной вероятностью звонят старики, взрослые и дети. Время разговора с ними соответственно 180, 150 и 200 секунд. Определить распределение времени ожидания, при условии, что если в очереди появляется заявка с меньшим временем обработки, чем обслуживаемая, выполнить прерывание. Мое решение: telefon storage 2 generate (exponential(1,50,150)) assign 1,210 transfer ,seg1 generate (exponential(1,50,150)) priority 1 assign 1,180 transfer ,seg1 generate (exponential(1,50,150)) priority 2 assign 1,150 transfer ,seg1 seg1 queue line enter telefon depart line preempt telefon,pr,seg1,1 advance p1 return telefon leave telefon terminate 1 |
Сообщ.
#327
,
|
|
|
Цитата Blond @ Работает только 1 раз.Не работает ссылка на kp1. После выполнения funavail kp,re,kp1 прерванный транзакт направляется к метке kp1. При этом он продолжает занимать устройство kp. В строке kp1 seize kp транзакт снова встает в очередь на занятие устройства kp(не освободив его). - deadlock напиши так: ![]() ![]() transfer .5,kp1,out KP2 RELEASE kp kp1 seize kp ... generate 600,300 funavail kp,re,KP2 |
Сообщ.
#328
,
|
|
|
HELP!
Формирование размера пакета ASSIGN 1,(Gamma(1,0,769.23,2)) Необходимо сделать разбиение по след. принципу: Пакеты имеют переменный размер в знаках и при передаче разбиваются на фрагменты: пакеты размером до 1000 знаков – на фрагменты по 200; от 1000 до 1800 – по 300; сверх 1800 – по 500. Последний фрагмент разбиения содержит остаточное количество знаков. |
Сообщ.
#329
,
|
|
|
Подскажите пожалуйста (немогу пересчитать исходные данные) Задача: На станцию технического обслуживания автомобилей (СТО) поступают в смену (8 часов) 50±10 машин. На станции работают 4 бригады. Каждая бригада обслуживает за смену 10±3 автомобиля. На стоянке перед СТО могут ожидать обслуживания 5 машин.
Смоделировать работу СТО по обслуживанию 100 машин. Определить коэф. загрузки бригад и вероятность отказа в обслуживании. Я перевел исходные данные в необходимую для написания программы форму, и получил, что на СТО машины поступают через каждые 10±2 мин, а время обслуживания одной машины равно ПРИМЕРНО 52±16 мин. (корректно ли здесь округлять?) Вопрос, нужно ли пересчитывать исходные данные в форму "кол-во машин/минуту", т.е. через какой промежуток времени поступает машина на СТО, и сколько времени уходит на ремонт одной машины? Или можно как то решить не пересчитывая исходные данные? Если всетаки нужно пересчитывать, помогите пожалуста правильно это сделать. Чему, к примеру, будет равно среднее время обработки? Считал двумя разными способами и получил 48 мин и 52,6 мин, что правильно непойму, а это очень важно т.к. нужно еще составить мат. модель (привести формулы), и все рассчитать в ручную используя эти формулы. вот код который у меня получился: simulate stoyanka storage 5 10 generate 10,2,,100 20 gate SF stoyanka,nast 30 terminate 1 40 nast enter stoyanka 50 transfer ALL,b1,b4,5 100 b1 seize br1 110 leave stoyanka 120 advance 52,16 130 release br1 140 terminate 1 200 b2 seize br2 210 leave stoyanka 220 advance 52,16 230 release br2 240 terminate 1 300 b3 seize br3 310 leave stoyanka 320 advance 52,16 330 release br3 340 terminate 1 400 b4 seize br4 410 leave stoyanka 420 advance 52,16 430 release br4 440 terminate 1 start 100 Заранее благодарю! |
Сообщ.
#330
,
|
|
|
Цитата Figaro-serg @ Вопрос, нужно ли пересчитывать исходные данные в форму "кол-во машин/минуту", т.е. через какой промежуток времени поступает машина на СТО, и сколько времени уходит на ремонт одной машины? Или можно как то решить не пересчитывая исходные данные? Если всетаки нужно пересчитывать, помогите пожалуста правильно это сделать. Специально для этих целей существует Единица модельного времени. 8 часов ничто иное как 60 минут. так что сложно назвать это пересчетом. Это те же самые интервалы времени. Вовторых, перевести часы в минуты будет правильней, чем моделировать в часах, НО gpss/w такая штука, что и в часах и в минутах выдаст вам одинаковые результаты (великолепно работает с дробным временем) Цитата Figaro-serg @ вот округлять или не округлять - это уже ваше личное дело. я бы не округлял. На самом деле, если вас смущает округление - вовсе не обязательно переводить часы именно в минуты.. вы можете перевести часы в санти часы ) почему нет? одна единица моельного времени равна одной сотой часа! и проблема с округлением исчезнет сама собой. главное потом все правильно разрулить преподу равно ПРИМЕРНО 52±16 мин ![]() Зато числа сразу получаться красивые. и что б получить итог в часах - надо будет всего лишь открнуть два младших разряда. Цитата Figaro-serg @ Чему, к примеру, будет равно среднее время обработки? учи мат часть. В отчете в таблице FACILITY колонка AVT.TIME. |