Действие перехода и действие условия в потоке состояний - PullRequest
0 голосов
/ 16 ноября 2018

На двух приведенных ниже диаграммах состояний первая выполняет действие, которое выполняется при переходе из StateA в StateD, т.е./ {Г = 5};а второй должен выполнить действие {z = 5};Я понимаю, что это переходное действие, но я не могу понять, в чем разница между двумя переходами

enter image description here

enter image description here

Ответы [ 2 ]

0 голосов
/ 24 февраля 2019

«Действие перехода» /z=5; равно «действию входа» состояния назначения entry: z=5;. Это может выглядеть как «элегантное» решение, если у вас есть несколько состояний назначения, но вы хотите установить значение на основе предыдущего состояния и множества дополнительных логик (не в вашем примере).

В обзорах моделей наши люди потратили слишком много времени на то, чтобы выяснить, что именно произошло на графиках, используя «переходные действия». Сгенерированный код также было трудно читать. В наших руководствах по моделированию для всей компании мы явно запрещали использовать «переходные действия», потому что они затрудняют просмотр моделей.

«Действия по условию» {z=5;} в сочетании с «действиями по состоянию» entry: z=5; достаточны для любой логики, которую нам нужно было реализовать.

Было бы хорошо, если бы MathWorks прекратил семантику переходного действия в будущих выпусках.

0 голосов
/ 17 ноября 2018

См. Ссылку, указанную @ am304 для получения конкретной информации, но вкратце,

  • в вашем первом изображении у вас есть Transition Action, который выполняется, когда происходит переход (и после любых действий выхода из состояния - если у вас были какие-либо действия для State A),

  • на вашем втором изображении у вас есть Condition Action,который выполняется, когда любое условие, связанное с переходом, определяется как истинное.У вас нет никаких явных условий (то есть ничего подобного e1[cond1]{z = 5}), поэтому условие считается истинным, когда происходит какое-либо событие.Это будет выполнено, даже если переход не выполнен (то есть он зависит только от условия.) Это означает, что это произойдет за до любого действия по выходу из состояния (если у вас было какое-либо дляState A.)

Учитывая вышеизложенное, (в вашем конкретном случае (т.е. без действий выхода для State A и без условий перехода) эти два результата дадут одинаковый результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...