2Kek: Вот программка на языке
CLIPS frame_v1_3.clp batch.txt data.dat Файл batch.txt использовать так: откройте свойства файла ClipsWin.exe и добавьте в командную строку "batch.txt". Тогда при каждом старте Клипса будет выполняться этот бат файл. Этот файл как и frame.clp и data.dat должны лежать в каталоге где находится исполняемый файл CLIPS.
В нем в первой строке (load* "frame.clp") - загрузка файла программы. Если убрать звездочку, то будет выводиться доп. информация по загрузке.
(reset) эагрузка всех дефолтных конструкций в рабочую память.
;(facts) Если раскомментировать эту строку то можно увидеть какие факты существуют в системе при ее старте.
;(watch rules) это раскомментировать если нужно отлаживать правила. Тогда FIRE будет означать какое правивло от каких фактов сработало.
;(watch facts) Аналогично - отслеживание появления и удаление фактов
(run) - запуск программы на исполнение
frame_v1_3.clp нужно преименовать во frame.clp
Файл data.dat содержит в каждой строке номер кадра, частоту, амплитуду. Разные кадры отделены друг от друга пустой строкой.
Программа стоит пирамиду фактов совпадений пар частота-амплитуда. На нижнем уровне будут находиться все одиночные совпадения пар кадров, на следующем уровне - двойные т.е. те кадры, в которых будут найдены две одинаковые пары частота - амплитуда. При дальнейшей работе программы она может найти в фвктах этого уровня тройные совпадения и построит новый уровень. И т.д.
Факт level после выполнения программы содержит число, которое сообщает о максимальном количестве совпадений в одной или более парах кадров.
Я не тестировал и не оптимизировал программу на большом количестве исходных данных.
Если кому-то будет интересно и ему не хватит моих комментариев в коде программы, поясню здесь подробности работы программы.
Я запускал версию CLIPS для Linux. Возможно, что могут возникнуть проблемы с русскими буквами в CLIPS для Windows.