UNIVERSIDADE REGIONAL DE BLUMENAU
CENTRO DE CIÊNCIAS EXATAS E NATURAIS
CURSO DE CIÊNCIAS DA COMPUTAÇÃO
(Bacharelado)
PROTÓTIPO DE UM SISTEMA ESPECIALISTA PARA
OTIMIZAÇÃO DE ESTOQUES PARA O COMÉRCIO
VAREJISTA DE CALÇADOS/VESTUÁRIO
TRABALHO DE CONCLUSÃO DE CURSO SUBMETIDO À UNIVERSIDADE
REGIONAL DE BLUMENAU PARA A OBTENÇÃO DOS CRÉDITOS NA
DISCIPLINA COM NOME EQUIVALENTE NO CURSO DE CIÊNCIAS DA
COMPUTAÇÃO — BACHARELADO
CARLOS HEITOR ROCHA HASS
BLUMENAU, JUNHO/2001
2001/1-12
PROTÓTIPO DE UM SISTEMA ESPECIALISTA PARA
OTIMIZAÇÃO DE ESTOQUES PARA O COMÉRCIO
VAREJISTA DE CALÇADOS/VESTUÁRIO
CARLOS HEITOR ROCHA HASS
ESTE TRABALHO DE CONCLUSÃO DE CURSO, FOI JULGADO ADEQUADO
PARA OBTENÇÃO DOS CRÉDITOS NA DISCIPLINA DE TRABALHO DE
CONCLUSÃO DE CURSO OBRIGATÓRIA PARA OBTENÇÃO DO TÍTULO DE:
BACHAREL EM CIÊNCIAS DA COMPUTAÇÃO
Prof. Roberto Heinzle — Orientador na FURB
Prof. José Roque Voltolini da Silva — Coordenador do TCC
BANCA EXAMINADORA
Prof. Roberto Heinzle
Prof. Marilda Maria de Souza
Prof. Marcel Hugo
ii
SUMÁRIO
LISTA DE FIGURAS ..............................................................................................................VI
RESUMO ............................................................................................................................... VII
ABSTRACT .......................................................................................................................... VIII
1 INTRODUÇÃO ..................................................................................................................... 1
1.1 OBJETIVOS DO TRABALHO .......................................................................................... 1
1.2 ESTRUTURA DO TRABALHO ........................................................................................ 2
2 SISTEMAS ESPECIALISTAS ............................................................................................. 3
2.1 CONCEITOS....................................................................................................................... 3
2.2 CARACTERÍSTICAS......................................................................................................... 4
2.3 COMPONENTES DE UM SISTEMA ESPECIALISTA ................................................... 4
2.3.1 BASE DE CONHECIMENTOS ....................................................................................... 5
2.3.2 MECANISMO DE APRENDIZAGEM E AQUISIÇÃO DO CONHECIMENTO ......... 5
2.3.3 MOTOR OU MÁQUINA DE INFERÊNCIA .................................................................. 6
2.3.4 SISTEMA DE CONSULTA ............................................................................................. 6
2.3.5 SISTEMA DE JUSTIFICAÇÃO ...................................................................................... 7
2.3.6 QUADRO NEGRO........................................................................................................... 7
2.4 REPRESENTAÇÃO DO CONHECIMENTO ................................................................... 8
2.4.1 LÓGICA DAS PREPOSIÇÕES E DOS PREDICADOS................................................. 8
2.4.2 REGRAS DE PRODUÇÃO.............................................................................................. 9
2.4.3 REDES SEMÂNTICAS ................................................................................................... 9
2.4.4 QUADROS OU FRAMES: ............................................................................................. 10
2.5 SISTEMAS BASEADOS EM REGRAS DE PRODUÇÃO ............................................ 11
2.5.1 FUNCIONAMENTO...................................................................................................... 11
iii
2.5.2 RACIOCÍNIO E ENCADEAMENTO ........................................................................... 11
2.5.2.1 ENCADEAMENTO PROGRESSIVO......................................................................... 11
2.5.2.2 ENCADEAMENTO REGRESSIVO ........................................................................... 12
2.6 FERRAMENTAS PARA DESENVOLVIMENTO ......................................................... 12
2.6.1 PROLOG......................................................................................................................... 12
2.6.2 LISP ................................................................................................................................ 13
2.6.3 “SHELL”......................................................................................................................... 13
3 A FERRAMENTA EXPERT SINTA SHELL .................................................................... 15
3.1 HISTÓRICO...................................................................................................................... 15
3.2 ARQUITETURA DE UM SISTEMA ESPECIALISTA NO EXPERT SINTA .............. 16
3.3 UTILIZANDO REGRAS DE PRODUÇÃO NO EXPERT SINTA SHELL ................... 17
3.4 O MÉTODO DE EXTRAÇÃO PROCEDURAL DE CONHECIMENTO DO EXPERT
SINTA SHELL.................................................................................................................. 17
3.4.1 EXEMPLO DE ENCADEAMENTO PARA TRÁS ...................................................... 18
3.5 VARIÁVEIS UNIVALORADAS E VARIÁVEIS MULTIVALORADAS .................... 20
3.6 FATORES DE CONFIANÇA........................................................................................... 20
4 O COMÉRCIO DE CALÇADOS/VESTUÁRIO................................................................ 22
4.1 A ESTRUTURA DO ESTOQUE...................................................................................... 22
4.1.1 MATERIAIS/CORES ..................................................................................................... 22
4.1.2 GRADES DE TAMANHOS........................................................................................... 22
4.1.3 MÉTODOS DE CONSTRUÇÃO DOS PEDIDOS DE COMPRA................................ 23
4.2 A DISTRIBUIÇÃO INICIAL ........................................................................................... 24
4.3 A ENCOMENDA.............................................................................................................. 25
4.4 OS REMANEJAMENTOS ............................................................................................... 26
4.5 A REPETIÇÃO DE COMPRA......................................................................................... 26
iv
4.6 A DISTRIBUIÇÃO DA REPETIÇÃO DE COMPRA..................................................... 26
4.7 A FINALIZAÇÃO DO ESTOQUE DE UM PRODUTO................................................. 27
5 O PROTÓTIPO.................................................................................................................... 28
5.1 OBJETIVOS...................................................................................................................... 28
5.2 O SISTEMA COMERCIAL ............................................................................................. 28
5.2.1.1 COMPRA DE PRODUTOS ......................................................................................... 28
5.2.1.2 TRANSFERÊNCIA DE PRODUTOS ......................................................................... 31
5.2.1.3 VENDA DE PRODUTOS............................................................................................ 33
5.2.2 MODELO ENTIDADE RELACIONAMENTO ............................................................ 34
5.3 O REMANEJAMENTO.................................................................................................... 34
5.3.1 REMANEJAMENTO ATRAVÉS DE ARRASTAR & SOLTAR ................................ 35
5.3.2 O REMANEJAMENTO AUTOMÁTICO ..................................................................... 37
5.4 AQUISIÇÃO DO CONHECIMENTO ............................................................................. 39
5.5 A RESOLUÇÃO DO PROBLEMA.................................................................................. 39
5.6 A INTEGRAÇÃO ............................................................................................................. 40
5.7 O SISTEMA ESPECIALISTA ......................................................................................... 40
5.8 A STORED PROCEDURE............................................................................................... 41
6 CONCLUSÕES E SUGESTÕES ........................................................................................ 43
6.1 CONCLUSÕES................................................................................................................. 43
6.2 LIMITAÇÕES................................................................................................................... 43
6.3 EXTENSÕES .................................................................................................................... 43
APÊNDICE 1 – STORED PROCEDURES............................................................................. 44
APÊNDICE 2 – REGRAS DA BASE DE CONHECIMENTOS ............................................ 48
REFERÊNCIAS BIBLIOGRÁFICAS ..................................................................................... 50
v
LISTA DE FIGURAS
Figura 1 - Componentes de um sistema especialista .................................................................. 4
Figura 2 - Representação do conhecimento com redes semânticas.......................................... 10
Figura 3 - Arquitetura de um sistema especialista no Expert SINTA ...................................... 16
Figura 4 - Gráfico dos tamanhos mais vendidos ...................................................................... 23
Figura 5 - DFD Compra de Produtos ....................................................................................... 30
Figura 6 - Entrada de produtos por compra.............................................................................. 30
Figura 7 - DFD Transferência de Produtos (Remanejamento)................................................. 32
Figura 8 - Transferência de produtos........................................................................................ 32
Figura 9 - Digitação de Orçamentos......................................................................................... 33
Figura 10 - Modelo Entidade Relacionamento......................................................................... 34
Figura 11 - DFD Remanejamento Manual ............................................................................... 35
Figura 12 - Tela do remanejador antes do remanejamento ...................................................... 36
Figura 13 - Tela do remanejador após o remanejamento ......................................................... 37
Figura 14 - DFD Remanejamento Automático......................................................................... 38
Figura 15 - DFD da Tarefa de Auto Remanejamento .............................................................. 38
Figura 16 - Solução do remanejador automático...................................................................... 39
vi
RESUMO
A finalidade deste trabalho de conclusão de curso é desenvolver um protótipo de um
sistema especialista para auxiliar o remanejamento de estoques para redes de lojas de
calçados/vestuário. As ferramentas utilizadas para a construção do sistema foram a ferramenta
Expert SINTA Shell, utilizada num modelo de representação do conhecimento baseado em
regras de produção, a linguagem de programação Delphi 3.0 e o banco de dados Microsoft
SQL Server 7.0.
Os resultados foram alcançados, porém a intenção inicial em solucionar o problema
utilizando somente um sistema especialista mostrou-se insuficiente, devido à limitação da
ferramenta de não manipular vetores. A solução apresentada é um sistema híbrido utilizando
sistema especialista e stored procedures.
vii
ABSTRACT
The objetive of this work is to develop a prototype of a specialist system which assist in
the stock management for chain stores of shoes/apparel. The tools utilized are the Shell
“Expert Sinta”, which uses a knowledge representation model based on rules of production,
the programming language Delphi 3.0 and the Microsoft SQL Server 7.0.
The results was reached, but the initial intention to solve the problem utilizing only a
expert system become insuficcient, due to limitation of the tool, that cannot handle arrays.
The solution presented was a hibrid system, utilizing a expert system and stored procedures.
viii
1
1 INTRODUÇÃO
Sistemas especialistas são programas de computador que procuram encontrar soluções
para determinados problemas do mesmo modo que se espera que os especialistas humanos
resolvam, se estiverem sob as mesmas condições (Lia, 2001). São sistemas com um
conhecimento profundo sobre campos restritos ao conhecimento. Os sistemas especialistas
aplicam técnicas de inteligência artificial e conhecimento amplo em problemas específicos,
para simular a atuação de especialistas humanos.
Para auxiliar na construção de sistemas especialistas foram criadas ferramentas de
inteligência artificial orientadas para engenharia do conhecimento e construção de sistemas
especialistas denominadas shells, que estão aptas a realizar muito do trabalho necessário para
transpor um sistema especialista para o computador. Essas ferramentas permitem que o
desenvolvedor do sistema preocupe-se somente com a representação do conhecimento do
especialista, deixando para a shell a tarefa de interpretar o conhecimento representado e
executá-lo em uma máquina, além de permitir explicações de como o computador chegou
aquela(s) conclusão(ões). A principal função de uma shell é simplificar ao máximo o trabalho
de implementação de um sistema especialista e permitir seu uso por qualquer pessoa sem
conhecimentos de informática (Heinzle, 1995).
1.1 OBJETIVOS DO TRABALHO
O trabalho proposto tem como objetivo a especificação e implementação de um
sistema especialista que analisará os estoques de uma rede de lojas e gerará o conseqüente
remanejamento de estoques. Os objetivos específicos são:
a) estudo sobre sistemas especialistas baseados em regras de produção e seus
componentes;
b) estudo da ferramenta Expert SINTA Shell;
c) estudo das técnicas de Data Mining, em específico regras de produção;
d) formalização do conhecimento através de regras de produção;
e) implementação do protótipo.
2
1.2 ESTRUTURA DO TRABALHO
A seguir é descrito brevemente cada capítulo do trabalho.
Este capítulo de introdução apresenta uma visão geral da origem deste trabalho, sua
relevância e objetivos.
O segundo capítulo apresenta alguns conceitos, características dos sistemas
especialistas, seus componentes, as principais formas de representação do conhecimento,
sistemas baseados em regras de produção e algumas ferramentas para desenvolvimento.
A ferramenta Expert SINTA Shell e suas principais características são apresentadas no
terceiro capítulo. Histórico, arquitetura, método de extração procedural do conhecimento e
fatores de confiança são também apresentados neste capítulo.
No capítulo quatro é enfocado o comércio de calçados/vestuário, suas particularidades
quanto aos estoques e a forma de controle e remanejamento de estoques.
O quinto capítulo apresenta o desenvolvimento do protótipo, o sistema comercial sobre
o qual o protótipo executa, e um estudo de caso.
As conclusões do trabalho e algumas sugestões para futuros trabalhos encontram-se no
sexto capítulo.
3
2 SISTEMAS ESPECIALISTAS
2.1 CONCEITOS
Um sistema especialista é um sistema computacional que resolve problemas de
maneira bastante parecida com o especialista humano. São sistemas com um conhecimento
específico e profundo sobre campos restritos do conhecimento (Rabuske, 1995). Rabuske
(1995) ensina ainda que: “sistemas especialistas devem, também, ter habilidade para aprender
com a experiência e explicar o que estão fazendo e porque o fazem. Esta última é uma das
principais características que distinguem estes sistemas dos tradicionais sistemas de
informação”. Segundo Feigenbaum(1983) um sistema especialista é um programa inteligente
de computador que usa conhecimento e procedimentos inferenciais para resolver problemas
que são bastante difíceis, de forma a requererem para a sua solução muita perícia humana. Já
para Genaro(1986): “sistemas especialistas são programas intensivamente baseados em
conhecimento que resolvem problemas que geralmente requerem experiência humana. Eles
executam muitas das funções secundárias que os especialistas executariam, como perguntar
questões relevantes e explanar suas razões”.
Como um especialista, o sistema deve ser capaz de emitir decisões justificadas sobre
um determinado assunto a partir de uma base de conhecimentos. Para tomar uma decisão o
especialista busca em sua memória conhecimentos prévios, formula hipóteses, verifica os
fatos que encontra e compara-os com as informações já conhecidas e então emite umas
decisão. Neste processo o especialista realimenta a sua “base de conhecimentos” acerca do
assunto. Os sistemas especialistas, portanto, caracterizam-se por armazenar um grande e
profundo conhecimento sobre uma determinada área armazenando estas informações de modo
organizado permitindo uma rápida e simplificada busca para respostas requeridas.
Um sistema especialista deve além de inferir conclusões, ter a capacidade de aprender
com novos conhecimentos e, desse modo, melhorar o seu desempenho e a qualidade de suas
decisões, explicando como chegou a decisão final. Esta última é uma das principais
características que distinguem os sistemas especialistas dos sistemas convencionais (Ribeiro,
1987).
4
2.2 CARACTERÍSTICAS
Os sistemas especialistas caracterizam-se por um conhecimento profundo, no limite da
perícia sobre uma área específica, organizado com o objetivo de simplificar a busca a
respostas requeridas, por isso, o armazenamento da informação torna-se de suma importância.
Outra característica dos sistemas especialistas é a utilização de técnicas de inferência
para manipular informações visando uma solução. O mecanismo de inferência utiliza
estratégias genéricas para adquirir conhecimento, processá-lo, tirar conclusões próprias e dar
explicações acerca do processo de raciocínio. Essa abordagem baseada em conhecimento
oferece a possibilidade de separar o conhecimento que descreve o domínio do problema do
código de procedimentos que examina esse conhecimento. Este mecanismo distingue os
sistemas especialistas dos tradicionais (Heinzle, 1995).
2.3 COMPONENTES DE UM SISTEMA ESPECIALISTA
Segundo Rabuske(1995), “os componentes de um sistema especialista sofrem
influências das mais variadas, desde a generalidade pretendida, os objetivos do mesmo, a
representação do conhecimento e as ferramentas usadas na implementação”. O modelo geral
de arquitetura de um sistema especialista apresentada por vários autores é mostrado a seguir.
Figura 1 - Componentes de um sistema especialista
Fonte: Heinzle(1995)
5
2.3.1 BASE DE CONHECIMENTOS
A base de conhecimentos é o local onde se armazenam fatos e regras. Este
conhecimento é passado ao sistema pelo especialista e armazenado de uma forma própria que
permitirá ao sistema fazer posteriormente o processo de inferência. Um novo fato pode
modificar todo o processo de inferência de acordo com as regras existentes sobre ele que estão
sendo aplicadas e também sobre os novos fatos gerados pela avaliação dessas regras (Ribeiro,
1987).
A qualidade do conhecimento armazenado é determinante no potencial do sistema
especialista. A fase de construção da base de conhecimentos é uma das mais complexas na
implementação do sistema especialista, pois o conhecimento de um especialista não se
encontra formalizado, precisando de um trabalho prévio. A base de conhecimentos está
interligada com quase todos os elementos do sistema, especialmente com a máquina de
inferência, o mecanismo de aprendizagem e aquisição do conhecimento e o quadro negro
(Heinzle, 1995).
2.3.2 MECANISMO DE APRENDIZAGEM E AQUISIÇÃO DO
CONHECIMENTO
Segundo Rabuske(1995), “obter o conhecimento é a parte mais complexa da
construção de um sistema especialista. A aquisição do conhecimento tende a caracterizar área
de pesquisa específicas nas universidades e centros de pesquisas, geralmente ligadas a
engenharia do conhecimento”. Conforme Genaro(1986), “a aquisição de conhecimento é o
processo de extração e formalização do conhecimento para uso em um sistema especialista”.
Já para Levine(1988), “a fase de aquisição do conhecimento é a que apresenta maior
dificuldade na construção de um sistema especialista. Esta dificuldade advém do fato de não
existir uma linguagem comum de entendimento entre as partes envolvidas no projeto”. O
especialista não tem suas idéias organizadas utilizando processos indutivos e dedutivos na
obtenção das soluções. Desta forma cabe ao engenheiro de conhecimento tentar organizar
esses elementos e obter as informações necessárias.
6
2.3.3 MOTOR OU MÁQUINA DE INFERÊNCIA
Para Rabuske(1995), a máquina de inferência não é normalmente um único módulo de
programa. É, em geral, entendido como compreendendo o interpretador de regras e o
escalonador das regras, quando o sistema especialista envolve regras de produção.
O processo de inferência está associado com a estrutura utilizada para o
armazenamento do conhecimento na base de dados. De forma geral, pode-se afirmar qu o
processo envolve um encadeamento lógico que permite tirar conclusões a partir do
conhecimento existente. Conforme Heinzle(1995), o motor de inferência é o responsável pela
ação repetitiva de buscar, analisar e gerar novos conhecimentos.
Ribeiro(1987) registra que “o mecanismo de inferência depende de como se está
representado o conhecimento. Nos sistemas de avaliação de regras, o mecanismo de
inferência busca as regras na base de conhecimento e as avalia. Essa busca depende dos fatos
e das hipóteses que existem e que se quer determinar a cada momento. Os objetivos a serem
determinados pelo sistema de inferência devem ser relacionados com uma determinada
ordem. A busca de regras é feita de maneira automática para que uma meta seja atingida.
Entretanto, existem casos em que a resposta pode ser obtida de maneira imediata e, nesses
casos são estabelecidas estratégias de avaliação imediata, evitando todo o processo natural de
busca e avaliação de regras. Outra estratégia usada consiste em o mecanismo de inferência
proceder antes à busca das novas regras que foram causadas pela necessidade de se atender a
uma meta, e avaliar essas regras a serem pesquisadas. Como os atributos são encontrados em
diversas regras, o valor de uma cláusula já pode ter sido estabelecido. Esse valor, sozinho,
permite determinar antecipadamente que a premissa da regras é falsa, e que não há razões
para novas buscas. As estratégias de busca e avaliação de regras dependem do tipo de
representação para o conhecimento e da arquitetura das próprias regras”.
2.3.4 SISTEMA DE CONSULTA
O usuário é, geralmente, alguém que não participou da elaboração do sistema, sendo,
portanto, natural que não conheça as estruturas do sistema e que, provavelmente, não esteja
familiarizado com as formas de representação do conhecimento adotadas. Para que os
7
potenciais usuários possam acessar com proveito e sem maiores dificuldades o sistema
especialista, é preciso muni-lo de recursos para consulta.
Conforme Heinzle(1995), “a maioria dos sistemas existentes usam técnicas simples de
interação com o usuário, quase sempre utilizando perguntas já pré-formatadas e respostas tipo
múltipla escolha. Outra técnica é a definição de uma sintética simples com um vocabulário
restrito e limitado, própria para utilização do sistema”.
2.3.5 SISTEMA DE JUSTIFICAÇÃO
Para Heinzle(1995), “o módulo de justificação é na verdade um recurso de
questionamento fornecido ao usuário”. E, portanto, o módulo de justificação é obrigatório nos
sistemas especialistas, tendo, geralmente, a capacidade de responder as seguintes perguntas:
Como chegou a esta conclusão ?
Por que chegou a esta conclusão ?
Por que não chegou a outra conclusão ?
Ribeiro(1987) descreve que “este módulo interage com o usuário esclarecendo-o de
como o sistema chegou a determinada conclusão, ou por que está fazendo determinada
pergunta. Utiliza diversos recursos e estruturas próprias para atender ao seu objetivo,
mostrando que regra e que fator foram usados na base de conhecimento, sempre que isso for
solicitado por que usa o sistema”.
2.3.6 QUADRO NEGRO
Segundo Rabuske(1995), “o quadro negro é a área de trabalho do sistema especialista.
Armazena informações, fatos e estruturas de suporte ao funcionamento do sistema, quando
este efetua raciocínios. Embora todos os sistemas especialistas usem o quadro negro, nem
todos o têm como um componente explícito”.
8
2.4 REPRESENTAÇÃO DO CONHECIMENTO
Para
Heinzle(1995),
“para
um
sistema
especialista
resolver
problemas
é
imprescindível, que esteja associado a ele um razoável volume de conhecimentos relativos ao
domínio do problema. Este conhecimento deve ser transformado em estruturas de dados
organizadas de modo a permitir a sua utilização pelo computador”.
A representação do conhecimento é a formalização do conhecimento do sistema. Para
que isto seja possível existem técnicas que permitem modelar o conhecimento de forma
eficiente, e deixa-lo pronto para ser acessado facilmente.
2.4.1 LÓGICA DAS PREPOSIÇÕES E DOS PREDICADOS
Na lógica das preposições, será atribuído o valor lógico verdadeiro se as informações
disponíveis permitirem tirar esta conclusão a respeito de uma preposição, caso contrário é
atribuído o valor falso. Para se trabalhar com várias preposições utiliza-se operadores de
conexão para assim obter as chamadas preposições compostas e aumentar a capacidade de
expressão. Estes operadores são: AND, NOT, OR, IMPLIES, EQUIVALENT (Heinzle,
1995).
Exemplo:
-
Senna era um piloto
-
Senna nasceu em São Paulo
-
Todos os que nascem em São Paulo são brasileiros
-
Todos os brasileiros gostavam de Senna ou odiavam-no
A representação destas sentenças utilizando-se a lógica dos predicados é:
piloto(senna)
paulista(senna)
∀ X paulista(X) ⇒ brasileiro(X)
∀ X brasileiro(X) ⇒ gostava(X,senna) ⋁ odiava(X,senna);
9
2.4.2 REGRAS DE PRODUÇÃO
Sua estrutura constitui-se basicamente de uma premissa, ou conjunto de premissas, e
uma conclusão, ou conjunto de conclusões. As regras são armazenadas como uma coleção de
declarações SE-ENTÃO (SE <premissas ENTÃO <conclusões>). Onde a parte condicional
consiste de uma expressão proposicional ou simplesmente um termo (Heinzle, 1995).
Exemplo:
Regra:
SE um candidato se inscrever para o curso de mestrado
e o candidato preencher todos os requisitos exigidos
e existirem vagas disponíveis
ENTÃO o candidato passa a ser aluno do curso de mestrado
Regra:
SE o aluno de mestrado for aprovado em todas as disciplinas do currículo
ENTÃO ele deve escrever uma dissertação
Regra:
SE a dissertação está concluída será submetida a uma banca examinadora
e a banca examinadora aprovar o trabalho
ENTÃO o aluno receberá o grau de mestre;
2.4.3 REDES SEMÂNTICAS
As redes semânticas foram inicialmente desenvolvidas para modelagem psicológica da
memória humana, constituindo-se agora num método de representação padrão. São estruturas
formadas por nós, conectados entre si através de arcos rotulados. Os nós representam objetos,
conceitos, situações ou ações, e os arcos representam relações entre os nós (Heinzle, 1995).
Para ilustrar o assunto, considere o seguinte texto:
10
A dissertação é um requisito do curso de mestrado. Roberto, que é um estudante
de mestrado, tem um bom computador que ele usa para escrever a dissertação.
A figura 2 mostra uma forma de representação do texto usando uma rede semântica.
Figura 2 - Representação do conhecimento com redes semânticas
é-um-requisito
Curso de Mestrado
Dissertação
Relação-com
Escrever
usado-para
é-de
Roberto
Computador
é-um
é
Estudante
Bom
Fonte: Heinzle(1995)
2.4.4 QUADROS OU FRAMES:
Esta forma de representação do conhecimento descreve, tipicamente, classes de
objetos. O quadro é constituído por um nome, um conjunto de atributos chamados de slots ou
escaninhos, e um conjunto de métodos para sua utilização (Rabuske, 1995).
Exemplo:
Quadro: Cadeira-do-Renato
Slot: número-de-pernas – 4
11
Slot: tipo-de-assento – anatômico
Slot: número-de-braços – nenhum
Slot: cor – incolor.
2.5 SISTEMAS BASEADOS EM REGRAS DE PRODUÇÃO
2.5.1 FUNCIONAMENTO
Segundo Heinzle(1995), “Num sistema baseado em regras de produção o
conhecimento a ser processado é representado através do uso de regras com uma arquitetura
previamente definida. Estas regras utilizam um par condição-ação onde as condições são
premissas e a ação é a conclusão”.
2.5.2 RACIOCÍNIO E ENCADEAMENTO
Segundo Rabuske(1995), “O raciocínio com regras de produção envolve o
gerenciamento da(s) base(s) de regras, a manutenção do contexto em que o sistema está
inserido, a interpretação adequada das regras e a aplicação de algum algoritmo de solução,
que servirá de base para a estrutura do sistema “presente”, ou a máquina de inferência”.
2.5.2.1 ENCADEAMENTO PROGRESSIVO
O encadeamento progressivo, também chamado de para-frente ou forward, começa
com a seleção de uma regra qualquer da base de conhecimentos. É criada uma lista de
verdades onde serão armazenadas todas as informações tidas como verdadeiras (Heinzle,
1995).
No início do processo de inferência, alguns questionamentos serão obrigatórios já que
a lista de verdades está ainda vazia. As respostas do usuário são então colocadas na lista de
verdades. Após a utilização de uma regra, as conclusões desta regra também devem ser
adicionadas a lista de verdades. Na seqüência, o sistema procura por uma regra que tenha
entre as suas premissas a conclusão da regra avaliada (Heinzle, 1995).
12
2.5.2.2 ENCADEAMENTO REGRESSIVO
O encadeamento regressivo, também chamado de backward ou para-trás, difere do
encadeamento progressivo pelo fato de que inicia numa conclusão e passa então a usar as
regras para provar esta conclusão (Heinzle, 1995).
Como exemplo, se você não olhou para fora, e alguém entra com sapatos molhados e
um guarda-chuva, há uma suposição de que esteja chovendo. Para provar essa suposição, você
poderia perguntar à pessoa se está chovendo. Se a resposta for sim, então a suposição prova-se
verdadeira e torna-se um fato (Giarratano, 1993).
Se os resultados possíveis forem conhecidos e relativamente poucos, então o
encadeamento regressivo será muito eficaz (Harmon, 1988).
2.6 FERRAMENTAS PARA DESENVOLVIMENTO
Ferramentas para o desenvolvimento de sistemas especialistas são softwares
que
apóiam e simplificam o trabalho de construção destes sistemas. Existem linguagens de
programação com características dirigidas ao desenvolvimento de aplicações na área de
inteligência artificial, e as shells, que são softwares cujo trabalho é auxiliar os analistas e
especialistas no processo de construção da base de conhecimento (Heinzle, 1995; Keller,
1991).
2.6.1 PROLOG
Prolog, palavra que expressa uma abreviação de Programming in Logic, foi criada
especialmente para responder perguntas sobre um banco de conhecimentos que consiste em
regras e fatos. Nasceu em Edimburgo, na Escócia no início da década de 70. A fama do
PROLOG cresceu muito quando os japoneses a elegeram como linguagem básica para sua
quinta geração de computadores (Rabuske, 1995; Levine, 1988).
Prolog tem o encadeamento para trás embutido, e também utiliza outra técnica,
conhecida como backtracking, utilizada para se desfazer da suposição original e substitui-la
por uma nova quando a original não estiver correta (Levine, 1988).
13
Prolog é uma linguagem declarativa orientada para o processamento simbólico. Um
programa escrito nesta linguagem consiste em conjunto de regras que descrevem relações
entre objetos. Estas relações, chamadas de predicados do programa, são escritas a partir de um
subconjunto do cálculo de predicados, denominados “cláusulas de Horn”. Programas em
PROLOG envolve aspectos declarativos, que determinam se um certo objetivo é verdadeiro; e
aspectos procedimentais que permitem melhorar a eficiência dos programas (Heinzle, 1995).
2.6.2 LISP
LISP, uma abreviação de List Processing, é uma linguagem de programação criada por
John McCarthy em 1958 no MIT – Massachussets Institute of Technology. Uma de suas
maiores qualidades é que ela pode manipular listas facilmente. Uma lista pode ser as palavras
de uma frase, os nomes das pessoas de uma empresa ou qualquer seqüência de palavras em
qualquer ordem. As partes de uma lista podem ser retiradas do contexto uma de cada vez, de
forma que várias operações podem ser efetuadas nelas (Heinzle, 1995; Levine, 1988).
Em contraste com o PROLOG, onde os programas são escritos de forma declarativa, o
LISP é uma linguagem procedural, ou seja, as instruções são escritas seqüencialmente em
forma de algoritmo. A sintaxe e a semântica da linguagem são derivadas da teoria matemática
e utiliza-se apenas uma estrutura básica, a lista (Heinzle, 1995).
2.6.3 “SHELL”
Este nome refere-se a uma imensa família de ferramentas de inteligência artificial, não
linguagens, orientadas para engenharia do conhecimento e construção de sistemas
especialistas (Rabuske, 1995).
Geralmente essas ferramentas exibem uma interface razoavelmente amigável,
fornecendo aos usuários a capacidade de ensinar o sistema através de regras gerais ou casos
de conhecimento específico. Essas ferramentas ajudam, mostrando a estrutura do
conhecimento ou as regras sendo acumuladas, verificando a consistência lógica da base de
conhecimento e explicando como as decisões foram encontradas (Keller, 1991).
14
Essas ferramentas podem reduzir substancialmente o custo de um projeto de sistema
especialista. Geralmente são bem depuradas e bem documentadas quanto à suas capacidades e
limitações (Keller, 1991).
As shells são divididas em dois grupos. O primeiro, onde utilizam-se editores de texto
para editar o arquivo de regras, que posteriormente é interpretado e executado pela shell. No
outro grupo reunem-se as ferramentas que possuem um editor próprio, ligado à estrutura da
própria ferramenta (Rabuske, 1995).
15
3 A FERRAMENTA EXPERT SINTA SHELL
O Expert SINTA é uma ferramenta computacional que utiliza técnicas de inteligência
artificial para geração de sistemas especialistas. Esta ferramenta utiliza um modelo de
representação do conhecimento baseado em regras de produção e probabilidades, tendo como
objetivo principal simplificar o trabalho de implementação de sistemas especialistas através
do uso de uma máquina de inferência compartilhada, da construção automática de telas e
menus, do tratamento probabilístico das regras de produção e da utilização de explicações
sensíveis ao contexto da base de conhecimento modelada. O usuário responde a uma
seqüência de menus, e o sistema encarregar-se-á de fornecer respostas que se encaixem no
quadro apontado pelo usuário (Lia, 1997).
Entre outras características inerentes ao Expert SINTA, tem-se:
a) utilização do encadeamento para trás (backward chaining);
b) utilização de fatores de confiança;
c) ferramentas de depuração;
d) possibilidade de incluir ajudas on-line para cada base.
3.1 HISTÓRICO
O Expert SINTA é uma shell implementada na linguagem de programação Pascal em
ambiente de programação orientado a objetos Borland Delphi. Ele permite o desenvolvimento
modular de bases de conhecimento através de uma interface de manipulação e de utilitários
criados para depuração. Com isto, proporciona-se uma economia de tempo para os
desenvolvedores da base de conhecimento e também um melhor aproveitamento por parte do
usuário final ao permitir a inclusão de hipertextos explicativos sobre as possíveis soluções
encontradas pelo sistema.
O software foi desenvolvido por bolsistas da CAPES e CNPq ligados ao Laboratório
de Inteligência Artificial (Lia), unidade localizada na Universidade Federal do Ceará. Os
responsáveis pelo programa formam o grupo Sistemas INTeligentes Aplicados (SINTA).
16
3.2 ARQUITETURA DE UM SISTEMA ESPECIALISTA NO
EXPERT SINTA
Os sistemas especialistas gerados no Expert SINTA seguem a arquitetura mostrada na
figura 3, conforme Lia(2001):
Figura 3 - Arquitetura de um sistema especialista no Expert SINTA
Fonte: Lia(1999)
a) base de conhecimentos representa a informação (fatos e regras) que um
especialista utiliza, conforme descrito anteriormente no item 2.3.1 deste trabalho;
b) editor de bases é o meio pelo qual a shell permite a implementação das bases
desejadas;
c) máquina de inferência é a parte do sistema especialista responsável pelas
deduções sobre a base de conhecimentos, conforme descrito anteriormente no item
2.3.3 deste trabalho;
d) banco de dados global são as evidências apontadas pelo usuário do sistema
especialista durante uma consulta.
17
Conforme Lia(2001), “o objetivo do Expert SINTA é simplificar ao máximo as etapas
de criação de um sistema especialista completo. Para tanto, já oferece uma máquina de
inferência básica, fundamentada no encadeamento para trás (backward chaining)”.
3.3 UTILIZANDO REGRAS DE PRODUÇÃO NO EXPERT
SINTA SHELL
Conforme Lia(2001), as regras de produção possuem as seguintes vantagens:
a) modularidade: cada regra, por si mesma, pode ser considerada como uma peça de
conhecimento independente;
b) facilidade de edição (uma conseqüência da modularidade): novas regras podem
ser acrescentadas e antigas podem ser modificadas independentemente;
c) transparência do sistema: garante maior legibilidade da base de conhecimentos.
Como a construção da base de conhecimentos é um processo bastante oneroso, deve-se
utilizar a capacidade de modularidade para construir a base de conhecimentos aos poucos. É
possível realizar vários testes com apenas um subconjunto de regras. Sabe-se que menos
regras implicam geralmente em um menor número de casos abrangidos.
3.4 O MÉTODO DE EXTRAÇÃO PROCEDURAL
CONHECIMENTO DO EXPERT SINTA SHELL
DE
O Expert SINTA utiliza o encadeamento para trás. O projetista deve incluir na
definição da base quais os objetivos que devem ser encontrados. A máquina de inferência
encarrega-se de encontrar uma atribuição para a variável desejada nas conclusões de regras.
Para que a regra seja aprovada, suas premissas devem ser satisfeitas, obrigando à máquina a
encontrar os atributos das premissas para que possam ser julgadas, acionando um
encadeamento recursivo. Caso o atributo procurado não seja encontrado em nenhuma
conclusão de regras, é feita uma uma pergunta direta ao usuário (Lia, 2001).
18
3.4.1 EXEMPLO DE ENCADEAMENTO PARA TRÁS
Sejam as seguintes regras, extraídas de Lia(2001), um sistema especialista para
“decidir se devo ou não ir à praia amanhã”.
Regra 1
SE amanhã pode chover = Não
E tenho dinheiro suficiente = Sim
E tenho tempo suficiente = Sim
ENTÃO devo ir à praia = Sim
Regra 2
SE amanhã pode chover = Sim
OU tenho dinheiro suficiente = Não
OU tenho tempo suficiente = Não
ENTÃO devo ir à praia = Não
Regra 3
SE o serviço de meteorologia disse que vai chover amanhã = Sim
ENTÃO amanhã pode chover = Não
Regra 4
SE não vou sair hoje = Sim
E nenhuma emergência acontecer = Sim
ENTÃO tenho dinheiro suficiente = Sim
ENTÃO devo ir à praia = Não
Regra 5
SE meu namorado ligar = Sim
ENTÃO não vou sair hoje = Não
Regra 6
SE meu orientador passar trabalho extra = Sim
ENTÃO tenho tempo suficiente = Não
Conforme Lia(2001), examinando-se o pequeno sistema especialista anterior,
claramente distingue-se que o seu objetivo é determinar o valor da variável devo ir à praia.
Então, inicia-se a busca por ela. O Expert SINTA procura as regras nas quais a variável sendo
19
procurada no momento pode receber um valor se a regra for aceita (ou seja, quando ela
aparece após o ENTÃO). Em seguida, a máquina de inferência verifica se a regra vale ou não.
No exemplo dado, o sistema avalia a regra 1 para poder determinar se todas as
premissas (amanhã pode chover = Não, tenho dinheiro suficiente = Sim, tenho tempo
suficiente = Sim) são verdadeiras. Para descobrir se amanhã pode chover, tem-se que repetir
o processo, avaliando a regra 3. Agora precisa-se saber se a meteorologia disse sobre a
possibilidade de chuva amanhã. Como não existe nenhuma regra que possa concluir o que a
meteorologia disse, o Expert SINTA realiza uma pergunta ao usuário, do tipo “A meteorologia
afirmou se amanhã pode chover (Sim/Não)?”.
Se a meteorologia disser que amanhã vai chover, então a primeira premissa da regra 1
passará no teste. Avaliando a segunda premissa e repetindo o processo de encadeamento para
trás, chega-se à regra 4. Mas, para descobrir se eu vou sair hoje ou não, é preciso recorrer à
regra 5. A regra 5 leva a uma pergunta, pela qual se conclui se tal regra vai ser aprovada. Se
realmente for aprovada, a primeira premissa da regra 4 é verdadeira, fazendo com que
verifique-se agora a segunda premissa. Quando todas as premissas da primeira regra forem
avaliadas, pode-se determinar se a regra 1 foi aprovada ou não. Caso contrário, passa-se para
a próxima regra que possa concluir um valor para a variável devo ir à praia.
Se responde-se que o serviço de meteorologia disse que amanhã vai chover, então a
regra 3 irá falhar. Mas, observa-se que isso não quer dizer que a variável amanhã pode chover
irá receber o valor “Sim”. Pelo contrário, essa variável não vai ser instanciada, permanecendo
sem instanciações. Portanto, a regra 2 também vai falhar, e o sistema simplesmente
responderá que não conseguiu atingir nenhuma conclusão.
Além do uso de graus de confiança para tratamento de incertezas, e da “nãoinstanciação” de variáveis, o Expert SINTA permite o uso de um valor especial, passível de ser
usado por todas as variáveis. É o DESCONHECIDO, que representa uma indeterminação
total sobre as instanciações de uma variável. Este valor pode ser tanto incluído nas regras
como dado como resposta pelo usuário.
20
3.5 VARIÁVEIS
UNIVALORADAS
MULTIVALORADAS
E
VARIÁVEIS
Durante o acompanhamento da execução de um sistema especialista, uma única
variável pode receber vários valores em uma única consulta ao sistema. Por exemplo, em
sistemas de diagnóstico médico, o paciente pode apresentar mais de uma doença. Portanto, é
importante saber lidar com variáveis que podem ter apenas uma instanciação (univalorada) ou
múltiplas (multivaloradas).
Quando uma máquina de inferência procura encontrar instanciações para uma variável
univalorada, ela irá procurar até encontrar um valor ou até esgotar todas as possibilidades da
base de conhecimento. Se, por algum motivo, durante a busca de uma outra variável, uma
variável univalorada receber um valor quando já possuía outro, esse valor antigo será
descartado e o novo vigorará.
A busca de valores para variáveis multivaloradas prossegue até que toda base de
conhecimento seja explorada. Os valores permanecem acumulados. Nesse instante é preciso
ter cuidado com contradições presentes na base. O Expert SINTA, na presente versão, não faz
verificações de inconsistências lógicas.
As variáveis numéricas são sempre tratadas como univaloradas.
3.6 FATORES DE CONFIANÇA
No exemplo dado no item 3.4.1 deste trabalho, as variáveis recebiam apenas valores
determinísticos (“Sim” e “Não”). Porém, é comum que não se queira determinar com exatidão
o valor que cada variável pode receber.
Conforme Lia(2001), sabe-se que o conhecimento humano não é determinístico. Não
há especialista que sempre se encontre em condições de afirmar determinada conclusão com
certeza absoluta. Graus de confiança são freqüentemente atribuídos às suas respostas,
principalmente quando existe mais de uma. Este, sem dúvida, é um dos mais fortes pontos
críticos na elaboração de uma representação computacional do saber humano.
Observa-se dificuldades em representar a confiabilidade das informações (Lia, 1997):
21
a) especialistas humanos não se sentem confortáveis em pensar em termos de
probabilidade. Suas estimativas não precisam corresponder aquelas definidas
matematicamente;
b) tratamentos rigorosamente matemáticos de probabilidade utilizam informações
nem sempre disponíveis ou simplificações que não são claramente justificáveis em
aplicações práticas.
Na verdade, existem duas correntes de pensamento: aquela que utiliza fórmulas
estatisticamente rigorosas, com teoria das probabilidades, e aquela que utiliza uma abordagem
da teoria das possibilidades sobre os fatores de certeza, ou seja, mais generalizada e sem uma
base matemática forte.
22
4 O COMÉRCIO DE CALÇADOS/VESTUÁRIO
4.1 A ESTRUTURA DO ESTOQUE
Ao contrário de outros setores, os estoques no setor de calçados e vestuário são
subdivididos em materiais/cores e tamanhos. Para cada produto, existem as cores e/ou
materiais em que o produto está disponível, bem como os tamanhos.
Nos sistemas de automação voltados para este setor, utiliza-se matrizes para
demonstrar os estoques dos produtos, nos materiais/cores, tamanhos. No caso das redes de
lojas (chain stores), constam também os estoques das outras lojas da rede, para que caso a loja
não tenha o produto que o cliente deseja, mas em outra loja da rede tenha, este produto possa
ser remanejado, e a venda não seja perdida.
4.1.1 MATERIAIS/CORES
Materiais e cores é o primeiro desdobramento de um produto. O mais comum são
cores, por exemplo, uma meia social masculina é do material poliamida, e existe nas cores
marinho, preto, branco e cinza. Mas existem produtos, por exemplo uma bolsa feminina, em
que a cor predominante é o preto, mas é produzido nos materiais couro ou sintético. A bolsa
nos dois materiais é da mesma cor, mas um é feito em couro natural, o outro em material
sintético. Existem produtos em que a diferença é somente um pequeno detalhe, por exemplo, a
cor dos metais da bolsa, em dourado ou cromado.
As redes de lojas utilizam-se de recursos computacionais para ter o controle do estoque
neste nível, para então analisar as vendas, e com isto saber qual é a tendência do mercado, o
que o mercado está comprando, reduzindo o encalhe e melhorando a performance da empresa.
4.1.2 GRADES DE TAMANHOS
Os produtos são fornecidos em grades como do tamanho 33 ao 39, ou tamanhos “P-MG”. A grade de tamanhos é de suma importância para os lojistas. De nada adianta uma loja ter
12 itens de determinado produto, se são todos tamanho 33. O ideal é ter as quantidades
distribuídas entre os tamanhos de acordo com o padrão da venda.
23
Na figura 4 constam os valores percentuais dos tamanhos mais vendidos para calçados
femininos numa rede de lojas.
Figura 4 - Gráfico dos tamanhos mais vendidos
Percentual dos tamanhos vendidos Calçados Femininos
3.0%
24,20%
2.5%
23,30%
2.0%
16,60%
16,50%
1.5%
1.0%
8,40%
8,30%
0.5%
1,60%
0,80%
0,20%
0,10%
41
42
0.0%
33
34
35
36
37
38
39
40
Fonte: Hass Calçados
Os melhores sistemas de automação comercial incorporam controles em nível de
produto, material/cor e tamanho. Planejamento(2000) escreve: “Na aquisição de qualquer
linha de calçado, seja, infantil, infanto-juvenil, feminina ou masculina, o “sistema de grade”
garante a rotatividade da mercadoria e um bom desempenho das vendas”.
4.1.3 MÉTODOS
COMPRA
DE
CONSTRUÇÃO
DOS
PEDIDOS
DE
Em conformidade com o gráfico acima, formaram-se tabelas padrões para as compras
de calçados femininos. Existem também tabelas padrões para outros produtos, como calçados
masculinos, infantis, etc. Estas tabelas padrões são utilizadas para nomear a grade no pedido
de compra. Na tabela 1 mostramos grades-padrões utilizadas pelos lojistas para calçados
femininos.
24
Tabela 1 - Grades-Padrões para Calçados Femininos
Tamanho
33
Qtde
34
35
36
37
38
39
Total
1
2
3
3
2
1
12
Qtde
1
2
3
3
2
1
Qtde
1
2
3
3
3
2
12
1
15
Segundo Planejamento(2000), “... o lojista escolhe modelos diferentes e, em seguida,
parte para a nomeação da grade: um par do número 33 e outro do 34; dois pares do 35; três do
36 e do 37; dois do 38; e um do 39 e do 40”.
Porém, existem fábricas que impõem restrições na construção da grade. Como
exemplo de produto onde existem restrições, podemos citar as sandálias havaianas, que são
vendidas somente em caixas fechadas com 24 pares do mesmo tamanho e da mesma cor.
Existem muitas outras fábricas, que definem uma grade-padrão (possivelmente uma das
opções mostradas na tabela acima) e só produzem os produtos nesta grade. No mercado
exterior é praxe vender somente em grade-padrão.
4.2 A DISTRIBUIÇÃO INICIAL
Chama-se distribuição inicial, a primeira distribuição de produtos recebidos na matriz.
Para esta distribuição, o lojista irá efetuá-la baseando-se principalmente na performance de
produtos semelhantes.
O lojista analisa quantos produtos ele tem para distribuir e distribui entre as lojas onde
ele acredita que o produto venderá bem. Para saber o que vende bem em determinada loja ou
não, o lojista leva em consideração diversos pontos. Pode-se citar:
a) poder financeiro dos clientes: uma loja instalada num bairro rico ou em shopping
centers, tende a vender produtos mais caros do que lojas instaladas em outros
bairros;
b) proximidade: a proximidade de uma loja com uma empresa de ônibus, em que a
maioria dos funcionários são motoristas de ônibus e cobradores, que são obrigados
25
pela empresa a usar sapatos sociais como parte do uniforme. A loja em questão
com certeza venderá muitos pares do calçado citado, pois o cliente-alvo está
próximo, passa defronte a loja diariamente;
c) temporada: se a loja está instalada numa cidade onde existe temporada, como
Balneário Camboriú, o lojista certamente destinará muito estoque a esta loja
durante o verão, pois existem muitos clientes na cidade, mas durante o inverno
certamente não dará a mesma ênfase a esta loja;
d) clima: lojas de calçados no nordeste vendem sandálias o ano inteiro, tendo um
pequeno aumento de vendas de calçados fechados no inverno. Já no sul do país,
durante o inverno se vende somente calçados fechados, a venda de sandálias é
praticamente nula;
e) experiências anteriores: este é o um dos pontos que mais são considerados. O
lojista tem conhecimento, após algum tempo de funcionamento da loja, de quais
são os produtos que tem melhor desempenho em cada loja, pelas experiências
anteriores, isto é, produtos semelhantes que venderam ou não em outra época.
4.3 A ENCOMENDA
Caracteriza-se encomenda quando algum cliente é atendido em uma loja da rede, e,
não existindo nessa loja o produto que o cliente deseja, é verificado no sistema que outra loja
tem, e então é solicitada a transferência do produto.
Este produto levará algum tempo para chegar na loja destino. Nem todos clientes
concordam em aguardar este tempo, ou voltar na loja outro dia. Outras vezes, o cliente
concorda em aguardar até o outro dia, mas, saindo da loja, vê o produto em outra loja, de
outra rede, e acaba comprando lá. Neste caso, perdeu-se a venda, pois se o produto estivesse
na loja, teria sido vendido.
Quando os remanejamentos são bem feitos, o número de encomendas entre as lojas
diminui, pois os produtos estão onde os clientes os desejam. Pode-se dizer que remanejando, o
lojista está antecipando-se às encomendas.
26
4.4 OS REMANEJAMENTOS
Conforme Michaelis(2001), remanejar significa transferir, redistribuir. E é exatamente
isto que é o remanejamento de estoque em lojas de calçados e vestuário. Transferir os
estoques entre as lojas, redistribuir os estoques.
Os remanejamentos são redistribuições dos estoques, normalmente feitos pela matriz,
que analisa as vendas e os estoques das lojas, e então se antecipa às encomendas. O estoque é
transferido da loja onde não está vendendo para a loja onde está vendendo.
As transferências de produtos ocorrem diariamente, seja por meio das encomendas,
seja por meio dos remanejamentos. A periodicidade de remanejamentos depende do nível das
vendas, pois a necessidade de remanejamento origina-se nas vendas, que fazem que acabe um
produto em determinado tamanho, que, disponível em outra loja da rede, cria uma
necessidade de remanejamento. Quanto maiores forem as vendas, maior será a necessidade de
remanejamento.
4.5 A REPETIÇÃO DE COMPRA
A repetição de compra ocorre para re-estocar a loja nas quantidades definidas pelas
grades-padrão. Normalmente, na repetição, são pedidos somente os produtos que faltam nas
lojas, e que tiveram boa performance. Produtos que demoraram muito a vender, ou que só
venderão após o lojista reduzir suas margens, certamente não serão repetidos.
São comprados os produtos que foram vendidos, nos tamanhos que foram vendidos.
Conforme citado no item 4.1.3 deste trabalho, existem fábricas que não permitem este tipo de
pedido.
Quando o produto é do modismo atual, o lojista deve analisar se ainda há tempo na
estação do ano corrente para a recompra do produto, pois se a estação estiver no fim, há maior
possibilidade de encalhe.
4.6 A DISTRIBUIÇÃO DA REPETIÇÃO DE COMPRA
A distribuição da repetição da compra é semelhante à primeira distribuição, porém,
agora, o lojista já tem dados sobre a performance deste produto especificamente, não
27
precisando utilizar-se de dados de produtos semelhantes. Agora, ele poderá analisar
especificamente quais lojas estão vendendo melhor.
Além disto, como é uma repetição, o produto já existe na loja (se não foi vendido
totalmente). Então, a distribuição da repetição é feita de acordo com o pedido de repetição,
considerando o estoque já existente, de acordo com a performance e o estoque de cada loja.
Como entre o pedido e a distribuição decorre um tempo, o lojista poderá , mudar a
distribuição.
4.7 A FINALIZAÇÃO DO ESTOQUE DE UM PRODUTO
A finalização do estoque de um produto ocorre quando um produto não estará mais
disponível para compra. Diversos motivos podem ocasionar esta situação, entre eles pode-se
citar:
a) término do fornecimento por parte do fabricante;
b) interesse do lojista em não trabalhar mais com este produto;
c) término da estação ou moda.
Neste caso, o procedimento correto é remanejar o estoque até que poucas unidades
tenham restado. Estas unidades são então concentradas numa única loja, possivelmente numa
loja de promoções ou ponta de estoque.
28
5 O PROTÓTIPO
5.1 OBJETIVOS
A proposta de construir um protótipo de um sistema especialista utilizando a
ferramenta Expert SINTA Shell para o remanejamento de estoques em redes de lojas de
calçados e vestuário tem como objetivo o remanejamento automático dos estoques, sem a
interferência humana.
A principal necessidade do remanejamento automático é a impossibilidade do
especialista humano realizar a tarefa quando existam muitas lojas. O especialista, realizando a
tarefa manualmente, pode visualizar na tela aproximadamente 20 lojas, porém, além de
visualizar, o especialista precisa raciocinar englobando as 20 lojas. Experiências anteriores
nos mostram que, quando há 4 lojas, o processo é simples; com 8 lojas, o processo torna-se
bastante oneroso. Então quando há 20 lojas, é praticamente impossível realizar a tarefa
manualmente.
5.2 O SISTEMA COMERCIAL
O presente trabalho foi desenvolvido para utilização na empresa Hass Calçados. Nesta
empresa, já existe um sistema comercial, cujo banco de dados será utilizado pelo sistema
especialista como fonte de dados. Nas seções seguintes serão demonstradas os diagramas de
fluxos de dados e algumas telas do sistema comercial para um melhor entendimento.
As principais informações analisadas para o trabalho de remanejamento são:
-
Compra de Produtos;
-
Transferências de Produtos;
-
Venda de Produtos.
5.2.1.1 COMPRA DE PRODUTOS
A compra de produto é efetuada através da operação de Entrada de Mercadoria,
cadastrada na tabela de operações. O cabeçalho da entrada de mercadoria é cadastrado na
tabela movimento, já os itens comprados são cadastrados na tabela itensmovimento.
29
Quando os produtos chegam à matriz, recebem um código de barras (proprietário) que
o identifica, e então são feitas as operações de movimentação do estoque. Então é feita a
distribuição dos produtos. Os itens podem ser cadastrados por digitação, ou pela leitura dos
códigos de barras.
Na figura 5 apresenta-se o diagrama de fluxo de dados para o evento de compra de
produtos. Já na figura 6, apresenta-se a tela do sistema comercial existente na empresa,
efetuando uma movimentação no estoque por compra de produtos.
30
Figura 5 - DFD Compra de Produtos
ItensOrçamento
Orçamentos
Fornecedor
Produtos Recebidos
Filiais
Cores
Produtos
Verificar Estoques e
Performances
Estoques
Produtos a
Distribuir
Distribuição/
Entrada no
Estoque
Operações
Figura 6 - Entrada de produtos por compra
ItensMovimento
Movimento
31
5.2.1.2 TRANSFERÊNCIA DE PRODUTOS
As operações de transferências de produtos se darão como conseqüência de um
remanejamento de estoques. As transferências são efetuadas através da operação de
transferência de mercadoria. O cabeçalho da transferência é cadastrado na tabela movimento,
e os itens transferidos são armazenados na tabela de itensmovimento. A operação de
transferência é efetuada uma única vez, na loja origem. Não é necessário fazer outra operação
para dar a entrada no estoque na loja destino. Na figura 7 apresenta-se o diagrama de fluxo de
dados para o evento de transferência de estoque, e na figura 8, tem-se um exemplo de
transferência de mercadorias da loja Norte para a loja Saldos. Pela quantidade transferida,
nota-se que a transferência é por remanejamento, pois quando a transferência é por
encomenda, são poucos os itens.
32
Figura 7 - DFD Transferência de Produtos (Remanejamento)
Estoques
Remanejamentos
Marcar como
não cumprido
Itens indisponíveis
Loja Origem
Produtos a
Transferir
Verificar
Disponibilidade
Itens disponíveis
Filiais
Estoques
Cores
Produtos
Efetuar
Transferência
Operações
Figura 8 - Transferência de produtos
ItensMovimento
Movimento
33
5.2.1.3 VENDA DE PRODUTOS
Quando é efetuada venda de produtos, o cabeçalho da venda é armazenado na tabela de
orçamentos, e os itens da venda são armazenados na tabela de itensorçamento.
Na figura 9, é apresentada a tela de venda de produtos. Os produtos lidos pela leitora
de código de barras, são incluídos na lista de itens. Após esta tela é feito o registro do
pagamento, via cheque, dinheiro, cartão ou crediário.
Figura 9 - Digitação de Orçamentos
34
5.2.2 MODELO ENTIDADE RELACIONAMENTO
Apresenta-se na figura 10 o modelo entidade relacionamento das tabelas inerentes a
este trabalho.
Figura 10 - Modelo Entidade Relacionamento
5.3 O REMANEJAMENTO
O remanejamento de estoques é efetuado dependendo do nível de informatização da
empresa. Existem empresas que não fazem remanejamento, simplesmente operando não como
uma rede de lojas que podem compartilhar os estoques, mas operando como lojas individuais.
35
5.3.1 REMANEJAMENTO ATRAVÉS DE ARRASTAR & SOLTAR
Através desta ferramenta, o lojista verifica as quantidades dos estoques e as vendas em
cada loja, e, para solicitar um remanejamento, clica na coluna e linha relativa ao produto
desejado (efetua a carga), e então clica na filial para onde quer que seja transferido o produto
(descarga). A operação é rápida, e além disso, os estoques se alteram na tela de acordo com os
remanejamentos, sendo possível visualizar a situação dos estoques após os remanejamentos.
Figura 11 - DFD Remanejamento Manual
Filiais
ItensOrçamento
Estoques
Lojista
Produto a analisar
Remanejamentos
Orçamentos
Analisar Estoques,
Performance,
Remanejamentos
Produto a remanejar
Efetuar
Remanejamento
Produtos
Movimento
ItensMovimento
Cores
ProdutosCancelados
Na figura 12 e 13, apresentamos um produto antes e após o remanejamento.
36
Figura 12 - Tela do remanejador antes do remanejamento
37
Figura 13 - Tela do remanejador após o remanejamento
Na Figura 13, as colunas Ent e Sai exibem as quantidades que irão entrar e sair da loja,
através do remanejamento efetuado. As quantidades em vermelho demonstram saída de
estoque, e as quantidades em azul, entrada de estoque. Na coluna Vda apresenta-se as
quantidades vendidas.
5.3.2 O REMANEJAMENTO AUTOMÁTICO
A solução ideal, que é o objetivo do protótipo apresentado neste trabalho, é o
remanejamento totalmente automático dos estoques. O lojista clica no botão “Auto Rem”, e o
remanejamento é efetuado sem sua interferência. O lojista poderá também efetuar mais algum
remanejamento que julgue necessário manualmente, através do arrastar & soltar, e também
cancelar algum remanejamento efetuado pelo remanejador automático.
38
Figura 14 - DFD Remanejamento Automático
Filiais
Remanejamentos
ItensOrçamento
ItensOrçamento
Orçamentos
Estoques
Lojista
Analisar Estoques,
Performance,
Remanejamentos
Solicitação de
Auto Remanejamento
Produtos
Cores
ItensMovimento
Analisar
Remanejamento
Automático
Produto a Remanejar
Movimento
Remanejamentos
Orçamentos
Estoques
Efetuar
Remanejamento
Produto a remanejar
Produtos
Movimento
ItensMovimento
Cores
ProdutosCancelados
ProdutosCancelados
Figura 15 - DFD da Tarefa de Auto Remanejamento
Sistema
Especialista
Solicitação de
Auto Remanejamento
soluções
Lojista
Parâmetros
Remanejamentos
Coletar Informações
para o S.E.
Refletir
soluções no
BD
Produto a
Remanejar
Stored Procedure
Movimento
Filiais
Cores
Cores
Produtos
Estoques
Orçamentos
ItensMovimento
ItensOrçamento
Movimento
Produtos
ProdutosCancelados
Estoques
Orçamentos
ItensMovimento
ItensOrçamento
Na figura 16, apresentamos a situação sugerida pelo remanejador automático.
39
Figura 16 - Solução do remanejador automático
5.4 AQUISIÇÃO DO CONHECIMENTO
Para obter-se o conhecimento utilizado para o desenvolvimento do sistema
especialista, entrou-se em contato com lojistas e profissionais que lidam diariamente com
remanejamento de estoques no ramo em questão. Através das informações fornecidas por
estas pessoas, foi elaborada a base de conhecimento do sistema especialista.
A experiência do autor no ramo de calçados, visto que sua família trabalha no ramo há
mais de 30 anos, contribuiu para a construção da base de conhecimento e deste trabalho como
um todo.
5.5 A RESOLUÇÃO DO PROBLEMA
Para a resolução do problema apresentado, inicialmente iria-se fazer um sistema
especialista. Após os estudos iniciais, chegou-se a conclusão de que somente um sistema
40
especialista não resolveria o problema, devido a limitações da ferramenta escolhida, Expert
SINTA Shell. A limitação é a incapacidade de lidar com vetores, pois o sistema especialista
deveria comparar valores de uma loja com várias outras. A incapacidade de lidar com vetores
impossibilita essa comparação. Então foi implementada uma solução híbrida, resolvendo parte
do problema através da ferramenta Expert SINTA Shell, e outra parte através de stored
procedures.
Stored procedures são blocos de comandos Transact-SQL pré-compilados,
armazenados por um nome e processados como uma unidade. Um dos principais benefícios
de usar-se stored procedures é a pré-compilação, que gera um ganho significativo de
desempenho.
5.6 A INTEGRAÇÃO
No protótipo implementado, após o usuário clicar o botão de Remanejamento
Automático, é executada uma rotina em que para cada material/cor e filial, é chamado uma
stored procedure que coleta os dados que serão posteriormente informados como parâmetros
para o sistema especialista.
O sistema especialista é chamado através de componentes Borland Delphi, que fazem
parte da ferramenta Expert SINTA Shell, disponíveis em Lia(2001). Quando o sistema
especialista retorna a solução, esta solução é refletida na tabela produtoscancelados, que é a
tabela onde a stored procedure seguinte consultará a situação das lojas com relação ao
sistema especialista.
Então é chamada a stored procedure de remanejamento, uma única vez, que executa os
remanejamentos, conforme descrito na seção 5.8
5.7 O SISTEMA ESPECIALISTA
No sistema especialista são analisados dados com relação à performance da loja com
relação às outras lojas, os estoques, entre outros dados, e após análise, o sistema especialista
retorna uma única das seguintes soluções:
a) Cancelamento da loja: ocorre quando se verifica que a loja não consegue um bom
desempenho nas vendas de um produto, quando em outra(s) loja(s) o desempenho é
41
satisfatório, e mais alguns fatores, e então resolve-se desistir de vender estes
produtos nesta loja, sendo os produtos remanejados para outra(s) loja(s).
b) Reativação da loja: ocorre após o cancelamento. Ocorre quando, após um período
determinado, o produto não está vendendo bem nas lojas onde está ativo, entre
outros fatores, e resolve-se reativar a loja que foi anteriormente cancelada.
c) Permanecer Cancelada: ocorre quando ainda não venceu o período de
cancelamento da loja.
d) Permanecer Ativa: ocorre quando a loja está ativa, tem boa perfomance e portanto
deve permanecer ativa, ou quando a loja não tem boa perfomance, mas as outras
lojas também não.
O conjunto de regras do sistema especialista implementado são apresentadas no
apêndice 2 deste trabalho.
Então, as soluções do sistema especialista são refletidas no banco de dados, e então
será executada a stored procedure para a finalizar o remanejamento.
5.8 A STORED PROCEDURE
Na stored procedure construída, os dados são analisados e são gerados os registros
necessários na tabela de remanejamentos. Posteriormente estes registros serão replicados às
lojas, que executarão o remanejamento fisicamente.
Inicialmente, a stored procedure cria uma tabela temporária de trabalho, no formato de
matriz, e armazena os estoques de cada loja, em cada cor. Apura as vendas em cada loja e
cada cor. A carga de dados está pronta.
Cria-se então um cursor, que irá percorrer as lojas, verificando a possibilidade de
manter pelo menos 1 unidade de cada tamanho em cada loja ativa. Se houver alguma loja que
tenha 2 unidades, e outra loja não tem nenhuma, irá ser chamada outra stored procedure que
criará um registro na tabela de remanejamento para suprir essa necessidade.
Por último, a stored procedure irá analisar se existe loja de melhor performance com
estoque menor que loja de pior performance. Se existir, o estoque será remanejado de forma
que a maior quantidade fique na loja de melhor perfomance.
42
Estes dois procedimentos de análise são feitos para todos os tamanhos e todas cores,
em todas lojas. Após isto o procedimento estará finalizado, e o lojista poderá alterar algum
remanejamento efetuado automaticamente.
43
6 CONCLUSÕES E SUGESTÕES
6.1 CONCLUSÕES
A proposta do presente trabalho foi demonstrar a utilização da tecnologia do sistemas
especialistas, utilizando a ferramenta Expert SINTA Shell, aplicados no controle de estoques
em redes de lojas no setor de calçados e vestuário, objetivando o remanejamento dos estoques
entre as lojas.
O sistema especialista no domínio do conhecimento no qual foi construído demonstrou
que os objetivos pretendidos foram parcialmente alcançados. Devido às limitações da
ferramenta, não foi possível chegar-se a uma solução final somente através do sistema
especialista. Foi necessário a utilização de stored procedures, no banco de dados Microsoft
SQL Server, para que os objetivos pretendidos fossem alcançados.
O protótipo desenvolvido deu ao sistema uma maior agilidade no remanejamento de
estoques, pois grande parte do trabalho de remanejamento é feito através do remanejador
automático.
6.2 LIMITAÇÕES
O protótipo desenvolvido possui algumas limitações:
a) uso de poucas variáveis na definição da base de conhecimentos do sistema;
b) dependendo da situação, o sistema distribui os estoques entre várias lojas, mesmo
que o estoque seja baixo.
6.3 EXTENSÕES
Para que o trabalho tivesse continuidade seria necessário um aprofundamento nas
técnicas de remanejamento de estoques. Como uma sugestão de melhoramento da aplicação,
poder-se-ia fazer um estudo de alguma ferramenta mais poderosa na área de inteligência
artificial, que pudesse analisar os dados dos estoque como um todo.
Pode-se também fazer um trabalho envolvendo remanejamento de estoques em outras
áreas do comércio, como por exemplo supermercados.
44
APÊNDICE 1 – STORED PROCEDURES
CREATE PROCEDURE AutoRemanejador
@cdpro int
AS
declare
declare
declare
declare
declare
@dtinicial datetime,@dtfinal datetime,@diascancelamento int;
@cdcor int,@nofil char(2),@quantidade int,@venda int,@tamanho char(2);
@cd0 char(2),@cd1 char(2),@cd2 char(2),@cd3 char(2),@cd4 char(2);
@cd5 char(2),@cd6 char(2),@cd7 char(2),@cd8 char(2),@cd9 char(2);
@cd10 char(2),@cd11 char(2),@cd12 char(2),@cd13 char(2),@cd14 char(2);
set @diascancelamento=60
Set @dtfinal=getdate();
set @dtinicial=@dtfinal-@diascancelamento;
-- Carregando Grade de Tamanhos para Variáveis de Memória
select @cd0=cd0,@cd1=cd1,@cd2=cd2,@cd3=cd3,@cd4=cd4,@cd5=cd5,
@cd6=cd6,@cd7=cd7,@cd8=cd8,@cd9=cd9,@cd10=cd10,
@cd11=cd11,@cd12=cd12,@cd13=cd13,@cd14=cd14
from grades g,produtos p
where p.cdpro=@cdpro and p.cdgra=g.cdgra
-- Criando a Tabela Temporária da Stored Procedure
select distinct 2 cdfor,1 nolote,cdpro,cdcor,nofil,nmcor,nmfil,'S' Ativa,0 ta0,0 ta1,
0 ta2,0 ta3,0 ta4,0 ta5,0 ta6,0 ta7,0 ta8,0 ta9,0 ta10,0 ta11,0 ta12,
0 ta13,0 ta14,0 vda,0 TotalEstoque
into #tmpest
from cores c,filiais f
where c.cdpro=@cdpro and controla_estoque=1;
-- Apurando os Estoques, numa Tabela Matriz
select cdpro,cdcor,nofil,
sum(case tamanho when @cd0 then quantidade
sum(case tamanho when @cd1 then quantidade
sum(case tamanho when @cd2 then quantidade
sum(case tamanho when @cd3 then quantidade
sum(case tamanho when @cd4 then quantidade
sum(case tamanho when @cd5 then quantidade
sum(case tamanho when @cd6 then quantidade
sum(case tamanho when @cd7 then quantidade
sum(case tamanho when @cd8 then quantidade
sum(case tamanho when @cd9 then quantidade
sum(case tamanho when @cd10 then quantidade
sum(case tamanho when @cd11 then quantidade
sum(case tamanho when @cd12 then quantidade
sum(case tamanho when @cd13 then quantidade
sum(case tamanho when @cd14 then quantidade
into #estatu
from estoque e
where e.cdpro=@cdpro and quantidade<>0
group by cdpro,cdcor,nofil;
else
else
else
else
else
else
else
else
else
else
else
else
else
else
else
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
end)
end)
end)
end)
end)
end)
end)
end)
end)
end)
end)
end)
end)
end)
end)
Ta0,
Ta1,
Ta2,
Ta3,
Ta4,
Ta5,
Ta6,
Ta7,
Ta8,
Ta9,
Ta10,
Ta11,
Ta12,
Ta13,
Ta14
-- Atualizando a Tabela Temporária
update #tmpest
set ta0=e.ta0,ta1=e.ta1,ta2=e.ta2,ta3=e.ta3,ta4=e.ta4,
ta5=e.ta5,ta6=e.ta6,ta7=e.ta7,ta8=e.ta8,ta9=e.ta9,
ta10=e.ta10,ta11=e.ta11,ta12=e.ta12,ta13=e.ta13,ta14=e.ta14
from #tmpest t,#estatu e
where e.cdpro=t.cdpro and e.cdcor=t.cdcor and e.nofil=t.nofil;
-- Deletando a Tabela Matriz
drop table #estatu;
-- Fim do Procedimento de Apuração do Estoque
-- Apurando as Vendas, numa Tabela de Vendas
select t.cdpro,t.cdcor,t.nofil,sum(i.qtde) Venda
into #resvda
from #tmpest t,itensorcamento i,orcamentos o
where (o.nofil=i.nofil and o.noorc=i.noorc) and
t.cdpro=i.cdpro and t.cdcor=i.cdcor and t.nofil=i.nofil and
o.dthrorc between @dtinicial and @dtfinal
group by t.cdpro,t.cdcor,t.nofil;
-- Atualizando a tabela temporária da stored procedure
update #tmpest
set vda=v.Venda
from #tmpest t,#resvda v
where t.cdpro=v.cdpro and t.cdcor=v.cdcor and t.nofil=v.nofil;
-- Deletando a Tabela Temporária de Vendas
drop table #resvda;
-- Fim do Procedimento de Apuração das Vendas
-- Atualizando Produtos Cancelados, etc...
update #tmpest
set Ativa='N'
from #tmpest t,produtoscancelados c
where t.cdpro=c.cdpro and t.cdcor=c.cdcor and t.nofil=c.nofil;
-- Calcula Total do Estoque
update #tmpest
45
set TotalEstoque=ta0+ta1+ta2+ta3+ta4+ta5+ta6+ta7+ta8+ta9+ta10+ta11+ta12+ta13+ta14;
delete from #tmpest
where (Ativa='N' and totalestoque=0);
-- Inicio dos Remanejamentos
declare @lojas int,@cor int
declare @tamarem char(2)
declare @destino char(2),@origem char(2)
-- Remanejando para manter quantidades mínimas
declare @estpri int,@estult int,@vdapri int,@vdault int
declare @totpri int,@totult int,@ativault char(1),@ativapri char(1)
declare @qtdetam int,@primeira int,@ultima int
declare @tam int
declare @destcanc int -- Destino dos Estoques das Lojas Canceladas
exec tamanhograde @cdpro,@qtdetam output -- SP retorna quantos tamanhos existem na grade
set @cor=0
set @cor=(select top 1 cdcor from #tmpest where cdcor>@cor)
set @lojas=(select count(*) from #tmpest where cdcor=@cor)
while (@cor is not null) begin
-- Retirando estoque das lojas canceladas
set @tam=0
while (@tam<=@qtdetam) begin
select @tamarem=(case @tam when 0 then @cd0 when 1 then @cd1 when 2 then @cd2
when 3 then @cd3 when 4 then @cd4 when 5 then @cd5
when 6 then @cd6 when 7 then @cd7 when 8 then @cd8
when 9 then @cd9 when 10 then @cd10 when 11 then @cd11
when 12 then @cd12 when 13 then @cd13 when 14 then @cd14 end);
declare analise_cursor cursor scroll for
select nofil,tam=isnull(case @tam when 0 then ta0 when 1 then ta1 when 2 then ta2 when 3 then ta3
when 4 then ta4 when 5 then ta5 when 6 then ta6 when 7 then ta7
when 8 then ta8 when 9 then ta9 when 10 then ta10 when 11 then ta11
when 12 then ta12 when 13 then ta13 when 14 then ta14 end,0),
isnull(vda,0) vda,isnull(totalestoque,0) totalestoque,ativa
from #tmpest
where cdcor=@cor
order by ativa desc,tam desc;
open analise_cursor
set @ultima=@lojas
set @primeira=1
fetch absolute @primeira from analise_cursor into @destino,@estpri,@vdapri,@totpri,@ativapri
fetch absolute @ultima from analise_cursor into @origem,@estult,@vdault,@totult,@ativault
set @destcanc=(select top 1 nofil from #tmpest where nofil<>@origem and ativa='S' order by vda desc);
while abs(@ultima-@primeira)>0
begin
if ((@ativault='N') and (@estult>0))
exec remanejar @origem,@cdpro,@cor,@tamarem,@destcanc,@estult,@estpri,@tam,'T'
if abs(@ultima-@primeira)>1
set @ultima=@ultima-1
else
set @primeira=@ultima;
close analise_cursor
open analise_cursor
fetch absolute @primeira from analise_cursor into @destino,@estpri,@vdapri,@totpri,@ativapri
fetch absolute @ultima from analise_cursor into @origem,@estult,@vdault,@totult,@ativault
end
deallocate analise_cursor
set @tam=@tam+1
end
-- Remanejando Quantidade mínima para lojas ativas
set @tam=0
set @lojas=(select count(*) from #tmpest where cdcor=@cor and ativa='S')
while (@tam<=@qtdetam) begin
select @tamarem=(case @tam when 0 then @cd0 when 1 then @cd1 when 2 then @cd2
when 3 then @cd3 when 4 then @cd4 when 5 then @cd5
when 6 then @cd6 when 7 then @cd7 when 8 then @cd8
when 9 then @cd9 when 10 then @cd10 when 11 then @cd11
when 12 then @cd12 when 13 then @cd13 when 14 then @cd14 end);
declare analise_cursor cursor scroll for
select nofil,tam=isnull(case @tam when 0 then ta0 when 1 then ta1 when 2 then ta2 when 3 then ta3
when 4 then ta4 when 5 then ta5 when 6 then ta6 when 7 then ta7
when 8 then ta8 when 9 then ta9 when 10 then ta10 when 11 then ta11
when 12 then ta12 when 13 then ta13 when 14 then ta14 end,0),
isnull(vda,0) vda,isnull(totalestoque,0) totalestoque,ativa
from #tmpest
where cdcor=@cor and ativa='S'
order by tam desc, vda desc,totalestoque asc;
open analise_cursor
set @ultima=@lojas
set @primeira=1
fetch absolute @primeira from analise_cursor into @origem,@estpri,@vdapri,@totpri,@ativapri
fetch absolute @ultima from analise_cursor into @destino,@estult,@vdault,@totult,@ativault
while ((@estult<1) and (@estpri>1)) begin
-- local do travamento
46
select 'informações destino',@origem,@estult,@vdault,@totult,@ativault
select 'informações origem',@destino,@estpri,@vdapri,@totpri,@ativapri,@tam
exec remanejar @origem,@cdpro,@cor,@tamarem,@destino,@estult,@estpri,@tam,'U';
-- Fecha o cursor e o abre novamente, para mudar a ordenação do primeiro e ultimo
close analise_cursor
open analise_cursor
-- Recarrega variáveis
fetch absolute @primeira from analise_cursor into @origem,@estpri,@vdapri,@totpri,@ativapri
fetch absolute @ultima from analise_cursor into @destino,@estult,@vdault,@totult,@ativault
end
close analise_cursor
deallocate analise_cursor
set @tam=@tam+1
end
set @cor=(select top 1 cdcor from #tmpest where cdcor>@cor)
end
-- Remanejando quantidades para lojas de melhor performance
set @cor=0
set @cor=(select top 1 cdcor from #tmpest where cdcor>@cor)
set @lojas=(select count(*) from #tmpest where cdcor=@cor and ativa='S')
declare
declare
declare
declare
@estmelhor int,@estpior int
@vdamelhor int,@vdapior int
@totmelhor int,@totpior int
@melhor int,@pior int
--exec tamanhograde @cdpro,@qtdetam output
while (@cor is not null)
begin
set @tam=0
while (@tam<=@qtdetam) begin
select @tamarem=(case @tam when
when
when
when
when
0 then @cd0 when 1 then @cd1 when 2 then @cd2
3 then @cd3 when 4 then @cd4 when 5 then @cd5
6 then @cd6 when 7 then @cd7 when 8 then @cd8
9 then @cd9 when 10 then @cd10 when 11 then @cd11
12 then @cd12 when 13 then @cd13 when 14 then @cd14 end);
declare analise_cursor cursor scroll for
select nofil,tam=isnull(case @tam when 0 then ta0 when 1 then ta1 when 2 then ta2 when 3 then ta3
when 4 then ta4 when 5 then ta5 when 6 then ta6 when 7 then ta7
when 8 then ta8 when 9 then ta9 when 10 then ta10 when 11 then ta11
when 12 then ta12 when 13 then ta13 when 14 then ta14 end,0),
isnull(vda,0) vda,isnull(totalestoque,0) totalestoque
from #tmpest
where cdcor=@cor and ativa='S'
order by vda desc,tam asc,totalestoque asc
open analise_cursor
set @pior=@lojas
set @melhor=1
fetch absolute @melhor from analise_cursor into @destino,@estmelhor,@vdamelhor,@totmelhor
fetch absolute @pior from analise_cursor into @origem,@estpior,@vdapior,@totpior
while abs(@pior-@melhor)>0
begin
if (@estmelhor<@estpior)
begin
exec remanejar @origem,@cdpro,@cor,@tamarem,@destino,@estpior,@estmelhor,@tam,'N'
end
set @melhor=@melhor+1
close analise_cursor
open analise_cursor
fetch absolute @melhor from analise_cursor into @destino,@estmelhor,@vdamelhor,@totmelhor
fetch absolute @pior from analise_cursor into @origem,@estpior,@vdapior,@totpior
end
deallocate analise_cursor
set @tam=@tam+1
end
set @cor=(select top 1 cdcor from #tmpest where cdcor>@cor)
set @lojas=(select count(*) from #tmpest where cdcor=@cor and ativa='S')
end;
drop table #tmpest;
47
CREATE PROCEDURE Remanejar
@origem char(2),@cdpro int,@cdcor int,@tamanho char(2),@destino char(2),
@estorigem int,@estdestino int,@nrotam int,@tipo char(1)
AS
declare @qtde int
set @qtde=0
if (@tipo='N')
begin
while ( (@estdestino+@qtde)<(@estorigem-@qtde) )
set @qtde=@qtde+1;
end
else
if @tipo='T'
set @qtde=@estorigem
else
set @qtde=1;
if exists(select quantidade from remanejamento
where nofil=@origem and cdfor=2 and nolote=1 and cdpro=@cdpro and
cdcor=@cdcor and tamanho=@tamanho and destino=@destino)
update remanejamento
set quantidade=quantidade+@qtde
where nofil=@origem and cdfor=2 and nolote=1 and cdpro=@cdpro and
cdcor=@cdcor and tamanho=@tamanho and destino=@destino
else
insert into remanejamento(nofil,cdfor,nolote,cdpro,cdcor,tamanho,quantidade,cumprido,destino)
values(@origem,2,1,@cdpro,@cdcor,@tamanho,@qtde,'N',@destino)
update #tmpest
set ta0=(case @nrotam when 0 then ta0-@qtde else ta0 end),
ta1=(case @nrotam when 1 then ta1-@qtde else ta1 end),
ta2=(case @nrotam when 2 then ta2-@qtde else ta2 end),
ta3=(case @nrotam when 3 then ta3-@qtde else ta3 end),
ta4=(case @nrotam when 4 then ta4-@qtde else ta4 end),
ta5=(case @nrotam when 5 then ta5-@qtde else ta5 end),
ta6=(case @nrotam when 6 then ta6-@qtde else ta6 end),
ta7=(case @nrotam when 7 then ta7-@qtde else ta7 end),
ta8=(case @nrotam when 8 then ta8-@qtde else ta8 end),
ta9=(case @nrotam when 9 then ta9-@qtde else ta9 end),
ta10=(case @nrotam when 10 then ta10-@qtde else ta10 end),
ta11=(case @nrotam when 11 then ta11-@qtde else ta11 end),
ta12=(case @nrotam when 12 then ta12-@qtde else ta12 end),
ta13=(case @nrotam when 13 then ta13-@qtde else ta13 end),
ta14=(case @nrotam when 14 then ta14-@qtde else ta14 end)
where nofil=@origem and cdcor=@cdcor and cdpro=@cdpro;
update #tmpest
set ta0=(case @nrotam when 0 then ta0+@qtde else ta0 end),
ta1=(case @nrotam when 1 then ta1+@qtde else ta1 end),
ta2=(case @nrotam when 2 then ta2+@qtde else ta2 end),
ta3=(case @nrotam when 3 then ta3+@qtde else ta3 end),
ta4=(case @nrotam when 4 then ta4+@qtde else ta4 end),
ta5=(case @nrotam when 5 then ta5+@qtde else ta5 end),
ta6=(case @nrotam when 6 then ta6+@qtde else ta6 end),
ta7=(case @nrotam when 7 then ta7+@qtde else ta7 end),
ta8=(case @nrotam when 8 then ta8+@qtde else ta8 end),
ta9=(case @nrotam when 9 then ta9+@qtde else ta9 end),
ta10=(case @nrotam when 10 then ta10+@qtde else ta10 end),
ta11=(case @nrotam when 11 then ta11+@qtde else ta11 end),
ta12=(case @nrotam when 12 then ta12+@qtde else ta12 end),
ta13=(case @nrotam when 13 then ta13+@qtde else ta13 end),
ta14=(case @nrotam when 14 then ta14+@qtde else ta14 end)
where nofil=@destino and cdcor=@cdcor and cdpro=@cdpro;
48
APÊNDICE 2 – REGRAS DA BASE DE CONHECIMENTOS
Regra 1
SE QtdeEstoqueTotal < QtdeTamanhos*QtdeLojasAtivas
ENTÃO Estoque Baixo = Sim CNF 100%
Regra 2
SE QtdeEstoqueTotal >= QtdeTamanhos*QtdeLojasAtivas
ENTÃO Estoque Alto = Sim CNF 100%
Regra 3
SE DataHoje >= DataCancelamento+DiasCancelamento
E SituaçãoLoja = Cancelada
ENTÃO Venceu Tempo Cancelada = Sim CNF 100%
Regra 4
SE DataHoje < DataCancelamento+DiasCancelamento
E SituaçãoLoja = Cancelada
ENTÃO Venceu Tempo Cancelada = Não CNF 100%
Regra 5
SE QtdeVendidaNestaLoja >= abs(QtdeVendidaOutrasLojas/QtdeLojasAtivas)
ENTÃO Loja Vendeu Bem = Sim CNF 100%
Regra 6
SE QtdeVendidaNestaLoja < abs(QtdeVendidaOutrasLojas/QtdeLojasAtivas)
ENTÃO Loja Vendeu Bem = Não CNF 100%
Regra 7
SE QtdeVendidaTotal >=
((QtdeVendidaTotal+QtdeEstoqueTotal)/100)*IndiceVenda
ENTÃO Produto Vendeu Bem = Sim CNF 100%
Regra 8
SE QtdeVendidaTotal <
((QtdeVendidaTotal+QtdeEstoqueTotal)/100)*IndiceVenda
ENTÃO Produto Vendeu Bem = Não CNF 100%
Regra 9
SE QtdeEstoqueInicio > 0
E QtdeEstoqueFinal > 0
E SituaçãoLoja = Ativa
ENTÃO Produto Disponível no Período = Sim CNF 100%
Regra 10
SE Loja Vendeu Bem = Não
E Produto Vendeu Bem = Não
E Estoque Baixo = Sim
E Produto Disponível no Período = Sim
ENTÃO Solução = Cancelar CNF 100%
Regra 11
SE Loja Vendeu Bem = Não
E Produto Vendeu Bem = Sim
E Produto Disponível no Período = Sim
E Estoque Baixo = Sim
49
ENTÃO Solução = Cancelar CNF 100%
Regra 12
SE Venceu Tempo Cancelada = Sim
E Produto Vendeu Bem = Sim
E Estoque Alto = Sim
ENTÃO Solução = Reativar CNF 100%
Regra 13
SE Venceu Tempo Cancelada = Sim
E Produto Vendeu Bem = Não
E Estoque Baixo = Sim
ENTÃO Solução = Reativar CNF 100%
Regra 14
SE Produto Vendeu Bem = Não
E Venceu Tempo Cancelada = Sim
E Estoque Alto = Sim
ENTÃO Solução = Reativar CNF 100%
Regra 15
SE Venceu Tempo Cancelada = Não
ENTÃO Solução = Permanece Cancelada CNF 100%
Regra 16
SE Loja Vendeu Bem = Sim
ENTÃO Solução = Permanece Ativa CNF 100%
Regra 17
SE Loja Vendeu Bem = Não
E Produto Disponível no Período = DESCONHECIDO
E SituaçãoLoja = Ativa
ENTÃO Solução = Permanece Ativa CNF 100%
Regra 18
SE Produto Vendeu Bem = Não
E Loja Vendeu Bem = Não
E Produto Disponível no Período = Sim
E Estoque Alto = Sim
ENTÃO Solução = Permanece Ativa CNF 100%
50
REFERÊNCIAS BIBLIOGRÁFICAS
CANTU, Marco. Dominando o Delphi 5: a bíblia. Tradução João Eduardo Nobrega Tortello.
São Paulo: Makron Books, 2000. 860 p.
FEIGENBAUM, E. A. e McCORDUCK, P. The fifth generation: artificial intelligence and
Japan’s computer challenge to the world. New York: Addison-Wesley Publishing
Company, 1983. 334 p.
GENARO, Sérgio. Sistemas Especialistas: o conhecimento artificial. São Paulo: Editora
S.A., 1986.
GIARRATANO, Joseph C. Expert Systems: principles and programming. Boston: PWS
Publishing, 1993. 644 p.
HARMON, Paul; King, David. Sistemas Especialistas. Tradução Antônio Fernandes
Carpinteiro. Rio de Janeiro: Campus, 1988. 304 p.
HEINZLE, Roberto. Protótipo de uma ferramenta para criação de sistemas especialistas
baseados em regras de produção. 1995. 145 f. Dissertação (Mestrado em Engenharia de
Produção), Universidade Federal de Santa Catarina, Florianópolis.
KELLER, Robert. Tecnologia de sistemas especialistas: desenvolvimento e aplicação.
Tradução Reinaldo Castello. São Paulo: Makron, 1991. 292 p.
LEVINE, Robert I.; Drang, Diana E.; Barry, Edelson. Inteligência Artificial e Sistema
Especialista. São Paulo: McGraw-Hill, 1988.
LIA, Laboratório de Inteligência Artificial. Expert SINTA: Uma ferramenta para criação
de Sistemas Especialistas. Disponível em: <http://www.lia.ufc.br>. Acesso em 13 jun 2001.
MICHAELIS – Moderno Dicionário da Língua Portuguesa. Melhoramentos, 2001. Disponível
em: <http://www.uol.com.br/michaelis>. Acesso em 13 jun 2001.
51
MICROSOFT CORPORATION. Sql Server Books Online. Seattle: Microsoft, 1998.
PLANEJAMENTO: A importância do sistema de grade para o lojista. Passarela – Catálogo
de calçados e acessórios para lojistas de todo Brasil, Franca, n. 4, out. 2000.
RABUSKE, Renato Antônio. Inteligência artificial. Florianópolis: Editora da UFSC, 1995.
RIBEIRO, Horácio da Cunha e Sousa. Introdução aos sistemas especialistas. Rio de
Janeiro: Livros Técnicos e Científicos, 1987.
WATERMAN, D. A. A Guide to Expert Systems. Addison Wesley Publishing Company,
1986.
WAYMIRE, Richard; SAWTELL, Rick. Aprenda em 21 dias Microsoft SQL Server 7.0.
Tradução Edson Furmankiewicz. Rio de Janeiro: Campus, 1999. 789 p.
Download

da Monografia - Departamento de Sistemas e Computação