Skip to content

Trabalho Prático - Sistemas Baseados em Conhecimento - MIEGSI 2020/2021 - Nota Final: 20

License

Notifications You must be signed in to change notification settings

nonvegan/trabalho-sbc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Universidade do Minho Escola de Engenharia
Departamento de Sistemas de Informação

Projeto Prático SBC - MIEGSI 2020/2021


Índice de conteúdos

Introdução

No âmbito da unidade curricular de Sistemas Baseados em Conhecimento, foi-nos proposto a conceção de um SBC implementado na linguagem Prolog, estando a mesma dividida em 2 tarefas com 2 partes cada uma, tendo por base o conceito de food delivery, tão em voga no último ano decorrente da situação pandémica que vivenciamos.

Tarefa A - Aconselhamento para compra de uma refeição

Dentro do conceito de fooddelivery, take away & drive-in, pretende-se elaborar um SBC para aconselhar sobre a escolha e compra de uma refeição(com entrega em casa ou take away). Através de uma interface desenvolvida em python com auxílio do interpretador de Prolog Pyswip, é possível fazer pesquisas na nossa base de conhecimento Prolog usando o WhatsApp.

Parte 1 - Aquisição manual de conhecimento

Nesta fase foram usadas técnicas de aquisição de conhecimento manual (Pesquisa e entrevistas) para a conceção de regras de produção manuais.

Parte 2 - Aquisição automática de conhecimento

Nesta segunda fase foi desenvolvido e partilhado um formulário usando o Google Forms. A respostas foram depois descarregas para o ficheiro pratos.csv. Foi depois escrita uma pequena script em R que gerou regras de produção de forma automática, que pudessem ser usadas pelo Prolog.

Pré-requisitos

Getting started

Quick-start

Start your server

python app.py

Expose your server to the world

npx localtunnel --port 5000

Configure your Twilio Sandbox

Twilio Sandbox

Join the Twilio WhatsApp Sandbox

Send a WhatsApp message to Your sandbox WhatsApp number with the correct Sandbox join code

Join the Twilio WhatsApp Sandbox

Installation

Add SWI-Prolog to the PATH environment variable

Clone the repo

git clone https://github.com/nonvegan/trabalho-sbc.git

Install all the dependecies

pip install flask pyswip twilio python-dotenv

Configure your .env file

TWILIO_USER=twiliouser
TWILIO_TOKEN=twiliotoken
TWILIO_PHONE=whatsapp:+123456789
PHONE=whatsapp:+351123456789

Usage

  • Type a message with the keyword !dish.
  • Answer the quick survey.
  • Wait for your dish suggestion.
  • Message either !manual or !automatica to switch the type of the knowledge base.
  • Type !dish to start over.

Bot

Tarefa B - Aconselhamento de trajeto para entrega de uma refeição

Desenvolver um SBC para um estafeta que usa uma scooter como meio de transporte que trabalha para um sistema de entrega de um restaurante. O SBC deve aconselhar que encomendas o estafeta deve pegar no restaurante e qual o caminho a seguir para proceder às entregas. Optamos por desenvolver uma webapp com o auxílio do interpretador Prolog em JavaScript Tau prolog como interface para o nosso SBC.

Parte 1 - Resolução via Procura

Nesta parte foram desenvolvidas as funcionalidades de procura para o objetivo 1 (a scooter só pode levar uma encomenda de cada vez) e 2 (a scooter pode levar uma ou duas encomendas de cada vez), podendo o utilizador escolher depth-first, iterative-deepening e breath-first como métodos de procura. Publicamos o nosso SBC na web através da plataforma Netlify no endereço https://projeto-sbc-g53-parte2-miegsi-2021.netlify.app

Parte 2 - Otimização do lucro, tempo ou ambos

Nesta parte foram desenvolvidas as funcionalidades de optimização usando o método de hillclimbing para o objetivo A (maximizar o lucro), B (minimizar o tempo do percurso) e C (maximizar 0.8lucro+0.2(20-tempo)).

Pré-requisitos

Getting started

Quick-start

Clone the repo

git clone https://github.com/nonvegan/trabalho-sbc.git

Serve the static files

serve webapp -l 80

Usage

  • Select the running mode( 1 or 2 deliveries)
  • Select the searching mode
  • Click search

Procura

Ferramentas

Licença

Distributed under the MIT License. See LICENSE for more information.

Equipa

  • Pedro Magalhães
  • Álvaro Ferreira
  • André Gomes
  • José Carvalho

Reconhecimentos

Referências

  • Cortez, P. (2018). Exercícios Resolvidos em Prolog sobre Sistemas Baseados em Conhecimento: Regras de Produção, Extração de Conhecimento, Procura e Otimização. Teaching Report, University of Minho, Guimarães, Portugal.
  • Cortez, P. (2015). A tutorial on the rminer R package for data mining tasks. Teaching Report, University of Minho, Guimarães, Portugal.
  • Bratko, I. (2012). Programming in Prolog for Artificial intelligence. Pearson Education, 4thedition, Harlow, England.
  • Wielemaker, J., De Koninck, L., Fruehwirth, T., Triska, M., & Uneson, M. (2014). SWI Prolog Reference Manual 7.1.