DESENVOLVIMENTO DE UMA APLICAÇÃO ANDROID CAPAZ DE ESTIMAR A PRODUTIVIDADE DE TRIGO EM FUNÇÃO DA ADUBAÇÃO NITROGENADA UTILIZANDO MODELAGEM NEURO-FUZZY Leonardo Fernandes Cherubini Aluno do IFMT, Campus Cuiabá Aldo Antônio Vieira da Silva Prof. Dr. do IFMT, Campus Cuiabá, orientador Inara Aparecida Ferrer Silva Prof.ª Dr.ª do IFMT, Campus Cuiabá, orientadora Resumo Este trabalho tem como objetivo descrever o desenvolvimento de uma aplicação para dispositivos móveis do sistema operacional Android, sendo a mesma capaz de elaborar modelos de predição em sistemas complexos e estimar parâmetros desejados. Para a adaptação deste trabalho para dispositivos móveis e desenvolvimento da aplicação utilizou-se em um modelo de inferência adaptativo neuro-fuzzy para a estimação da produtividade de grãos com o objetivo de estimar a produtividade e gerar gráficos demonstrativos dos mesmos. Para o desenvolvimento, desta aplicação para o sistema Android, serão utilizadas as bibliotecas Java Neuroph e NefClass-J para o treinamento neuro-fuzzy do aplicativo móvel. E para a geração de gráficos será estudada a biblioteca Androidplot. Espera-se que a adaptação deste aplicativo capaz de estimar a produção de grãos, para dispositivos móveis, contribua para simplificar o acesso de agricultores e da comunidade. Palavras-chave: Android, Neuro-Fuzzy, Java, Produtividade de grãos. 1. Introdução Sistemas neuro-fuzzy vem sendo utilizados em diferentes áreas, pelas características que possuem, de desenvolver modelos de predição e estimar parâmetros. Como exemplo, podem ser vistos os trabalhos de (BUCENE; RODRIGUES, 2004, p. 326), (KASHANINEJAD; DEHGHANI; KASHIRI, 2009, p. 602), (ALVAREZ, 2009, p. 70) e (CARVALHO; ROCHA; UCHA, 2009, p. 46), que apresentam modelos de predição utilizando redes neurais e lógica fuzzy. Este trabalho apresenta uma proposta de adaptação do trabalho desenvolvido por (SILVA, 2014) para dispositivos móveis. Um dos motivos desta proposta é o crescimento expressivo da utilização de dispositivos móveis pela comunidade, facilitando o manuseio deste sistema neuro-fuzzy para o produtor e outros usuários. Com a portabilidade apresentada Página 192 por um dispositivo móvel, o usuário terá maior facilidade no manuseio desta aplicação, podendo a qualquer momento e em qualquer lugar executar as funcionalidades presentes na mesma e analisar seus respectivos resultados tanto em valores numéricos como em gráficos demonstrativos. O sistema operacional Android foi escolhido para este trabalho pelo motivo de ser um sistema gratuito, disponível para a comunidade de desenvolvedores e conhecido em ambientes acadêmicos. Mas o principal motivo é a sua compatibilidade com bibliotecas da linguagem Java, pois as duas bibliotecas utilizadas neste trabalho pertencem a esta linguagem de programação. Este presente trabalho utilizará um kit de desenvolvimento nativo do Android que utiliza a linguagem de programação Java. As bibliotecas responsáveis por criar o sistema neuro-fuzzy serão a Neuroph e a NefClass-J. E para a geração de gráficos será utilizada a biblioteca Androidplot. Sendo assim este trabalho propõem a estimativa de produção de grãos para aplicações móveis e possivelmente será utilizado para diversas culturas. 2. Materiais 2.1. Neuro-Fuzzy Como pode ser visto em (NAUCK, 1995) a arquitetura neuro-fuzzy é a combinação dos modelos de redes neurais e lógica fuzzy. Em um sistema nebuloso (fuzzy) é possível o aproximar as tomadas de decisões computacionais ao da mente humana. A estrutura de tomada de decisões nebulosos não se limitam apenas a “sim” e “não”, mas se expande a decisões mais abstratas consistindo em um meio termo entre as decisões binárias (SILVA, 2005). Já as redes neurais consistem em uma arquitetura computacional baseada no sistema nervoso dos seres vivos, possuindo a capacidade de aquisição e manutenção do conhecimento a partir de experiências anteriores fornecidas pelo ser humano (SILVA; SPATTI; FLAUZINO, 2010, p. 399). Os sistemas híbridos ou neuro-fuzzy consistem na combinação destas duas metodologias. 2.2. Fundamentos da plataforma Java e as APIs Neuro-Fuzzy Página 193 A tecnologia Java consiste em uma plataforma de desenvolvimento criada pela empresa Sun Microsystem. Seu lançamento oficial ocorreu no ano de 1995 e a principal proposta desta plataforma foi o mercado de dispositivos eletrônicos. A proposta apresentada pela plataforma Java estava muito distante da realidade dos aparelhos eletrônicos da época e por este motivo o Java acabou não difundindo neste mercado e sim no mercado de ambientes web (Oracle Corporation). A plataforma Java acabou se tornando um padrão mundial para o desenvolvimento de sistemas web, aplicativos de celular, jogos e softwares corporativos, utilizando, para isso, uma linguagem de programação orientada a objetos, uma extensa biblioteca e um ambiente de execução seguro e portável. A plataforma Java é composta pela linguagem de programação Java, por uma extensa API e por uma máquina virtual Java. É a partir da máquina virtual Java que se obtém a portabilidade da plataforma. A máquina virtual traduz instruções para um ambiente específico, tornando-a independente de plataforma. Para a criação de uma aplicação Java, primeiro é necessário a criação do código fonte. Logo após, este código é compilado para um arquivo bytecode, sendo este, a instrução que será executada pela máquina virtual, como pode ser visto na Figura 1. Figura 1: Execução de uma aplicação Java Fonte: Elaborada pelo autor. Cada instrução bytecode tem o tamanho de um byte, sendo assim, a máquina virtual Java pode rodar até 256 bytecodes diferentes. Com isso, a máquina virtual pode ser implementada em dispositivos com pouca capacidade. O Java foi escolhido para este presente trabalho pelo motivo de ser uma tecnologia bastante difundida. Por este motivo é possível encontrar muitos tipos distintos de bibliotecas para esta linguagem decorrente ao número de desenvolvedores e pelo tempo que de Página 194 experiência tanto em ambientes corporativos com em ambientes acadêmicos. Para este trabalho serão estudadas as biliotecas Java Neuroph e NefClass-J. 2.1.1. Neuroph Neuroph (NEUROPH, 2014) é uma estrutura de rede neural criada para a linguagem Java com o objetivo de desenvolver arquiteturas de redes neurais comuns. Ela apresenta uma estrutura bem elaborada, é gratuita e possui um número pequeno de classes básicas que correspondem a conceitos básicos NN. Neuroph simplifica o desenvolvimento de redes neurais, fornecendo uma biblioteca Java de redes neurais e ferramentas gráfica para a criação e treinamento da mesma. Esta biblioteca também apresenta uma classe neuro-fuzzy que será o foco deste artigo. 2.1.2 NefClass-J NefClass-J é uma ferramenta de classificação neuro-fuzzy escrito em Java. Como seus predecessores NefClass-PC e NefClass-X é baseado no modelo NefClass. Esta biblioteca será o grande foco deste artigo por ser totalmente desenvolvida para o modela neuro-fuzzy e por ser compatível com o sistema Android. O NefClass já é bastante difundido em ambientes acadêmicos podendo ser encontrada em muitos trabalhos, mas contém pouca documentação e também é uma tecnologia muito antiga. 2.1. Fundamentos do sistema operacional Android O Android é um sistema operacional desenvolvido pela Google com o objetivo de funcionar em diferentes plataformas móveis, como celulares, televisores, relógios, geladeiras e até mesmo em alguns modelos de microcontroladores. As principais características da plataforma Android consiste no seu sistema operacional gratuito e no código fonte aberto para a comunidade de desenvolvedores. A plataforma Android é baseada no kernel 2.6 do Linux, sendo este responsável pelo gerenciamento de threads, memória e na segurança do sistema. A arquitetura da plataforma Android é composta por diferentes camadas, isto é: Applications, Application Framework, Libraries, Android Runtime e o kernel do Linux, conforme representado na Figura 2: Página 195 Figura 2: Arquitetura da plataforma Android (ELinux, 2014). Fonte: <http://elinux.org/Android_Architecture> Onde: A camada Applications são compostas por aplicações nativas do Sistema Android que constituem em aplicativos de calendário, navegador de internet, e-mails, programa SMS como muitos outros; A camada Application Framework consiste em componentes da plataforma utilizados para a execução de novas aplicações. São estes, gerenciadores de serviços e de notificações; A camada Libraries correspondem nas bibliotecas nativas do sistema operacional Android. Entre elas estão as bibliotecas de banco de dados, OpenGL, acelerômetro, fontes bitmaps e multimídia; A camada Android Runtime consiste nos dois componentes necessários para a execução dos aplicativos. O primeiro é o Core Libraries que fornece a API Java para o Página 196 desenvolvimento das aplicações. O segundo é a máquina virtual Dalvik responsável pela execução das aplicações Android, e sendo esta exemplificada com mais detalhes no tópico 3.1; Por fim, o kernel Linux 2.6 fornece os serviços do núcleo da plataforma Android. As aplicações do sistema Android são desenvolvidas com o uso da linguagem de programação Java. Mas diferente das aplicações Java convencionais que executa na máquina virtual Java, uma aplicação Android roda em uma máquina virtual Dalvik. O desenvolvimento de uma aplicação Android consiste na criação de códigos fonte Java entre outros arquivos, como XML e diferentes formatos de imagem. Logo após criação de um projeto Android com os arquivos citados anteriormente, o código fonte Java é compilado para um arquivo bytecode. Depois do arquivo Java ser compilado, todos os arquivos do projeto são convertidos para o formato Dalvik Executable (extensão .dex), podendo assim ser executado pela máquina virtual Dalvik, conforme ilustra a Figura 3. Figura 3: Execução de uma aplicação Android. Fonte: Elaborada pelo autor. A máquina virtual Dalvik foi desenvolvida pela Google e tem como seu principal autor Dan Bornstein. Dalvik foi projetada exclusivamente para o sistema Android e é otimizada para execução em plataformas móveis. Esta máquina virtual é otimizada para utilizar menos memória e é projetada para que Página 197 diversas instâncias de máquinas virtuais executem ao mesmo tempo de forma eficiente. A aplicação proposta para este trabalho tem como objetivo acrescentar o modelo neurofuzzy criado em (SILVA, 2014) em uma aplicação Android. Em linhas gerais, a aplicação receberá dados de entrada de um produtor, utilizará as ferramentas neuro-fuzzy para o estudo e treinamento para estimar novos valores, e logo após, apresentará estes novos valores e um gráfico demonstrativo. 2.1.2. AndroidPlot AndroidPlot (ANDROIDPLOT, 2014) é uma biblioteca para a criação de gráficos dinâmicos e estáticos dentro de um projeto nativo Android. Ele foi projetado desde o início para a plataforma Android e é compatível com todas as versões do Android de 1.6 em diante. Uma das propostas para este artigo é o desenvolvimento integral do sistema neuro-fuzzy em uma aplicação Android sem depender de aplicações externas. O usuário vai entrar com os dados no aplicativo Android e o mesmo executará o modelo neuro-fuzzy no próprio dispositivo Android utilizando as bibliotecas Java citadas anteriormente. 3. Métodos A aplicação a ser desenvolvida neste trabalho, é uma adaptação do trabalho de (SILVA, 2014) onde utilizou-se como metodologia o Sistema de Inferência Neuro Fuzzy Adaptativo (ANFIS) para estimar a produção de trigo com base em doses de nitrogênio. Para elaborar os testes da aplicação, utilizou-se os dados experimentais de (TEIXEIRA FILHO, 2010, p. 797). A contribuição deste trabalho é adaptar a aplicação de (SILVA, 2014) para dispositivos móveis. Uma aplicação Android é desenvolvida usando a linguagem Java, e também capaz de importar bibliotecas Java. Sendo assim, este trabalho aborda a utilização da biblioteca Java de ANFIS (Adaptive Neuro Fuzzy Inference System) Nefclass-J e a rede neural Neuroph. Na Figura 4(a), é apresentado o protótipo da tela inicial da presente aplicação. Nesta tela o usuário deverá entrar com os dados da dose de nitrogênio e sua respectiva produtividade em grãos. Página 198 Figura 4: Protótipo das telas da aplicação Fonte: Elaborada pelo autor. Logo após a entrada dos dados, o usuário efetuará a metodologia neuro-fuzzy clicando no botão “Calcular”. Com os dados dentro da aplicação, a biblioteca Java efetuará o estudo dos dados e criará um aprendizado baseado nos valores digitados. Estas bibliotecas Java podem ser a Nefclass-J ou Neuroph, pois ambas as bibliotecas trabalham com o modelo neuro-fuzzy. Com o treinamento neuro-fuzzy terminado, a tela representada na Figura 4(b) mostrará um gráfico, gerado pela biblioteca Androidploit, predizendo como será a medida ideal para as doses de nitrogênio. Logo abaixo do gráfico, existe um campo de texto onde o Página 199 usuário poderá entrar com um determinado valor de uma dose de nitrogênio. Com os dados digitados, o usuário deverá clicar no botão para a aplicação exibir qual é a respectiva produtividade de grãos do valor da dose de nitrogênio estabelecida pelo usuário. 4. Considerações Finais Até o momento, as bibliotecas Java Nefclass-J e Neuroph estão sendo avaliadas para estabelecer qual apresenta melhor precisão de resultado para o modelo neuro-fuzzy. A biblioteca Neuroph apresenta uma quantidade maior de documentação pelo fato de ser uma tecnologia recente. Mas esta biblioteca não é especializada em neuro-fuzzy, contendo apenas uma classe responsável por trabalhar com este modelo. A biblioteca NefClass-J foi criada especialmente para o modelo neuro-fuzzy, mas apresenta uma documentação muito antiga e muito limitada. Apesar das dificuldades citadas anteriormente, a NefClass-J apresenta uma grande quantidade de trabalhos acadêmicos e maior experiência no desenvolvimento de sistemas neuro-fuzzy. Para este artigo, o principal foco é a utilização da NefClass-J diretamente no projeto Android associado a biblioteca Androidplot. Referências ALVAREZ, Roberto. Predicting average regional yield and production of wheat in the Argentine Pampas by an artificial neural network approach. European Journal of Agronomy, Amsterdam, v. 30, n. 2, p. 70 -77, 2009. ANDROIDPLOT. Documentação da biblioteca Androidplot. Disponível em: <http://androidplot.com/docs/>. Acesso: 20 de Junho de 2014. BUCENE, Luciana Corpas; RODRIGUEZ, Luiz. HENRIQUE Antunes. Utilização de redes neurais artificiais para a avaliação de produtividade do solo, visando classificação de terras para irrigação. Revista Brasileira de Engenharia Agrícola e Ambiental, Campina Grande, v. 8, n. 2-3, p. 326-329, 2004. CARVALHO, Claudia Ceskö Nolasco; ROCHA, Washington Franca; UCHA, José Martin. Mapa digital de solos: uma proposta metodológica usando inferência fuzzy. Revista Brasileira de Engenharia Agrícola e Ambiental, Campina Grande, v. 13, n. 1, p. 46-55, 2009. ELINUX. Android Architecture. Disponível em: <http://elinux.org/Android_Architecture>. Acesso em: 20 de Julho de 2014. KASHANINEJAD, Mahdi; DEHGHANI, Amir Aahmad; KASHIRI, Mahboobeh. Modeling of wheat soaking using two artificial neural networks (MLP and RBF). Journal of Food Engineering, Oxford, v. 91, n. 4, p. 602-607, 2009. Página 200 NAUCK, Detlef and KRUSE, Rudolf. NEFCLASS - A Neuro-Fuzzy Approach for the Classification of Data. ACM Symposium on Applied Computing. ACM Press. Nashville, Feb 26-28, 1995. NEUROPH. Java Neural Network Framework. Disponível em: <http://neuroph.sourceforge.net/features.html>. Acesso: 22 de Junho de 2014. SILVA, Aldo Antônio Vieira; SILVA, Inara Aparecida Ferrer; TEIXEIRA FILHO, Marcelo Carvalho Minhoto; BUZETTI, Salatier; TEIXEIRA, Marcelo Carvalho Minhoto. Estimativa da produtividade de trigo em função da adubação nitrogenada utilizando modelagem neuro fuzzy. Revista Brasileira de Engenharia Agrícola e Ambiental, Campina Grande, v. 18, n. 2, p. 180–187, 2014. Disponível em: <http://www.agriambi.com.br/revista/v18n02/v18n02a08.pdf >. Acesso em: 12 jan. 2014. SILVA, Ivan Silva. Material Didático da Disciplina Sistemas Fuzzy (SEL5755). Departamento de Engenharia Elétrica – EESC. Universidade de São Paulo, São Carlos, 2005. SILVA, Ivan Nunes; SPATTI, Danilo Hernane; FLAUZINO, Rogério Andrade. Redes neurais artificiais: para engenharia e ciências aplicadas. São Paulo: Artliber, 2010. 399 p. TEIXEIRA FILHO, Marcelo Carvalho Minhoto; BUZETTI, Salatier; ANDREOTTI, Marcelo; ARF, Orivaldo; BENETT, Cleiton Gredson Sabin. Doses, fontes e épocas de aplicação de nitrogênio em trigo irrigado em plantio direto. Pesquisa Agropecuária Brasileira, v.45, p.797-804, 2010. Página 201