127 lines
4.8 KiB
TeX
127 lines
4.8 KiB
TeX
|
\documentclass[a4paper,fontsize=14bp]{article}
|
|||
|
|
|||
|
\input{../common-preamble}
|
|||
|
\input{../fancy-listings-preamble}
|
|||
|
\input{../bmstu-preamble}
|
|||
|
\setcounter{secnumdepth}{0}
|
|||
|
\numerationTop
|
|||
|
|
|||
|
\begin{document}
|
|||
|
\thispagestyle{empty}
|
|||
|
\makeBMSTUHeader
|
|||
|
|
|||
|
% номер, тема, предмет, ?а, кто
|
|||
|
\makeReportTitle{лабораторной}{№ 1}{Анализ данных системы видеонаблюдения в Прологе}{Представление знаний в информационных системах}{}{Лычков И.И.}
|
|||
|
\newpage
|
|||
|
\thispagestyle{empty}
|
|||
|
\tableofcontents
|
|||
|
\newpage
|
|||
|
\pagestyle{fancy}
|
|||
|
\section{Цель}
|
|||
|
Цель работы – исследовать возможности языка логического программирования Пролог для анализа ситуаций.
|
|||
|
\section{Задание}
|
|||
|
\textbf{Задание к лабораторной работе} - Для заданной физической среды предложить предикаты для описания положения и действий людей.
|
|||
|
|
|||
|
% придумать описать предикаты
|
|||
|
% придумать и описать факты
|
|||
|
% можно использовать вижл пролог 5.0 или использовать онлайн отладчик SWI Prolog
|
|||
|
|
|||
|
\textbf{Индивидуальное задание по варианту:} Предложить предикаты для описания поведения и действий людей на станции метро, описать их в разделе PREDICATES (придумайте не менее 10 предикатов). Создать предложения (в разделе CLAUSES) для определения:
|
|||
|
\begin{enumerate}
|
|||
|
\item Списка людей, задержавшихся на станции дольше указанного времени.
|
|||
|
\item Количества людей, пребывавших на станции в указанный промежуток времени.
|
|||
|
\item Людей, которые находились в центре зала более трёх раз.
|
|||
|
\end{enumerate}
|
|||
|
|
|||
|
\section{Выполнение работы}
|
|||
|
Для моделирования поведения были придуманы следующие предикаты:
|
|||
|
\begin{itemize}
|
|||
|
\item человек зашёл на станцию
|
|||
|
\item человек покинул станцию
|
|||
|
\item человек прошёл центр станции
|
|||
|
\end{itemize}
|
|||
|
|
|||
|
\begin{lstlisting}[language=Prolog, frame=single]
|
|||
|
enteredStation(ivan, 70).
|
|||
|
enteredStation(petr, 10).
|
|||
|
enteredStation(fedor, 15).
|
|||
|
enteredStation(max, 15).
|
|||
|
enteredStation(serg, 15).
|
|||
|
enteredStation(anna, 10).
|
|||
|
enteredStation(olga, 25).
|
|||
|
enteredStation(irina, 50).
|
|||
|
|
|||
|
leftStation(ivan, 100).
|
|||
|
leftStation(petr, 150).
|
|||
|
leftStation(fedor, 25).
|
|||
|
leftStation(max, 100).
|
|||
|
leftStation(serg, 30).
|
|||
|
leftStation(anna, 50).
|
|||
|
leftStation(olga, 35).
|
|||
|
leftStation(irina, 70).
|
|||
|
|
|||
|
passedCenter(max).
|
|||
|
passedCenter(ivan).
|
|||
|
passedCenter(petr).
|
|||
|
passedCenter(max).
|
|||
|
passedCenter(max).
|
|||
|
passedCenter(anna).
|
|||
|
passedCenter(anna).
|
|||
|
passedCenter(olga).
|
|||
|
passedCenter(olga).
|
|||
|
passedCenter(olga).
|
|||
|
|
|||
|
person(max).
|
|||
|
person(ivan).
|
|||
|
person(petr).
|
|||
|
person(anna).
|
|||
|
person(olga).
|
|||
|
|
|||
|
passedCenter2(X,1):- passedCenter(X).
|
|||
|
|
|||
|
getDelay(P,D):-
|
|||
|
enteredStation(P,T1),
|
|||
|
leftStation(P,T2),
|
|||
|
D1 is T2-T1,
|
|||
|
D < D1.
|
|||
|
|
|||
|
getPersons(P,From,To):-
|
|||
|
enteredStation(P,F),
|
|||
|
leftStation(P,T),
|
|||
|
F >= From,
|
|||
|
T =< To.
|
|||
|
|
|||
|
getAmount(P, From, To, A):-
|
|||
|
findall(P, getPersons(P, From, To), Persons),
|
|||
|
length(Persons,A).
|
|||
|
|
|||
|
passedCenterMoreThan(P, X):-
|
|||
|
person(P),
|
|||
|
findall(Y, passedCenter2(P,Y), Persons),
|
|||
|
sum_list(Persons,A),
|
|||
|
A >= X.
|
|||
|
\end{lstlisting}
|
|||
|
|
|||
|
Результаты выполнения программы представлены на рис. \hrf{pic:results}.
|
|||
|
\begin{figure}[h]
|
|||
|
\centering
|
|||
|
\includegraphics[width=12cm]{01rpt-result.png}
|
|||
|
\caption{Снимок экрана с результатами выполнения программы}
|
|||
|
\label{pic:results}
|
|||
|
\end{figure}
|
|||
|
|
|||
|
|
|||
|
\section{Контрольные вопросы}
|
|||
|
Что такое предикат?
|
|||
|
Из каких разделов состоит программа на Прологе?
|
|||
|
Что такое факты и правила?
|
|||
|
В чем заключается унификация и конкретизация при доказательстве целевой формулы?
|
|||
|
Что называется решением для программы на Прологе?
|
|||
|
Как строится дерево логического вывода при поиске решений?
|
|||
|
Объясните механизм отката при поиске решений.
|
|||
|
Как реализовать на Прологе подсчет количества фактов для определенного предиката?
|
|||
|
|
|||
|
|
|||
|
\end{document}
|
|||
|
|