О2_CP_SAT_МенеджерОграничений.КонечныйАвтомат
Устанавливает ограничение конечного автомата: активные переходы должны позволять пройти из начального состояния в одно из допустимых конечных состояний. Вызывается через Модель.Ограничения().КонечныйАвтомат(...).
Синтаксис
Модель.Ограничения().КонечныйАвтомат(
НачальноеСостояние,
КонечныеСостояния,
ВозможныеПереходы,
АктивныеПереходы,
Условия
)
Параметры
- НачальноеСостояние — Число — номер начального состояния. Должен быть целым числом.
- КонечныеСостояния — Массив из Число — номера допустимых конечных состояний. Должны быть целыми числами.
- ВозможныеПереходы — Массив из ФиксированнаяСтруктура — массив объектов
ПереходСостояния, определяющих разрешённые переходы между состояниями (см. ПереходСостояния). - АктивныеПереходы — Массив из ФиксированнаяСтруктура — массив линейных выражений вида
ax + b; значения этих выражений являются номерами задействованных переходов на каждом шаге автомата. - Условия — ФиксированнаяСтруктура, Массив, Неопределено — условие применения ограничения (см. Обзор).
Возвращаемое значение
- ОбработкаОбъект.О2_CP_SAT_МенеджерОграничений — текущий менеджер ограничений.
Пример
// Автомат с тремя состояниями: 0 (начальное), 1, 2 (конечное)
П01 = Ограничения.ПереходСостояния(0, 1, 1); // из 0 в 1, номер 1
П12 = Ограничения.ПереходСостояния(1, 2, 2); // из 1 в 2, номер 2
П02 = Ограничения.ПереходСостояния(0, 2, 3); // из 0 в 2, номер 3
Ш1 = Модель.ПеременнаяДиапазона(1, 3, "Ш1");
Ш2 = Модель.ПеременнаяДиапазона(1, 3, "Ш2");
Ограничения.КонечныйАвтомат(
0,
О2.Утилиты().Массив(2),
О2.Утилиты().Массив(П01, П12, П02),
О2.Утилиты().Массив(Ш1, Ш2)
);