rna's em java

7
 1 IMPLEMENTAÇÃO DE REDES NEURAIS ARTIFICIAIS UTILIZANDO A LINGUAGEM DE PROGRAMAÇÃO JAVA  José R. Campos 1  , Anna D. P. Lotufo 1  , Carlos R. Minussi 1  , Mara L. M. Lopes 1 1 UNESP, Ilha Solteira, Brasil, [email protected], [email protected] , [email protected] , [email protected] Abstract: This work develops a f eedforward neur al network  by backpropagation algorithm emphasizing the JAVA language. To illustrate the proposed methodology is used an example with data from a Multi – Machine Electrical Power System Transient Stability Analysis aiming to provide an efficient diagnosis. Keywords:  JAVA, Object Oriented Programming, Artificial  Neural Networks. 1. INTRODUÇÃO As Redes Neurais Artificiais (RNA) são concepções em hardware  e / ou  software  que exibem capacidade de aprender com a experiência. Para se conseguir os resultados desejados, ou seja, que a rede apresente condições de efetuar diagnósticos complexos como é caso do reconhecimento de  padrão, previsão, etc, tais redes deverão apresentar configurações formadas por várias unidades de "neurônios", dispostas em fileiras, compondo um arranjo complexo de interligações [1]. As interligações são formadas por pesos (sinapses) que devem ser ajustados em função de um conjunto de padrões que produzam saídas desejadas. Esta atividade é definida como sendo Treinamento ou Aprendizado, sendo elaborado em off-line. Uma vez ajustada a rede deverá ser capaz de emitir, para padrões não constantes no conjunto de treinamento, um diagnóstico com  precisão satisfatória. Este diagnóstico pode ser efetuado sem custo computacional. Isto, a princípio, pode ser visto como uma possibilidade de viabilização da análise em tempo real. A maioria das redes neurais  feedforward supervisionada  s encontradas na literatura é treinada utilizando o algoritmo retropropagação (backpropagation)  [2], [3], o qual é considerado um benchmark  em termos de precisão. O objetivo deste artigo é desenvolver uma programação orientada a objeto, especificamente a linguagem JAVA, envolvendo a rede neural artificial  feedforward  com algoritmo retropropagação. A Programação Orientada a Objeto (OOP – Object Oriented Programming) pressupõe uma organização de  software  em termos de coleção de objetos discretos incorporando estrutura e comportamento próprios. Deste modo, essa organização se difere fundamentalmente das estruturas dos softwares  tradicionais [4]. O desenvolvimento de  softwares  se tornou cada vez mais complexo durante os anos, e assim, foram surgindo grandes necessidades para resolução de problemas cada vez mais complexos que não poderiam ser solucionados com antigas técnicas de programação, neste artigo serão abordados os  principais conceitos da OOP como, classes, polimorfismo, encapsulamento, abstração e herança, aplicando-a no sistema neural retropropagação. A linguagem de programação JAVA foi desenvolvida  pela Sun Microsystems  para automação no desenvolvimento de uma rede neural. A escolha dessa linguagem se deve ao fato dela proporcionar uma extensa redução na complexidade no desenvolvimento de  software  e aumentar a  produtividade. A análise, projeto e programação orientada a objetos são as respostas para o aumento da complexidade dos ambientes computacionais que se caracterizam por sistemas heterogêneos, distribuídos em redes, em camadas e  baseados em interfaces gráficas. A OOP fundamenta-se na modelagem e design do código-fonte em unidades funcionais independentes, reduzindo a complexidade do  problema e viabilizando o desenvolvimento. Além disso, foram desenvolvidos módulos para os modelos estabelecidos para a simulação/solução do problema real e não de acordo com a lógica de programação de computadores [5]. Portanto, a superioridade dessa metodologia consiste no design do código-fonte abstraindo-se os modelos físicos de acordo com o pensamento humano (classes, hierarquias e  polimorfismo) .  No caso de um  software de modelagem de um sistema elétrico, as barras, circuitos, impedâncias mútuas, faltas, etc.  podem ser modelados segundo as especificações dos  próprios componentes, ao contrário da mera modelagem matemática através de matrizes, que são comuns em  softwares  legados. A engenharia de  software , por sua vez, consiste na gestão das práticas utilizadas no desenvolvimento de um aplicativo: especificações, projetos, controle de qualidade do código-fonte, organização, testes, etc. [5]. Assim, o artigo mostra uma aplicação simples de diagnóstico de dados efetuados para analise de estabilidade de um sistema elétrico de 3 máquinas [6]. 2. REDES NEURAIS ARTIFICIAIS 2.1. Estrutura d a Rede Neural Uma rede neural artificial, [1], [7], [8] corresponde a um conjunto de neurônios artificiais separados em camadas (entrada, intermediária e saída).  Proceedings of the 9th Brazilian Conference on Dynamics Control and their Applications Serra Negra, SP - ISSN 2178-3667 391

