16 resultados para Programacao em logica

em Lume - Repositório Digital da Universidade Federal do Rio Grande do Sul


Relevância:

60.00% 60.00%

Publicador:

Resumo:

Modelos BDI (ou seja, modelos Beliefs-Desires-Intentions models) de agentes têm sido utilizados já há algum tempo. O objetivo destes modelos é permitir a caracterização de agentes utilizando noções antropomórficas, tais como estados mentais e ações. Usualmente, estas noções e suas propriedades são formalmente definidas utilizandos formalismos lógicos que permitem aos teóricos analisar, especificar e verificar agentes racionais. No entanto, apesar de diversos sistemas já terem sido desenvolvidos baseados nestes modelos, é geralmente aceito que existe uma distância significativa entre esta lógicas BDI poderosas e sistemas reais. Este trabalho defende que a principal razão para a existência desta distância é que os formalismos lógicos utilizados para definir os modelos de agentes não possuem uma semântica operacional que os suporte. Por “semântica operacional” entende-se tanto procedimentos de prova que sejam corretos e completos em relação à semântica da lógica, bem como mecanismos que realizem os diferentes tipos de raciocínio necessários para se modelar agentes. Há, pelo menos, duas abordagens que podem ser utilizadas para superar esta limitação dos modelos BDI. Uma é estender as lógicas BDI existentes com a semântica operacional apropriada de maneira que as teorias de agentes se tornem computacionais. Isto pode ser alcançado através da definição daqueles procedimentos de prova para as lógicas usadas na definição dos estados mentais. A outra abordagem é definir os modelos BDI utilizando formalismos lógicos apropriados que sejam, ao mesmo tempo, suficientemente poderosos para representar estados mentais e que possuam procedimentos operacionais que permitam a utilizaçao da lógica como um formalismo para representação do conhecimento, ao se construir os agentes. Esta é a abordagem seguida neste trabalho. Assim, o propósito deste trabalho é apresentar um modelo BDI que, além de ser um modelo formal de agente, seja também adequado para ser utilizado para implementar agentes. Ao invés de definir um novo formalismo lógico, ou de estender um formalismo existente com uma semântica operacional, define-se as noções de crenças, desejos e intenções utilizando um formalismo lógico que seja, ao mesmo tempo, formalmente bem-definido e computacional. O formalismo escolhido é a Programação em Lógica Estendida com Negação Explícita (ELP) com a semântica dada pelaWFSX (Well-Founded Semantics with Explicit Negation - Semântica Bem-Fundada com Negação Explícita). ELP com a WFSX (referida apenas por ELP daqui para frente) estende programas em lógica ditos normais com uma segunda negação, a negação explícita1. Esta extensão permite que informação negativa seja explicitamente representada (como uma crença que uma propriedade P não se verifica, que uma intenção I não deva se verificar) e aumenta a expressividade da linguagem. No entanto, quando se introduz informação negativa, pode ser necessário ter que se lidar com programas contraditórios. A ELP, além de fornecer os procedimentos de prova necessários para as teorias expressas na sua linguagem, também fornece um mecanismo para determinar como alterar minimamente o programa em lógica de forma a remover as possíveis contradições. O modelo aqui proposto se beneficia destas características fornecidas pelo formalismo lógico. Como é usual neste tipo de contexto, este trabalho foca na definição formal dos estados mentais em como o agente se comporta, dados tais estados mentais. Mas, constrastando com as abordagens até hoje utilizadas, o modelo apresentanto não é apenas uma especificação de agente, mas pode tanto ser executado de forma a verificar o comportamento de um agente real, como ser utilizado como mecanismo de raciocínio pelo agente durante sua execução. Para construir este modelo, parte-se da análise tradicional realizada na psicologia de senso comum, onde além de crenças e desejos, intenções também é considerada como um estado mental fundamental. Assim, inicialmente define-se estes três estados mentais e as relações estáticas entre eles, notadamente restrições sobre a consistência entre estes estados mentais. Em seguida, parte-se para a definição de aspectos dinâmicos dos estados mentais, especificamente como um agente escolhe estas intenções, e quando e como ele revisa estas intenções. Em resumo, o modelo resultante possui duas características fundamentais:(1) ele pode ser usado como um ambiente para a especificação de agentes, onde é possível definir formalmente agentes utilizando estados mentais, definir formalmente propriedades para os agentes e verificar se estas propriedades são satifeitas pelos agentes; e (2) também como ambientes para implementar agentes.

