{"action":"closed","issue":{"url":"https://api.github.com/repos/aurusov/rdo-xtext/issues/66","labels_url":"https://api.github.com/repos/aurusov/rdo-xtext/issues/66/labels{/name}","comments_url":"https://api.github.com/repos/aurusov/rdo-xtext/issues/66/comments","events_url":"https://api.github.com/repos/aurusov/rdo-xtext/issues/66/events","html_url":"https://github.com/aurusov/rdo-xtext/issues/66","id":92729366,"number":66,"title":"Ошибка запука модели big_std.rdo","user":{"login":"aurusov","id":5585202,"avatar_url":"https://avatars.githubusercontent.com/u/5585202?v=3","gravatar_id":"","url":"https://api.github.com/users/aurusov","html_url":"https://github.com/aurusov","followers_url":"https://api.github.com/users/aurusov/followers","following_url":"https://api.github.com/users/aurusov/following{/other_user}","gists_url":"https://api.github.com/users/aurusov/gists{/gist_id}","starred_url":"https://api.github.com/users/aurusov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aurusov/subscriptions","organizations_url":"https://api.github.com/users/aurusov/orgs","repos_url":"https://api.github.com/users/aurusov/repos","events_url":"https://api.github.com/users/aurusov/events{/privacy}","received_events_url":"https://api.github.com/users/aurusov/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-07-02T20:36:30Z","updated_at":"2015-07-02T21:00:36Z","closed_at":"2015-07-02T21:00:36Z","body":"```\r\nenum Тип_клиента {Тип1, Тип2}\r\nenum Состояние_клиента {Пришел, Начал_стрижку}\r\nenum Состояние_парикмахера {Свободен, Занят}\r\n\r\ntype Парикмахерские {\r\n\tint количество_в_очереди;\r\n}\r\n\r\ntype Клиенты {\r\n\tТип_клиента тип;\r\n\tСостояние_клиента состояние;\r\n}\r\n\r\ntype Парикмахеры {\r\n\tСостояние_парикмахера состояние_парикмахера = Состояние_парикмахера.Свободен;\r\n\tint количество_обслуженных;\r\n\tint длительность_min;\r\n\tint длительность_max;\r\n\tТип_клиента тип_клиента;\r\n}\r\n\r\nresource Парикмахерская = Парикмахерские.create(0);\r\nresource Парикмахер_1 = Парикмахеры.create(*, 0, 20, 40, Тип_клиента.Тип1);\r\nresource Парикмахер_2 = Парикмахеры.create(*, 0, 25, 70, Тип_клиента.Тип2);\r\nresource Парикмахер_3 = Парикмахеры.create(*, 0, 30, 60, Тип_клиента.Тип2);\r\n\r\n\r\nevent Событие_прихода_клиента() {\r\n\tКлиенты.create(Случайный_тип_клиента.next(), Состояние_клиента.Пришел);\r\n\tСобытие_прихода_клиента.plan(currentTime + Интервал_прихода.next());\r\n\tПарикмахерская.количество_в_очереди++;\t\r\n}\r\n\r\noperation Образец_обслуживания_клиента() {\r\n\trelevant _Парикмахерская = Парикмахерская.select(_Парикмахерская.количество_в_очереди > 0);\r\n\trelevant _Клиент = Клиенты.select(_Клиент.состояние == Состояние_клиента.Пришел);\r\n\trelevant _Парикмахер = Парикмахеры.select(_Парикмахер.состояние_парикмахера == Состояние_парикмахера.Свободен\r\n\t\t\tand _Парикмахер.тип_клиента == _Клиент.тип).withMin(_Парикмахер.количество_обслуженных);\r\n\r\n\tset duration() {\r\n\t\treturn Длительность_обслуживания.next(_Парикмахер.длительность_min, _Парикмахер.длительность_max);\r\n\t}\r\n\r\n\tset begin() {\r\n\t\t_Парикмахерская.количество_в_очереди--;\r\n\t\t_Клиент.состояние = Состояние_клиента.Начал_стрижку;\r\n\t\t_Парикмахер.состояние_парикмахера = Состояние_парикмахера.Занят;\r\n\t}\r\n\r\n\tset end() {\r\n\t\t_Парикмахер.состояние_парикмахера = Состояние_парикмахера.Свободен;\r\n\t\t_Парикмахер.количество_обслуженных++;\r\n\t\t_Клиент.erase();\r\n\t}\r\n}\r\n\r\ndpt model {\r\n\tactivity Обслуживание_клиента checks Образец_обслуживания_клиента();\r\n}\r\n\r\nsequence Интервал_прихода = double legacy exponential(123456789, 1/30.0);\r\nsequence Длительность_обслуживания = double uniform(123456789);\r\nsequence Случайный_тип_клиента = Тип_клиента histogram(123456789) {\r\n\tТип_клиента.Тип1 1.0\r\n\tТип_клиента.Тип2 5.0\r\n}\r\n\r\nset init() {\r\n\tСобытие_прихода_клиента.plan(currentTime + Интервал_прихода.next());\r\n}\r\n\r\nset terminateCondition() {\r\n\treturn currentTime >= 360;\r\n}\r\n\r\nresult Занятость_парикмахера_1 = watchState(Парикмахер_1.состояние_парикмахера == Состояние_парикмахера.Занят);\r\nresult Занятость_парикмахера_2 = watchState(Парикмахер_2.состояние_парикмахера == Состояние_парикмахера.Занят);\r\nresult Занятость_парикмахера_3 = watchState(Парикмахер_3.состояние_парикмахера == Состояние_парикмахера.Занят);\r\nresult Обслужено_парикмахером_1 = getValue(Парикмахер_1.количество_обслуженных);\r\nresult Обслужено_парикмахером_2 = getValue(Парикмахер_2.количество_обслуженных);\r\nresult Обслужено_парикмахером_3 = getValue(Парикмахер_3.количество_обслуженных);\r\n```"}}