Upload: tiago-lisboa

Post on 17-Jul-2015

36 views

Category:

Documents


0 download

TRANSCRIPT

5/14/2018 RNA's em java - slidepdf.com

http://slidepdf.com/reader/full/rnas-em-java 1/7

 

1

IMPLEMENTAÇÃO DE REDES NEURAIS ARTIFICIAIS UTILIZANDO A LINGUAGEM DEPROGRAMAÇÃO JAVA

 José R. Campos1 , Anna D. P. Lotufo1 , Carlos R. Minussi1 , Mara L. M. Lopes1

1UNESP, Ilha Solteira, Brasil, [email protected], [email protected] , [email protected] , [email protected] 

Abstract: This work develops a feedforward neural network   by backpropagation algorithm emphasizing the JAVAlanguage. To illustrate the proposed methodology is used anexample with data from a Multi – Machine Electrical Power 

System Transient Stability Analysis aiming to provide anefficient diagnosis.

Keywords: JAVA, Object Oriented Programming, Artificial Neural Networks.

1. INTRODUÇÃO

As Redes Neurais Artificiais (RNA) são concepções emhardware e / ou  software que exibem capacidade deaprender com a experiência. Para se conseguir os resultadosdesejados, ou seja, que a rede apresente condições de efetuar diagnósticos complexos como é caso do reconhecimento de  padrão, previsão, etc, tais redes deverão apresentar configurações formadas por várias unidades de "neurônios",dispostas em fileiras, compondo um arranjo complexo deinterligações [1]. As interligações são formadas por pesos(sinapses) que devem ser ajustados em função de umconjunto de padrões que produzam saídas desejadas. Estaatividade é definida como sendo Treinamento ouAprendizado, sendo elaborado em off-line. Uma vezajustada a rede deverá ser capaz de emitir, para padrões nãoconstantes no conjunto de treinamento, um diagnóstico com precisão satisfatória. Este diagnóstico pode ser efetuado semcusto computacional. Isto, a princípio, pode ser visto comouma possibilidade de viabilização da análise em tempo real.

A maioria das redes neurais feedforward supervisionada s

encontradas na literatura é treinada utilizando o algoritmoretropropagação (backpropagation) [2], [3], o qual éconsiderado um benchmark em termos de precisão.

O objetivo deste artigo é desenvolver uma programaçãoorientada a objeto, especificamente a linguagem JAVA,envolvendo a rede neural artificial  feedforward  comalgoritmo retropropagação.

A Programação Orientada a Objeto (OOP – ObjectOriented Programming) pressupõe uma organização de software em termos de coleção de objetos discretosincorporando estrutura e comportamento próprios. Destemodo, essa organização se difere fundamentalmente dasestruturas dos softwares tradicionais [4].

O desenvolvimento de softwares se tornou cada vez maiscomplexo durante os anos, e assim, foram surgindo grandesnecessidades para resolução de problemas cada vez mais

complexos que não poderiam ser solucionados com antigastécnicas de programação, neste artigo serão abordados os  principais conceitos da OOP como, classes, polimorfismo,encapsulamento, abstração e herança, aplicando-a no

sistema neural retropropagação.A linguagem de programação JAVA foi desenvolvida pela Sun Microsystems para automação no desenvolvimentode uma rede neural. A escolha dessa linguagem se deve aofato dela proporcionar uma extensa redução nacomplexidade no desenvolvimento de software e aumentar a produtividade. A análise, projeto e programação orientada aobjetos são as respostas para o aumento da complexidadedos ambientes computacionais que se caracterizam por sistemas heterogêneos, distribuídos em redes, em camadas e baseados em interfaces gráficas. A OOP fundamenta-se namodelagem e design do código-fonte em unidadesfuncionais independentes, reduzindo a complexidade do  problema e viabilizando o desenvolvimento. Além disso,

foram desenvolvidos módulos para os modelosestabelecidos para a simulação/solução do problema real enão de acordo com a lógica de programação decomputadores [5].

Portanto, a superioridade dessa metodologia consiste nodesign do código-fonte abstraindo-se os modelos físicos deacordo com o pensamento humano (classes, hierarquias e polimorfismo).

 No caso de um software de modelagem de um sistemaelétrico, as barras, circuitos, impedâncias mútuas, faltas, etc.  podem ser modelados segundo as especificações dos  próprios componentes, ao contrário da mera modelagemmatemática através de matrizes, que são comuns em

 softwares legados.A engenharia de  software, por sua vez, consiste nagestão das práticas utilizadas no desenvolvimento de umaplicativo: especificações, projetos, controle de qualidade docódigo-fonte, organização, testes, etc. [5].

Assim, o artigo mostra uma aplicação simples dediagnóstico de dados efetuados para analise de estabilidadede um sistema elétrico de 3 máquinas [6].

2. REDES NEURAIS ARTIFICIAIS

2.1. Estrutura da Rede Neural 

Uma rede neural artificial, [1], [7], [8] corresponde a umconjunto de neurônios artificiais separados em camadas(entrada, intermediária e saída).

 

Proceedings of the 9th Brazilian Conference on Dynamics Control and their Applications

Serra Negra, SP - ISSN 2178-3667 391

5/14/2018 RNA's em java - slidepdf.com

http://slidepdf.com/reader/full/rnas-em-java 2/7

 

Implementação De Redes Neurais Artificiais Utilizando A Linguagem De Programação JavaJosé R. Campos, Anna D. P. Lotufo, Carlos R. Minussi, Mara L. M. Lopes

2

O processamento de um neurônio artificial resume-se em[9]:

1. Um conjunto de entradas (sinais)  X , x1, x2, ...,  xn, sãoapresentados à rede;

2. Cada sinal é ponderado por um peso associado V,

w1, w2, ..., wn,

que indica sua influência na saída daunidade;3. As entradas ponderadas são aplicadas ao bloco

somatório,Σ , onde se adiciona também uma entradaindependente, x0 = 1, denominada bias;

4. A saída intermediária do neurônio é, então, dada por [3]:

∑=n

 j

 j jii xw s (1)

5. A saída é, então, convertida em não-linearidade atravésdas funções de ativação (relé ou sigmóide).

2.1. Treinamento da Rede Neural 

A rede neural possui a capacidade de aprender, paratanto, ela deve ser treinada, ajustando assim os seus pesos.Para tal, necessita-se de algoritmo de treinamento, nestecaso, utiliza-se o algoritmo retropropagação.

O algoritmo retropropagação é um procedimentosistemático de adaptação de pesos de redes neurais, baseadono método do gradiente descendente, que consiste emadaptar os pesos de tal forma, que o erro quadrático da redeseja minimizado. É realizado da seguinte forma [3], [9]:

1. Apresentação de um padrão  X  à rede, o qual forneceuma saída Y ;

2. Cálculo do erro (diferença entre o valor desejado e a

saída) para cada saída;3. Determinação do erro retropropagado pela rede

associado à derivada parcial do erro quadrático;4. Ajuste dos pesos de cada elemento;5. Por fim, um novo padrão é apresentado à rede e o

  processo é repetido até que ocorra a convergência, ouseja, (erro < tolerância preestabelecida) ou o número deiterações corresponda a um valor máximo previamenteestabelecido

O algoritmo retropropagação consiste na adaptação de pesos, tal que, o erro quadrático da rede é minimizado. Asoma do erro quadrático instantâneo de cada neurônio

alocado na última camada é dada por [3]:

∑=

=ns

i

i

1

22ε ε  (2)

sendo:ε i = d i - yi ;d i = saída desejada do i-ésimo elemento da última

camada da rede; y i = saída do i-ésimo elemento da última camada da

rede;ns = número de neurônios da última camada da rede.

Considerando-se o neurônio de índice i da rede, e

utilizando-se o método do gradiente descendente [3], [9], oajuste de pesos pode ser formulado como:

)()()1( hhV hV  iii θ −=+ (3)sendo:θi (h) = γ [∇i (h)];γ = taxa de treinamento;h = índice da iteração;∇i (h) = gradiente do erro quadrático com relação aos

 pesos do neurônio i avaliado em h;V i = vetor contendo os pesos do neurônio i

= [ w0i  w1i w2i . . . wni ]T.

O parâmetro γ serve como controle de estabilidade do processo iterativo.

  Na Equação (3), a direção adotada para minimizar afunção objetivo do erro quadrático corresponde à direçãocontrária ao gradiente. O gradiente ∇i (h) pode ser expresso por [3], [7]:

)(

2

)(

)(2

hV hV 

h

i

ii

i

ii

∂=

∂=∇

ε ε 

ε (4)

A função de ativação utilizada na aplicação abordada(neste caso, analise de estabilidade cuja variável analisadaé à margem de segurança do sistema) é a função sigmóidedefinida por [3], [7], [9]:

)(1

1i si

e y

λ −+

= (5)

sendo:λ = constante que determina a inclinação da curva yi

Diferenciando a Equação (2) com relação ao vetor V i,

obtém-se:

i

i

i

i

i

i

i

i

 s

 s

 y

 y

V  ∂

∂=

∂−=

∂ε (6)

Da Equação (6), resulta-se:

i

ii

i

i

 s s sgm

V ' 

∂−=

∂)(

ε (7)

em que:

i

ii

 s

 y s sgm' 

∂=)( )1( ii y y −= λ  , derivada parcial de  yi

com relação a si.

Observa-se que:

ii

i  X V 

 s=

∂(8)

sendo: X i Δ vetor padrão;

= ][ 210 iniii x x x x K

T.

Substituindo a Equação (8) na Equação (7), tem-se:

iii

i  X  s sgmV 

'  )(−=∂∂ε 

(9)

 

Proceedings of the 9th Brazilian Conference on Dynamics Control and their Applications

Serra Negra, SP - ISSN 2178-3667 392

5/14/2018 RNA's em java - slidepdf.com

http://slidepdf.com/reader/full/rnas-em-java 3/7

 

3

Inserindo-se a Equação (9) na Equação (4), resulta em:

iiii X  s sgmh '  )(2)( ε −=∇ (10)

Utilizando (10) estimado no método do gradientedescendente, obtém-se o seguinte algoritmo [3], [7]:

iiiiii X  y yhV hV  ))1((2)()1( −+=+ λ ε γ  (11)

Os pesos iniciais são normalmente adotados comonúmeros randômicos, visto que a iniciação nula quasesempre proporciona baixa convergência [3].

Uma formulação bastante interessante é o algoritmoretropropagação com momento que faz com que oalgoritmo se torne mais rápido.

O processo de aprendizagem exige com que a mudançanos pesos seja proporcional a iε ∂ / iV ∂ . O gradiente

descendente requer que uma infinidade de passos sejamtomados. Considera-se, por exemplo, uma taxa detreinamento grande o possível para que haja oscilação semdireção. Assim, um meio de evitar a oscilação para γgrande, é tomar uma variação no peso dependente davariação do peso passado acrescentando o termo momento.Este procedimento se constitui no algoritmoretropropagação com momento [11].

A adaptação dos pesos, neste caso, pode ser formuladada seguinte forma [3]:

vij (h+1) = vij (h) + Δvij (h) (12)sendo:Δvij (h) = 2 γ (1 - η) β  j xi + η Δvij (h-1); (13)vij = peso correspondente à interligação entre o i-

ésimo e j-ésimo neurônio;γ  = taxa de treinamento;η  = constante momento (0 ≤ η < 1).

Se o elemento j encontrar-se na última camada então:

 β  j = σ  j ε j (14)em que:σ  j = derivada da função sigmóide com relação a s j.

Se o elemento  j encontrar-se nas demais camadas tem-se:

∑∈= )( j Rk k k  j j j w β σ  β  (15)

sendo: R( j) = conjunto dos índices dos elementos que se

encontram na fileira seguinte à fileira doelemento j e que estão interligados ao elemento j.

3. ORIENTAÇÃO A OBJETO

A orientação a objeto (OOP) não tem a intenção desubstituir a programação estrutural tradicional, desta formaela é uma evolução das técnicas que vem sendo muito

empregadas nos últimos tempos, porém não formalizadas,como visibilidade, escopo e utilização de variáveis locais[12].

 Nesta seção serão abordados os principais conceitos que permeiam o uso das técnicas de OOP utilizando a linguagemde programação JAVA.

Um dos grandes diferenciais desta técnica em relação aoutros paradigmas de programação é o conceito de herança,mecanismo no qual permite a extensão de definições já

existentes. É importante enfatizar também juntamente com oconceito de herança a importância do polimorfismo, que é acapacidade de invocar métodos que tem a mesmaidentificação (assinaturas), porém comportamentos distintos[12]. Para considerar-se um sistema OOP, é necessário levar em conta pelo menos 4 características:

• Classificação;• Herança;• Polimorfismo;• Encapsulamento.

3.1. Classe

A definição de classes e seus inter-relacionamentos sãoconhecidos como o gabarito para a definição de seusobjetos, apresentando-se quais propriedades, atributos oobjeto terá. Classe, não descreve somente os atributos, mastambém o comportamento dos objetos, ou seja, quaisfuncionalidades poderão ser aplicadas aos objetos, essasfuncionalidades são descritas através de métodos. Ummétodo nada mais é que o análogo a uma função ou  procedimento, diferindo-se somente que ele manipula osatributos da classe e variáveis locais definidos [13].

Um exemplo de classe utilizando a linguagem JAVA édescrito na Figura 1.

Figura 1. Exemplo de classe.

A Figura 1 apresenta uma classe MLP (  Multi Layer  Perceptron) que compõe o pequeno projeto de redes neurais

artificiais cujo algoritmo de treinamento utilizado é oalgoritmo retropropagação.

3.2. Objeto

 No contexto de OOP, um objeto é uma entidade capaz deguardar estados (informações) e de realizar operações(comportamento) que podem se utilizar dos estados, bemcomo modificá-los, um objeto também é conhecido comoinstância quando pertencer a uma classe. As declarações deum objeto são denominadas métodos e suas informaçõesatributos [13].

3.3. Herança

O conceito de herança organiza as classes para reuso,isto é, faz-se o uso da herança para resolver o problema de

 

Proceedings of the 9th Brazilian Conference on Dynamics Control and their Applications

Serra Negra, SP - ISSN 2178-3667 393

5/14/2018 RNA's em java - slidepdf.com

http://slidepdf.com/reader/full/rnas-em-java 4/7

 

Implementação De Redes Neurais Artificiais Utilizando A Linguagem De Programação JavaJosé R. Campos, Anna D. P. Lotufo, Carlos R. Minussi, Mara L. M. Lopes

4

classes que compartilham características iguais. Tomandocomo exemplo a classe Neurônio, Neurônio Intermediário, Neurônio de Saída, ambos são variações da classe Neurônio,ou seja, todos eles têm características iguais, porémcomportamentos diferentes ao longo do programa. Neurônio, seja de entrada, intermediário ou de saída, pode

conter pesos, dados de entradas, dados de saídas, porém ocálculo do erro para cada um se difere [13].

Figura 2. Exemplo de classe com herança.

A Figura 2 ilustra um exemplo de classe utilizandoherança, em Java pode-se observar o uso da palavra extends,isto indica que a classe Neurônio Intermediário herda ascaracterísticas da classe Neurônio, deste modo, é notório oreuso da classe poupando assim a sobrecarga de códigosrepetitivos. Herança é a principal característica de umsistema OOP. Como citado em [14], um sistema que não fazo uso de herança não é considerado um sistema totalmenteOOP.

Desta forma, a principal vantagem da herança é evitar aduplicidade, podendo unicamente herdar características deuma classe-pai e especializar métodos e atributos.

3.4. Polimorfismo

A característica de polimorfismo é a capacidade demodificar e interagir com os objetos sem a necessidade doconhecimento prévio de sua classe, através decomportamento dinâmico [15]. Em outras palavras, essescomportamentos podem possuir métodos homônimos, porém com resultados distintos e comportamentos distintos.

Assim o polimorfismo, junto com o encapsulamento, queserá abordado a seguir, proporciona um código maisinteligível e aumenta o nível da dinâmica proposta pela OOP[15].

3.5. Encapsulamento

Segundo Jacobson [15], é a capacidade de definir restrição a visibilidade, de acesso e modificação dosatributos e métodos, assim é possível encapsular métodos eatributos para que exista uniformidade de acesso durante edepois do acesso, sem que haja a necessidade damodificação dos objetos dependentes de tais operações.

4. APLICAÇÃO DA REDE NEURAL EM JAVA

4.1. Desenvolvimento da Aplicação

Para este trabalho foi desenvolvido na linguagem JAVAuma interface gráfica para que o usuário entre com asconfigurações e os dados de entrada por um arquivo

específico, há alguns passos necessários para a o sucesso doaprendizado da rede. São eles:

4.1.1. Coleta dos dados e configuração

Os dois primeiros passos para o desenvolvimento da rede

é a abstração dos dados relativos ao problema e a suaseparação em conjuntos, treinamento e diagnóstico. Estatarefa requer uma minuciosa análise para que não haja  problemas como ambigüidade e erros nos dados. Alémdisso, os dados devem ser significativos e cobrir amplamente o problema em questão.

 Normalmente os dados coletados são separados em duascategorias, dados de treinamento que serão utilizados para otreinamento da rede e diagnóstico, que serão utilizados paraverificação da  performance (desempenho) sob condiçõesreais de utilização.

4.1.2. Configuração da rede

O terceiro passo é quem denomina o comportamento darede conforme os padrões de entrada e diagnósticosapresentados no passo um e dois.

Determinação dos parâmetros da rede como:

a) Taxa de Treinamento - γ  ; b) Inclinação da função de ativação -  λ;c) Bias;d) Taxa do momento - η ;e) Escolha da função de ativação.

Estes passos tem um grande impacto na  performance(desempenho) da rede neural, pois, uma boa escolha desses

 parâmetros a rede terá grande sucesso em sua convergência,embora a definição dessas configurações seja de formaempírica.

4.2. Integração

Finalmente, com a rede já configurada e treinada, ela já pode ser introduzida no ambiente da aplicação na qual elafoi projetada. Para maior facilidade da operação, foidesenvolvido uma interface gráfica para os passos um, doise três visando um grande aumento de produtividade eminimizando a complexidade da integração.

4.3. Idealização da Rede Neural O sistema desenvolvido traz consigo uma interface bem

intuitiva para o usuário, pois ela permite a configuração darede de forma rápida e bem customizada em três etapas.

  Na primeira, é apresentado ao usuário um sistema de procura de arquivo em que se encontram os dados inerentesao treinamento em questão. Neste arquivo, constam os padrões de entradas e saídas.

O próximo passo requer a configuração das camadas darede. O sistema automaticamente arbitra os melhores dadosde acordo com os dados fornecidos na primeira etapa, porém, também possível a seleção do número de neurôniosem cada camada através do botão “Customizar”. Nesta fase,

é então apresentado um  preview do arquivo na janela do programa, conforme visto na Figura 5.

 

Proceedings of the 9th Brazilian Conference on Dynamics Control and their Applications

Serra Negra, SP - ISSN 2178-3667 394

5/14/2018 RNA's em java - slidepdf.com

http://slidepdf.com/reader/full/rnas-em-java 5/7

 

5

  Na terceira e última etapa, o usuário entrará com osdados referentes ao treinamento, tais como: taxa detreinamento, erro mínimo tolerável, quantidade de épocas,valor do bias, inclinação da função de ativação, momento,tipo de função de ativação e as configurações iniciais dos pesos.

  Nestas duas últimas, o sistema permite ao usuárioselecionar através de caixa de seleção outroscomportamentos a seguir:

a) Seleção do tipo da função de ativação: SigmóideLogística, Tangente Hiperbólica, Relé, etc. mostradana Figura 3;

Figura 3. Escolha da função de ativação.

  b) Seleção do tipo de sementes iniciais para os pesos:Pesos com valor entre -1 e 1, com valores entre 0 e 1ou pesos aleatórios como ilustra a Figura 4.

Figura 4. Escolha dos pesos.

Após ter concluído as três etapas, inicia-se o treinamentoclicando no botão “Iniciar o processo de treinamento”. Casoa rede tenha convergido, é apresentado um gráfico (Figura6) contendo a média do erro quadrático da rede, e ao mesmotempo, sugere-se ao usuário diagnosticar a rede para aconferência do treinamento, o gráfico do diagnóstico é

ilustrado na Figura 7.4.4. Aplicação na análise de sensibilidade

  Neste artigo considera-se um exemplo para aplicaçãona Análise de Estabilidade Transitória de um Sistema deEnergia Elétrica composto por 3 máquinas síncronas, 7linhas de transmissão e 9 barras [16].

 Na análise de estabilidade transitória é adotado o modeloclássico [6] e ela corresponde à obtenção da margem desegurança para contingências de curto-circuito com saída delinha de transmissão sob defeito.

O objetivo do trabalho é evidenciar a aplicabilidade esimplicidade da rede neural  feedforward  com algoritmo

retropropagação através da linguagem de programaçãoJAVA.  Neste artigo será mostrada a aplicação da rede neural

 para o diagnóstico da margem de segurança para o sistemade 3 máquinas [6].

Tabela 1. Parâmetros utilizados na rede neural.

Item Sistema Anderson &Fouad

  Número de vetores padrões 40  Número de camadas 3  Número de neurônios por camadas 5-10-1Tolerância 0,0001

Taxa de treinamento - γ 0,3

Momento - η  0,8

Inclinação da função sigmóide - λ  0,3

 Na Tabela 1 são apresentados os parâmetros que foramutilizados no treinamento e diagnostico da rede neural.

Figura 5. Interface da rede neural na linguagem JAVA.

 

Proceedings of the 9th Brazilian Conference on Dynamics Control and their Applications

Serra Negra, SP - ISSN 2178-3667 395

5/14/2018 RNA's em java - slidepdf.com

http://slidepdf.com/reader/full/rnas-em-java 6/7

 

Implementação De Redes Neurais Artificiais Utilizando A Linguagem De Programação JavaJosé R. Campos, Anna D. P. Lotufo, Carlos R. Minussi, Mara L. M. Lopes

6

A Figura 5 mostra a interface do programa JAVA para arede neural  feedforward  com algoritmo retropropagação.Pode-se observar que a interface proporciona ao usuário adisponibilização de todos os parâmetros que são utilizadosno processamento da rede neural.

Nota-se também, que os dados de entrada da rede neural

utilizados na aplicação tanto para o treinamento quanto parao diagnostico da rede neural, que neste caso é analise desensibilidade, são indexados ao processo como um arquivode dados.

A interface proporciona ao mesmo tempo uma conexãoda entrada de dados, que serão utilizados na rede neural, eda saída de dados que fornecem os resultados pertinentes acada aplicação. A saída do número de iterações obtida pelarede neural e o tempo de processamento estão indicados na parte inferior da interface.

Durante o processamento do treinamento da rede neuralé criada uma interface gráfica após a convergência da redecomo mostra a Figura 6. Esta interface representa aevolução do erro obtido no treinamento da rede neural até a

convergência.

Figura 6. Interface gráfica do erro obtido pela rede neural.

Após a execução do treinamento torna-se ativo o íconede diagnostico o qual é realizado seguidamente gerando ainterface gráfica ilustrada pela Figura 7. Este gráfico mostraos resultados reais da aplicação e os resultados obtidos pelarede neural.

Figura 7. Comparação entre os resultados reais e resultados obtidos.

  No caso da aplicação na análise de estabilidadetransitória o objetivo, neste artigo, é utilizar a rede neural para diagnosticar as margens de segurança para um conjuntode potências.

Tabela 2. Resultados reais e obtidos pela rede neural.

SaídaReal

SaídaObtida

SaídaReal

SaídaObtida

SaídaReal

SaídaObtida

SaídaReal

SaídaObtida

0.510 0.519 0.345 0.349 0.215 0.214 0.100 0.1280.420 0.434 0.355 0.353 0.300 0.279 0.225 0.2180.225 0.221 0.155 0.139 0.090 0.091 0.035 0.063

0.225 0.220 0.155 0.131 0.100 0.082 0.040 0.0560.585 0.598 0.445 0.431 0.265 0.269 0.105 0.1500.665 0.675 0.575 0.582 0.505 0.482 0.370 0.3860.470 0.478 0.370 0.378 0.295 0.292 0.255 0.2190.310 0.321 0.240 0.236 0.180 0.176 0.125 0.1320.415 0.421 0.330 0.339 0.265 0.261 0.210 0.1950.270 0.262 0.195 0.197 0.135 0.148 0.090 0.112

  Na Tabela 2 observam-se os resultados obtidos, viamétodo PEBS (saída real) [16] e pela rede neural feedforward  com treinamento retropropagação (saídaobtida). Observa-se que a RNA gerar diagnósticos próximosdos dados fornecidos via PEBS.

5. CONCLUSÃOEste artigo apresenta uma metodologia para

treinamento de redes neurais  feedforward  baseado noalgoritmo retropropagação executada através de uma  programação orientada a objeto. Para demonstrar afacilidade da analise e do desenvolvimento da rede neural feedforward  com algoritmo retropropagação foidesenvolvido um sistema de análise de estabilidadetransitória de um Sistema de Energia Elétrica Multi-máquinas (Sistema Anderson & Fouad) [6].

O enfoque principal do artigo é a implementação da redeneural de tal forma que ela tivesse uma linguagem maisacessível para vários profissionais de diversas áreas podendo

ser aplicada em inúmeras situações. A dificuldade deimplementação do algoritmo faz com que os pesquisadores procurem programas mais dinâmicos como por exemplo oMATLAB. Porém, nem todos os programas oferecem osuporte técnico necessário para a análise total da aplicação.Uma técnica inovadora que está sendo muito difundida noambiente de desenvolvimento de aplicativos é a programação orientada ao objeto.

A grande vantagem de utilizar a técnica de programaçãoorientada a objeto é que ela proporciona maior facilidade na  programação, uma maior reutilização de código eindependência no desenvolvimento de módulos.

Dentre as linguagens de programação orientada a objetoexistentes foi escolhida a linguagem de programação JAVA,  por ser totalmente orientada a objeto, por ter grandefacilidade na construção de interfaces gráficas através doaplicativo NetBeans IDE 6.8. Desta forma, foramdesenvolvidas interfaces para a interação com o usuário afim de estabelecer simplicidade na customização da rede.

O presente trabalho não enfatiza somente odesenvolvimento da rede neural para a análise deestabilidade, mas sim na utilização da técnica da OOP.Foram apresentadas no decorrer do trabalho, váriasvantagens na utilização e aplicação da mesma, dessa forma,os resultados esperados foram muito satisfatórios.

AGRADECIMENTOS

Agradeço a Universidade Estadual Paulista - Júlio deMesquita Filho (UNESP) Campus de Ilha Solteira por ter 

 

Proceedings of the 9th Brazilian Conference on Dynamics Control and their Applications

Serra Negra, SP - ISSN 2178-3667 396

5/14/2018 RNA's em java - slidepdf.com

http://slidepdf.com/reader/full/rnas-em-java 7/7

 

7

 proporcionado uma estrutura adequada para o término destetrabalho.

REFERENCIAS

[1] T. L. Fine, “Feedforward Neural Network Methodology”,Springer-Verlag, USA, 1999.

[2] P. J. Werbos, “Beyond Regression: New Tools for Prediction andAnalysis in the Behavioral Sciences”, Master Thesis, HarvardUniversity, 1974.

[3] B. Widrow, M. A. Lehr, “30 Years of Adaptive Neural Networks:Perceptron, Madaline, and Backpropagation”, in Proceedings of the IEEE, Vol. 78, No. 9, pp. 1415-1442, 1990.

[4] A. Boente, “Livro Aprendendo a Programar em Java 2 -Orientado a Objetos”, ed. 1, Brasport, São Paulo, 2003.

[5] G. Voss, M. G. Hill, “Object-Oriented Programming: AnIntroduction”, Addison Wesley, New York, 1991.

[6] P. M. Anderson, A. A. Fouad, “Power System Control andStability”, IEEE Series on Power Engineering, USA, ed. 2, 2003.

[7] S. Haykin, “Neural Networks: A Comprehensive Foundation”,

Prentice-Hall, Upper Saddle River, New Jersey, USA, 1999.[8] P. K. Simpson, “Artificial Neural Systems: Foundations,

Paradigms, Applications and Implementations”, Pergamon Press,New York, 1989.

[9] M. L. M. Lopes, “Desenvolvimento de um Sistema Previsor deCargas Elétricas via Redes Neurais”, Dissertação de Mestrado,Programa de Pós-graduação em Engenharia Elétrica - Faculdadede Engenharia de Ilha Solteira - UNESP, 2000.

[10] C. R. Minussi, M. C. G. Silveira, “Electric Power SystemTransient Stability by Neural Networks”, 38 Th MidwestSymposium On Circuits And System, Rio de Janeiro-RJ, pp.1305-1308, 1995.

[11] B. Krose, P. V. Smagt, “An Introduction to Neural Networks”,University of Amsterdam, November 1996.

[12] A. A. Melo, M. G. F. Nascimento, “Aprenda a DesenvolverSistemas Profissionais Orientados a Objetos com Padrões deProjeto”, ed. 1, Novatec, São Paulo, 2007.

[13] C. Cardoso, “Orientação a Objetos na Prática”, ed. 1, CiênciaModerna, São Paulo, 2006.

[14] A. Leite, “FJ-11 - Java e Orientação a Objetos”, Apostila doCurso FJ11 – CAELUM Ensino e Inovação, 2009.

[15] I. Jacobson, “Object Oriented Software Engineering: A Use CaseDriven Approach (Hardcover)”, Addison-Wesley, 1992.

[16] A. D. P. Lotufo, “Análise de Sensibilidade por Redes Neurais paraEstudos de Estabilidade Transitória de Sistemas Elétricos dePotência”, Tese de Doutorado, Programa de Pós-Graduação emEngenharia Elétrica, UNESP, Campus de Ilha Solteira, 2004.

 

Proceedings of the 9th Brazilian Conference on Dynamics Control and their Applications

Serra Negra, SP - ISSN 2178-3667 397