Relevância:

10.00% 10.00%

Publicador:

Resumo:

O objetivo deste trabalho é a proposta de uma arquitetura especial para simulação lógica (AESL). As técnicas e modelos utilizados no processo de simulação lógica são brevemente revistos. É definida uma taxonomia para AESL sob a qual são analisadas diversas propostas de AESL relatadas na literatura. Uma taxonomia já existente é comparada com a proposta. A AESL definida é programável para diferentes algoritmos de simulação lógica. O detalhamento da AESL é, então, incrementado pela implementação de um algoritmo particular. Uma linguagem de simulação discreta é utilizada na construção de um modelo da arquitetura. Os resultados da simulação deste modelo permitem avaliar o desempenho da AESL e otimizar sua estrutura. Uma comparação com outras arquiteturas conclui a análise.

Relevância:

10.00% 10.00%

Publicador:

Resumo:

Este trabalho apresenta um método para detectar falhas no funcionamento de máquinas rotativas baseado em alterações no padrão de vibração do sistema e no diagnóstico da condição de operação, por Lógica Fuzzy. As modificações ocorridas são analisadas e servem como parâmetros para predizer falhas incipientes bem como a evolução destas na condição de operação, possibilitando tarefas de manutenção preditiva. Utiliza-se uma estrutura mecânica denominada de Sistema Rotativo (Figura 1), apropriada para as simulações das falhas. Faz-se a aquisição de dados de vibração da máquina usando-se um acelerômetro em chip biaxial de baixa potência. As saídas são lidas diretamente por um contador microprocessador não requerendo um conversor A/D. Um sistema de desenvolvimento para processamento digital de sinais, baseado no microprocessador TMS320C25, o Psi25, é empregado na aquisição dos sinais de vibração (*.dat), do Sistema Rotativo. Os arquivos *.dat são processados através da ferramenta matemática computacional Matlab 5 e do programa SPTOOL. Estabelece-se o padrão de vibração, denominado assinatura espectral do Sistema Rotativo (Figura 2) Os dados são analisados pelo sistema especialista Fuzzy, devidamente calibrado para o processo em questão. São considerados, como parâmetros para a diferenciação e tomada de decisão no diagnóstico do estado de funcionamento pelo sistema especialista, a freqüência de rotação do eixo-volante e as amplitudes de vibração inerentes a cada situação de avaria. As falhas inseridas neste trabalho são desbalanceamentos no eixovolante (Figura 1), através da inserção de elementos desbalanceadores. A relação de massa entre o volante e o menor elemento desbalanceador é de 1:10000. Tomando-se como alusão o conhecimento de especialistas no que se refere a situações normais de funcionamento e conseqüências danosas, utilizam-se elementos de diferentes massas para inserir falhas e diagnosticar o estado de funcionamento pelo sistema fuzzy, que apresenta o diagnóstico de formas qualitativa: normal; falha incipiente; manutenção e perigo e quantitativa, sendo desta maneira possível a detecção e o acompanhamento da evolução da falha.

Relevância:

10.00% 10.00%

Publicador:

Resumo:

