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}
|
||
|