Departamento de Sistemas de Informação
- Introdução
- Tarefa A - Aconselhamento para compra de uma refeição
- Tarefa B - Aconselhamento de trajeto para entrega de uma refeição
- Ferramentas
- Licença
- Contactos
- Reconhecimentos
- Referências
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.
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.
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.
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.
python app.py
npx localtunnel --port 5000
Send a WhatsApp message to Your sandbox WhatsApp number with the correct Sandbox join code
git clone https://github.com/nonvegan/trabalho-sbc.git
pip install flask pyswip twilio python-dotenv
TWILIO_USER=twiliouser
TWILIO_TOKEN=twiliotoken
TWILIO_PHONE=whatsapp:+123456789
PHONE=whatsapp:+351123456789
- 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.
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.
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
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)).
git clone https://github.com/nonvegan/trabalho-sbc.git
serve webapp -l 80
- Select the running mode( 1 or 2 deliveries)
- Select the searching mode
- Click search
Distributed under the MIT License. See LICENSE
for more information.
- Pedro Magalhães
- Álvaro Ferreira
- André Gomes
- José Carvalho
- 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.