Программа моделирования в ограничениях
Иногда с помощью системы CLP(R) удается найти весьма изящные решения задач числового моделирования. Такие средства являются особенно подходящими, если моделируемая система может рассматриваться как состоящая из большого количества компонентов и соединений между этими компонентами. К таким системам относятся, например, электрические схемы, характерными компонентами которых являются резисторы и конденсаторы.
С компонентами связаны параметры и переменные, имеющие реальное значение, такие как электрические сопротивления, напряжения и токи. Подобная организация модели хорошо сочетается со стилем программирования в ограничениях. Законы физики налагают ограничения на переменные, связанные с компонентами. Соединения иежду компонентами налагают дополнительные ограничения. Поэтому для решения задач числового моделирования с помощью системы CLP(R) для семейства систем, таких как электрические сети, необходимо определить законы, распространяющиеся на компоненты тех типов, которые используются в данной проблемной области, а также законы, регламентирующие соединения компонентов. Эти законы задаются как ограничения на переменные. Затем для моделирования конкретной системы из такого семейства необходимо определить конкретные компоненты и соединения в системе. В результате этого интерпретатор CLP налагает ограничения на всю систему и осуществляет моделирование по принципу удовлетворения ограничений. Безусловно, такой подход является эффективным, если типы ограничений, относящиеся к моделируемой проблемной области, могут эффективно обрабатываться данной конкретной системой CLP.
В данном разделе этот подход применяется для моделирования электрических схем, состоящих из резисторов, диодов и источников питания. Отношения между напряжениями и токами в таких схемах являются кусочно-линейными. Учитывая то, что применяемая система CLP(R) эффективно обрабатывает линейные равенства и неравенства, она является подходящим инструментальным средством для моделирования подобных схем.
На рис. 14.3 показаны рассматриваемые компоненты и соединения, а также соответствующие ограничения, налагаемые этими компонентами и соединениями. Такие элементы могут быть определены в программе CLP(R) следующим образом. Резистор
i |
имеет некоторое сопротивление R и две клеммы, Т1 и Т2. Переменными, связанными с каждой клеммой, являются электрический потенциал V и ток I (направленный в резистор). Поэтому клемма Т представляет собой пару ;V,I), Определяемое законами физики поведение резистора можно описать с помощью следующего предиката:
resistor( (VI,II), (V2,I2), В ) :-{ II = -12, V1-V2 = I1*R }.
Поведение источника питания можно определить аналогичным образом, как показано в программе, приведенной в листинге 14.3. В этом листинге дано также определение диода. А что касается соединений, то лучше всего определить общий случай, в котором соединено любое количество клемм, следующим образом: conn! [ Terminal!, Tenrinal2, ...])
Глава 14. Логическое программирование в ограничениях
&)
II