Neste estudo são discutidos alguns aspectos relacionados à escolha da primeira linguagem de programação em currículos de ciência da computação, com interesse especial em Pascal e Java. A primeira linguagem é amplamente adotada para ensinar programação aos novatos, enquanto a segunda está ganhando popularidade como uma linguagem moderna e abrangente, que pode ser usada em muitas disicplinas ao longo de um curso degraduação em computação como ferramenta para ensinar desde recursos básicos de programação até tópicos mais avançados. Embora vários problemas quanto ao ensino de Java, com a primeira linguagem de programação, possam ser apontadas, consideramosque Java é uma boa escolha, visto que (a) oferece apoio a importantes questões conceituais e tecnológicos e, (b) é possível contornar algumas complexidades da linguagem e da plataforma Java para torná-las mais adequadas à alunos iniciantes. Além disso, considerando a grande popularidade de Pascal nos currículos de cursos de computação, uma eventual adoção de Java conduz à outro problema: a falta de professores aptos a lecionar programação orientada a objetos. Sugerimos que este problema de migração de Pascal para Java seja enfrentado através de smplificação do ambiente de desenvolvimento de programas, uso de um pacote com classes que facilitam a entrada e saída, e o desenvolvimento de um catálogo comparativo de programas implementados em ambas as linguagens. Neste estudo também é apresentado o JEduc, um IDE muito simples com o objetivo de dar suporte ao ensino da linguagem de programação orientada a objetos Java aos novatos. Oferece componentes desenvolvidos em Java que integram edição, compilação e execução de programas Java. Além das funcionalidades comuns a um IDE, JEduc foi desenvolvido para gir como uma ferramente pedagógica: simplifica a maioria das mensagens do compilador e erros da JRE, permite a inserção de esqueletos de comandos, e incorpora pacotes especiais para esconder alguns detalhes sintáticos e semânticos indesejáveis.

Relevância:

10.00% 10.00%

Publicador:

Resumo:

Este trabalho descreve a aplicação da Programação Genética, uma técnica de Computação Evolucionária, ao problema da Síntese de Fala automática. A Programação Genética utiliza as técnicas da evolução humana para descobrir programas bem adaptados a um problema específico. Estes programas, compostos de instruções, variáveis, constantes e outros elementos que compõe uma linguagem de programação, são evoluídos ao longo de um conjunto de gerações. A Síntese de Fala, consiste na geração automática das formas de ondas sonoras a partir de um texto escrito. Uma das atividades mais importantes, é realizada através da conversão de palavras e letras para os sons da fala elementares (fonemas). Muitos sistemas de síntese são implementados através de regras fixas, escritas por programadores humanos. Um dos mais conhecidos sistemas de síntese é o FESTIVAL, desenvolvido pela Universidade de Edimburgh, usando a linguagem de programação funcional LISP e um número fixo de regras. Neste trabalho, nós exploramos a possibilidade da aplicação do paradigma da Programação Genética, para evoluir automaticamente regras que serão adotadas para implementação do idioma Português na ferramenta FESTIVAL, desenvolvido no projeto SPOLTECH (CNPq – NSF cooperação entre UFRGS e Universidade do Colorado). A modelagem do problema, consiste na definição das regras de pronúncia do Português Brasileiro, que a implementação do sistema FESTIVAL pronuncia erradamente, já que o mesmo foi implementado primariamente para o idioma Inglês. A partir destas regras, o sistema de Programação Genética, desenvolvido neste trabalho, evolui programas que constituem boas soluções para a conversão de letras para fonemas. A descrição dos resultados obtidos, cobre detalhes sobre a evolução das soluções, complexidade e regras implementadas, representadas pelas soluções mais bem adaptadas; mostrando que a Programação Genética, apesar de ser complexa, é bastante promissora.

Relevância:

10.00% 10.00%

Publicador:

Resumo:

A escolha do sistema de terminação de suínos e controle de dejetos, que melhor contemple os valores sociais atuais, implica considerar, simultaneamente, pelo menos dois aspectos disciplinarmente distintos - o econômico e o ambiental - o que eleva a complexidade da escolha. Conjuntos fuzzy, por traduzir ordenadamente a percepção expressa pela linguagem, o entendimento relevante porém impreciso da realidade, é uma ferramenta conveniente para o estudo desta situação, a respeito da qual diversos especialistas possuem apreciável conhecimento parcial. Analisa-se o custo de produção de terminadores de suínos da encosta do Vale do Caí, utilizando-se conjuntos fuzzy para identificar causas necessárias e/ou suficientes para o alcance de um baixo custo de produção. Posteriormente, é apresentado um modelo fuzzy para a combinação dos custos de produção com as percepções de suinocultores e de agrônomos quanto ao impacto ambiental da suinocultura.

Relevância:

10.00% 10.00%

