desenvolvimento de uma aplicação android capaz de estimar a

Propaganda
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
Download