\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{лабораторной}{2}{Логическое программирование в ограничениях}{Представление знаний в информационных системах}{}{Лычков И.И.} \newpage \thispagestyle{empty} \tableofcontents \newpage \pagestyle{fancy} \section{Цель} Цель работы – исследовать возможности языка логического программирования Пролог для анализа ситуаций. \section{Задание} 11 предметов с весами [48, 30, 19, 36, 36, 27, 42, 42, 36, 24, 30] кг соответственно необходимо разложить по корзинам с ограничением по суммарному весу в одной корзине не более 100 кг. В предположении о том, что в наличии имеется достаточно корзин для размещения всех предметов, определите наименьшее количество корзин, которое удовлетворяет указанным требованиям. \textbf{Подсказка:} Для перебора значений количества N используемых корзин в диапазоне StartN..StopN используйте предикат \code{between(StartN, StopN, N)}. \textbf{Правильное решение:} Минимально нужно 4 корзины. Раскладка предметов по корзинам: \begin{lstlisting}[language=Prolog] [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1]. [0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0]. [0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0]. [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0]. \end{lstlisting} \section{Выполнение работы} Результат работы программы представлен на снимке экрана рис. \hrf{pic:result}. \begin{lstlisting}[language=Prolog,style=CCodeStyle] :- use_module(library(clpfd)). mylength(Length, List):- length(List, Length). scalar(List, L):- scalar_product(List, L, #=<, 100). uberSum(Column):- sum(Column, #=, 1). buckets(AllBuckets) :- Items = [48,30,19,36,36,27,42,42,36,24,30], between(1, 11, Count), length(AllBuckets, Count), maplist(mylength(11), AllBuckets), maplist(scalar(Items), AllBuckets), append(AllBuckets, V), V ins 0..1, transpose(AllBuckets, Column), maplist(uberSum(), Column), label(V). \end{lstlisting} \begin{figure}[h] \centering \includegraphics[height=4cm]{1.png} \caption{Результат выполнения программы} \label{pic:result} \end{figure} \end{document}