Publicador:

Resumo:

Sistemas de previsão de cheias podem ser adequadamente utilizados quando o alcance é suficiente, em comparação com o tempo necessário para ações preventivas ou corretivas. Além disso, são fundamentalmente importantes a confiabilidade e a precisão das previsões. Previsões de níveis de inundação são sempre aproximações, e intervalos de confiança não são sempre aplicáveis, especialmente com graus de incerteza altos, o que produz intervalos de confiança muito grandes. Estes intervalos são problemáticos, em presença de níveis fluviais muito altos ou muito baixos. Neste estudo, previsões de níveis de cheia são efetuadas, tanto na forma numérica tradicional quanto na forma de categorias, para as quais utiliza-se um sistema especialista baseado em regras e inferências difusas. Metodologias e procedimentos computacionais para aprendizado, simulação e consulta são idealizados, e então desenvolvidos sob forma de um aplicativo (SELF – Sistema Especialista com uso de Lógica “Fuzzy”), com objetivo de pesquisa e operação. As comparações, com base nos aspectos de utilização para a previsão, de sistemas especialistas difusos e modelos empíricos lineares, revelam forte analogia, apesar das diferenças teóricas fundamentais existentes. As metodologias são aplicadas para previsão na bacia do rio Camaquã (15543 km2), para alcances entre 10 e 48 horas. Dificuldades práticas à aplicação são identificadas, resultando em soluções as quais constituem-se em avanços do conhecimento e da técnica. Previsões, tanto na forma numérica quanto categorizada são executadas com sucesso, com uso dos novos recursos. As avaliações e comparações das previsões são feitas utilizandose um novo grupo de estatísticas, derivadas das freqüências simultâneas de ocorrência de valores observados e preditos na mesma categoria, durante a simulação. Os efeitos da variação da densidade da rede são analisados, verificando-se que sistemas de previsão pluvio-hidrométrica em tempo atual são possíveis, mesmo com pequeno número de postos de aquisição de dados de chuva, para previsões sob forma de categorias difusas.

Relevância:

10.00% 10.00%

Publicador:

Resumo:

A programação paralela é sem dúvida mais complexa do que a programação seqüencial. O controle de múltiplos processos e de suas interações são as principais razões para tal complexidade. Apesar da existência de algumas ferramentas que atendem à fase de desenvolvimento de programas paralelos, a complexidade é normalmente passada para as ferramentas paralelas, isto é, as ferramentas não são de fácil utilização. Assim, existe uma necessidade de ambientes e ferramentas realmente fáceis de usar no âmbito da programação paralela. Embora existam algumas ferramentas interessantes, inclusive algumas comerciais, seu uso permanece insuficiente, em parte devido à complexidade na utilização de algumas delas, em parte devido ao seu uso específico em determinadas plataformas. Portanto, existe ainda um grande campo de estudo no que diz respeito a melhorias de projeto sobre ferramentas existentes e desenvolvimento de ferramentas com um maior número de recursos. Provavelmente, a ferramenta paralela mais necessária aos programadores é o depurador paralelo. Por sua vez, ferramentas de depuração paralela estão entre as mais complexas de se desenvolver e talvez isso explique o motivo pelo qual poucas têm sido efetivamente utilizadas. Este trabalho descreve uma contribuição no campo da depuração paralela através da análise de interfaces de depuração paralela e da proposta de um modelo. A partir deste modelo, uma interface de depuração paralela – PADI (PArallel Debugger Interface) foi desenvolvida e seu principal objetivo é o de oferecer uma interface intuitiva e de fácil utilização. O modelo proposto e conseqüentemente a ferramenta PADI tratam da depuração paralela simbólica on-line. A depuração on-line trata do oferecimento de acesso aos símbolos do programa, como variáveis e registradores. A depuração on-line diferencia-se da off-line pelo tipo de interação com a execução do programa. A depuração on-line oferece interação direta com a aplicação, enquanto que a off-line interage com um arquivo de monitoração gravado durante a execução da aplicação paralela. A depuração on-line é similar à depuração seqüencial tradicional e, conseqüentemente, é de mais fácil utilização por parte da maioria dos programadores.

