Схема работы лифта - кто хочет потренироваться?(Прочитано 43747 раз)
Виктор, ну зачем же сразу говорить, где можно взять решение?! Я хотел, чтобы народ сам подумал (
Я не помню точно, но кажется, в книге были в основном диаграммы классов и взаимодействия. В первом издании на русском -- даже без UML-нотации. Книгу вспомнил потому, что там предлагалось строить управление по сигналам о прибытии кабин на этажи. Для этого были придуманы спец. датчики. Это один из ответов на вопрос, как узнать, мимо какого этажа какая кабина движется.



Решил прислушаться к критике и немного исправил диаграмму. Первая диаграмма это попытка нарисовать ДБО
lift.docx сценарии ВИ сгенерированные в VP, поэтому там не всё хорошо.
Проблема с ВИ "Переместиться на другой этаж" в том, что его длинный сценарий зависит от многих условий. То есть, с момента, когда пассажир нажимает на кнопку вызова лифта, до момента, когда он окажется на нужном ему этаже, может произойти очень много всего (при тех условиях задачи, которые нам даны).
Один из путей выхода -- бить сценарии (и ВИ) на небольшие относительно независимые части. Пассажир жмёт на вызов -- система принимает вызов и делает лишь тот минимум, что необходим. Лифт подъезжает к какому-либо этажу -- система по сигналу датчика решает, следует ли ему остановиться и принять/выпустить пассажиров или продолжить движение. И т. п.



То есть, с момента, когда пассажир нажимает на кнопку вызова лифта, до момента, когда он окажется на нужном ему этаже, может произойти очень много всего (при тех условиях задачи, которые нам даны).
Так в моих ВИ есть же секция - Расширения. Их я и хочу выявить мозговым штурмом форумчан.

Например, после нажатия оба лифта застряли (наверно не важно по каким причинам). Система должна сообщить что лифты не приедут.




Так в моих ВИ есть же секция - Расширения. Их я и хочу выявить мозговым штурмом форумчан.
Как, например, представить расширением, что за время поездки первого пассажира в лифте можно подобрать попутного пассажира, который доедет до своего этажа раньше, чем первый пассажир.
P. S. Мне кажется, что применение ВИ к этой задаче не совсем удачно.
« Последнее редактирование: 02 Февраля 2012, 18:47:56 от Виктор Малышко »



Хотелось бы уточнить.

1.  1-й лифт (1Л) на первом, 2Л - на пятом. Вызов лифта с третьего на спуск.
      Реакция системы:
       а) Едет случайный лифт.
       б) Едет лифт, которому тоже надо спускаться.
       в) Едет лифт, которому нужно подниматься.
       г) Едут оба лифта.
       д) Оба лифта стоят  :)

2.   1Л на четвертом, 2Л - на первом. Вызов лифта с третьего на спуск.
       Реакция системы:
       а) Едет случайный лифт.
       б) Едет лифт, которому тоже надо опускаться.
       в) Едет лифт, которому нужно подниматься.
       г) Едут оба лифта.
       д) Едет ближайший лифт.

3.   1Л на четвертом, 2Л - на первом. Вызов лифта со второго  на спуск.
       Реакция системы:
       а) Едет случайный лифт.
       б) Едет лифт, которому тоже надо опускаться.
       в) Едет лифт, которому нужно подниматься.
       г) Едут оба лифта.
       д) Едет ближайший лифт.

4.   1-й лифт (1Л) на первом, 2Л - на пятом. Вызов лифта с третьего на спуск и на подъем.
      Реакция системы:
       а) Едет случайный лифт.
       б) Едут оба лифта.
 
5.   1-й лифт (1Л) на четвертом, 2Л - на пятом. Вызов лифта с третьего на спуск и на подъем.
      Реакция системы:
       а) Едет случайный лифт.
       б) Едут оба лифта.

6.   1Л на первом, 2Л - занят. Вызов лифта с пятого. В момент движения 1Л, освобождается 2Л и происходит вызов лифта с третьего на подъем.
      Реакция системы:     
      а) 1Л подбирает пассажира на третьем этаже и продолжает движение вверх.
      б) 2Л спускается на третий этаж.

7.   1Л на первом, 2Л - занят. Вызов лифта с пятого. В момент движения 1Л, освобождается 2Л и происходит вызов лифта с третьего на спуск.
      Реакция системы:     
      а) 1Л подбирает пассажира на третьем этаже и продолжает движение вверх.
      б) 1Л подбирает пассажира на третьем этаже и начинает движение вниз.
      в) 2Л спускается на третий этаж.

8.   1Л на первом, 2Л - занят. Вызов лифта с пятого. В момент движения 1Л происходит вызов лифта с третьего на спуск.
      Реакция системы:     
      а) 1Л подбирает пассажира на третьем этаже и продолжает движение вверх.
      б) 1Л подбирает пассажира на третьем этаже и начинает движение вниз.
      в) 1Л проезжает третий этаж без остановки.
« Последнее редактирование: 02 Февраля 2012, 20:58:26 от Ilgr »




