Перейти к основному содержимому

О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)
);

См. также