Relevância:

10.00% 10.00%

Publicador:

Resumo:

Em vista da maior complexidade da programação paralela e distribuída em relação à programação de ambientes centralizados, novas ferramentas vêm sendo construídas com o objetivo de auxiliar o programador desses ambientes a desempenhar sua tarefa de formas mais eficazes e produtivas. Uma das ferramentas que há algum tempo tem sido usada na programação centralizada e aos poucos está sendo empregada também na programação concorrente é a programação visual. A programação visual se vale da presença de elementos visuais na especificação dos programas como peças chaves do processo de desenvolvimento de software. No caso específico da programação concorrente, a programação visual é especialmente útil pela capacidade que os gráficos têm de representar de forma mais adequada estruturas bidimensionais. Um programa concorrente, por relacionar no espaço diversos elementos com seus próprios fluxos de execução, faz surgir duas dimensões de análise que são mais difíceis de serem observadas através de programas textuais. Atualmente existem ferramentas de programação visual paralela e distribuída, mas a ênfase é dada na programação paralela, sem muita atenção a aplicações de sistemas abertos ou cliente-servidor. Além disso, tais ferramentas sofrem da falta de apoio à engenharia do software. Considerando essas deficiências, este trabalho apresenta uma ferramenta de programação visual para o desenvolvimento de aplicações compostas por objetos distribuídos que ofereça também a possibilidade de aplicar os principais conceitos da engenharia de software, como reutilização e orientação a objeto. Nesta ferramenta, o programador especifica de maneira visual a estrutura do seu programa, insere o código textual para a lógica da aplicação e o ambiente se encarrega do tratamento da distribuição e da comunicação de mais baixo nível. A aplicação é representada como um grafo dirigido, onde os nodos representam os objetos distribuídos e os arcos indicam os relacionamentos existentes entre esses objetos. A especificação dos programas é modular, baseando-se na reunião de componentes reutilizáveis, o que torna o sistema altamente configurável e extensível. Tanto a implementação da ferramenta quanto o código das aplicações geradas usam a linguagem de programação Java. A linguagem de programação visual projetada não especifica detalhes a respeito de como irá funcionar a comunicação e distribuição dos objetos. Portanto, foram implementados componentes para comunicação e outros recursos de programação distribuída, como locks e dados globais para serem usados nas aplicações. Para validar os principais objetivos da ferramenta, foram implementados alguns exemplos de aplicações distribuídas, como um pequeno sistema de bate-papo.

Relevância:

10.00% 10.00%

Publicador:

Resumo:

A linguagem de programação Java vem sendo uma das escolhidas para a implementação de aplicações compostas por objetos distribuídos. Estas aplicações caracterizam-se por possuir comportamento complexo e, portanto, são mais difíceis de depurar e refinar para obter melhores desempenhos. Considerando a necessidade do desenvolvimento de uma ferramenta de monitoração para o modelo de objetos distribuídos, que colete informações mais detalhadas sobre a execução da aplicação, é apresentado neste trabalho um ambiente de monitoração de aplicações distribuídas escritas em Java, o DOMonitor. Um dos objetivos do DOMonitor é obter o comportamento que a aplicação apresenta durante a execução, possibilitando a detecção de comportamentos equivocados e seu respectivo refinamento. O DOMonitor é voltado para aplicações compostas por objetos distribuídos e caracteriza-se por identificar principalmente: (i) o comportamento dinâmico das threads; (ii) a utilização dos métodos de sincronização; e (iii) a comunicação entre os entes distribuídos da aplicação. O DOMonitor está fundamentado em quatro premissas: (i) ser transparente para o usuário, não exigindo anotações no código fonte; (ii) apresentar uma organização modular, e por isto ser flexível e expansível; (iii) ser portável, não exigindo nenhuma alteração na Maquina Virtual Java; e (iv) operar de forma a garantir a ordem dos eventos previstos pelo programa. Os dados produzidos pelo DOMonitor podem ser utilizados com diversas finalidades tais como visualização da execução, escalonamento e como suporte à execução de aplicações móveis. Para comprovar esta versatilidade, foi proposta a integração do sistema a dois outros projetos, o Pajé e o ISAM. O projeto ISAM utilizará os dados monitorados para tomadas de decisão durante o curso da execução e o projeto Pajé permite a visualização gráfica das características dinâmicas de uma aplicação Java.