1. По моему однозначно "б" - потратиться меньше энергии на спуск.
А если ближе нижний лифт, то однозначно нужно подтягивать тот который быстрее приедет. (думаю надо рассчитывать время)
остальное проще нарисовать на состояниях и активности.



P. S. Мне кажется, что применение ВИ к этой задаче не совсем удачно.
Согласен с Виктором. Если помнить, что есть ВИ, то неизбежно все рассуждения сведутся к использованию лифта для перемещения по этажам. Да побочно можно указать вариации: если лифт остановился - нажми кнопку звонок, и т.п.
Однако мы ведь рассуждаем о системе управления лифтами, а не сам лифт. Сам лифт - это объект управления.
Задачу имеет смысл описывать через список возможных событий, а систему управления как конечный автомат. Лифт тоже можно рассматривать как автомат. Тогда вся система (управления и лифты) и будут сложноподчиненным автоматом.



Ну в этом плане плане я решил немного отвлечься от темы топика, причина следующая.

В книжке Дейтела есть задачка про моделирование работы лифта на C++. Чтобы написать такую программку мне хотелось собрать некоторые требования. А тут захожу на форум и вы лифт обсуждаете :) Вот и решил не создавать новую тему, а прямо тут описать некоторые требования и обсудить.

Неужели эти требования не повлияют на автомат и на диаграмму активности главного цикла программы?



По поводу вопроса от Ilgr
Цитировать
Хотелось бы уточнить.
Это вопросы или  Из них надо выбрать 1 верный?

Теперь по задаче. 2 лифта, 1 механизм управления.

Как мне видится - получается есть контроллер , который на основании данных о состоянии лифта (-ов) "принимает решение", точнее действует по заданному алгоритму.

Теперь состояния (еще надо понять, что учитывать?)
1. Лифт 1
- едет вверх
- едет вниз
- стоит

2. Лифт 2
- едет вверх
- едет вниз
- стоит

3. Назовем - расширения:
- когда едет вверх вызвали лифт
- когда едет вниз вызвали лифт


«Сделай первый шаг, и ты поймешь, что не все так страшно.»
-- L. A. Seneca --



Да это вопросы.


1.  При такой комбинации событий -1-й лифт (1Л) на первом, 2Л - на пятом. Вызов лифта с третьего на спуск.
      Что произойдет? - Реакция системы:
       а) Едет случайный лифт.
или
       б) Едет лифт, которому тоже надо спускаться.
или
       в) Едет лифт, которому нужно подниматься.
или
       г) Едут оба лифта.
или
       д) Оба лифта стоят

Это собственно для меня не определенные моменты в поведении системы. Вариантов, конечно, значительно больше, но остальные вроде как, понятны.
« Последнее редактирование: 03 Февраля 2012, 14:30:28 от Ilgr »



ответ (б.)
Не важно какой ты сейчас - большой или маленький, важно - как ты растешь.
Б.А.С.



А на остальные 7 вопросов?  :)



2. - б
3. - б
4. - б
5. - б
6.-8. - что такое лифт занят?
Не важно какой ты сейчас - большой или маленький, важно - как ты растешь.
Б.А.С.



6.-8. - что такое лифт занят?
Любитель выпить достигает своей цели :D

а вот ещё такой вопрос. Сэкономим ли мы хоть сколько нибудь энергии, если будем ночью опускать лифт на первый этаж, чтоб он не висел на верхних этажах?
« Последнее редактирование: 03 Февраля 2012, 22:39:56 от RuZzz »



Уточняю вопрос.

6.   1Л на первом, 2Л - не доступен для реализации вызова (например произошла выгрузка пассажиров, но двери пока не закрыты). Вызов лифта с пятого. В момент движения 1Л, освобождается 2Л - становится доступен для реализации вызова и происходит вызов лифта с третьего на подъем.
      Реакция системы:     
      а) 1Л подбирает пассажира на третьем этаже и продолжает движение вверх.
      б) 2Л спускается на третий этаж.

7.   1Л на первом, 2Л - не доступен для реализации вызова (например произошла выгрузка пассажиров, но двери пока не закрыты). Вызов лифта с пятого. В момент движения 1Л, освобождается 2Л - становится доступен для реализации вызова и происходит вызов лифта с третьего на спуск.
      Реакция системы:     
      а) 1Л подбирает пассажира на третьем этаже и продолжает движение вверх.
      б) 1Л подбирает пассажира на третьем этаже и начинает движение вниз.
      в) 2Л спускается на третий этаж.

8.   1Л на первом, 2Л - не доступен для реализации вызова (например произошла выгрузка пассажиров, но двери пока не закрыты). Вызов лифта с пятого. В момент движения 1Л и не доступости для реализации вызова 2Л происходит вызов лифта с третьего на спуск.
      Реакция системы:     
      а) 1Л подбирает пассажира на третьем этаже и продолжает движение вверх.
      б) 1Л подбирает пассажира на третьем этаже и начинает движение вниз.
      в) 1Л проезжает третий этаж без остановки.




 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19