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.