Relevância:

10.00% 10.00%

Publicador:

Resumo:

Este trabalho apresenta um mapeamento centrado nas construções não usuais da linguagem Nautilus, para a linguagem convencional, no caso Java, mantendo propriedades com atomicidade que são requisitos da semântica formal da linguagem. Nautilus é originalmente uma linguagem de especificação baseada em objetos, textual que suporta objetos concorrentes e não deterministas. Desde então a linguagem foi modificada aom extensões como classes e uma notação diagramática, além de se investigar seu uso como linguagem de programação. Suas construções incomuns (reificação, agregação, etc.) são baseados em seu domínio semântico: Automâtos Não Sequenciais. Este domíno satisfaz composição diagonal, i.e refinamentos se compõem (verticalmente) refletindo uma descrição gradual de sistemas, envolvendo múltiplos níveis de abstração, e distribui-se através de combinadores (horizontalmente), o que significa que o refinamento de um sistema composto é a combinação de do refinamento de suas partes.O trabalho inclui um mapeamento inicial de um subconjunto da linguagem(objeto base, reificação, agregação e visão), uma versão ampliada para abranger mais construções( interação e classes), e uma versão refinada mais concorrente e sugestões de modificação na linguagem.

Relevância:

10.00% 10.00%

Publicador:

Resumo:

Esse trabalho de dissertação está incluído no contexto das pesquisas realizadas no Grupo de Processamento Paralelo e Distribuído da UFRGS. Ele aborda as áreas da computação de alto desempenho, interfaces simples de programação e de sistemas de interconexão de redes velozes. A máquina paralela formada por agregados (clusters) tem se destacado por apresentar os recursos computacionais necessários às aplicações intensivas que necessitam de alto desempenho. Referente a interfaces de programação, Java tem se mostrado uma boa opção para a escrita de aplicações paralelas por oferecer os sistemas de RMI e de soquetes que realizam comunicação entre dois computadores, além de todas as facilidades da orientação a objetos. Na área a respeito de interconexão de rede velozes está emergindo como uma tentativa de padronização a nova tecnologia Infiniband. Ela proporciona uma baixa latência de comunicação e uma alta vazão de dados, além de uma série de vantagens implementadas diretamente no hardware. É neste contexto que se desenvolve o presente trabalho de dissertação de mestrado. O seu tema principal é o sistema Aldeia que reimplementa a interface bastante conhecida de soquetes Java para realizar comunicação assíncrona em agregados formados por redes de sistema. Em especial, o seu foco é redes configuradas com equipamentos Infiniband. O Aldeia objetiva assim preencher a lacuna de desempenho do sistema padrão de soquetes Java, que além de usar TCP/IP possui um caráter síncrono. Além de Infiniband, o Aldeia também procura usufruir dos avanços já realizados na biblioteca DECK, desenvolvida no GPPD da UFRGS. Com a sua adoção, é possível realizar comunicação com uma interface Java sobre redes Myrinet, SCI, além de TCP/IP. Somada a essa vantagem, a utilização do DECK também proporciona a propriedade de geração de rastros para a depuração de programas paralelos escritos com o Aldeia. Uma das grandes vantagens do Aldeia está na sua capacidade de transmitir dados assincronamente. Usando essa técnica, cálculos da aplicação podem ser realizados concorrentemente com as operações pela rede. Por fim, os canais de dados do Aldeia substituem perfeitamente aqueles utilizados para a serialização de objetos. Nesse mesmo caminho, o Aldeia pode ser integrado à sistemas que utilizem a implementação de soquetes Java, agora para operar sobre redes de alta velocidade. Palavras-chave: Arquitetura Infiniband, agregado de computadores, linguagem de programação Java, alto desempenho, interface de programação.

Relevância:

10.00% 10.00%

Publicador:

Relevância:

10.00% 10.00%

Publicador: