Você está na página 1de 8

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/267804925

IMPLEMENTAÇÃO DE REDES NEURAIS ARTIFICIAIS UTILIZANDO A


LINGUAGEM DE PROGRAMAÇÃO JAVA

Article

CITATION READS

1 2,765

4 authors:

José Roberto Campos Anna Diva P. Lotufo


Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso do Sul (IFMS) São Paulo State University
3 PUBLICATIONS   2 CITATIONS    47 PUBLICATIONS   390 CITATIONS   

SEE PROFILE SEE PROFILE

Carlos Roberto Minussi Mara Lúcia M. Lopes


São Paulo State University São Paulo State University
89 PUBLICATIONS   597 CITATIONS    34 PUBLICATIONS   202 CITATIONS   

SEE PROFILE SEE PROFILE

Some of the authors of this publication are also working on these related projects:

Graduation course completion work View project

All content following this page was uploaded by José Roberto Campos on 17 February 2015.

The user has requested enhancement of the downloaded file.


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

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


1
UNESP, Ilha Solteira, Brasil, jrcampos82@gmail.com, annadiva@dee.feis.unesp.br, minussi@dee.feis.unesp.br, mara@mat.feis.unesp.br

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

1
Proceedings of the 9th Brazilian Conference on Dynamics Control and their Applications
Serra Negra, SP - ISSN 2178-3667 391
Implementação De Redes Neurais Artificiais Utilizando A Linguagem De Programação Java
José R. Campos, Anna D. P. Lotufo, Carlos R. Minussi, Mara L. M. Lopes

O processamento de um neurônio artificial resume-se em Vi (h + 1) = Vi (h) − θ i (h) (3)


[9]: sendo:
θi (h) = γ [∇i (h)];
1. Um conjunto de entradas (sinais) X, x1, x2, ..., xn, são
apresentados à rede; γ = taxa de treinamento;
2. Cada sinal é ponderado por um peso associado V, h = índice da iteração;
w1, w2, ..., wn, que indica sua influência na saída da ∇i (h) = gradiente do erro quadrático com relação aos
unidade; pesos do neurônio i avaliado em h;
3. As entradas ponderadas são aplicadas ao bloco Vi = vetor contendo os pesos do neurônio i
somatório, Σ , onde se adiciona também uma entrada = [ w0i w1i w2i . . . wni ]T.
independente, x0 = 1, denominada bias;
4. A saída intermediária do neurônio é, então, dada por [3]: O parâmetro γ serve como controle de estabilidade do
processo iterativo.
n Na Equação (3), a direção adotada para minimizar a
si = ∑ wi j x j (1) função objetivo do erro quadrático corresponde à direção
j
contrária ao gradiente. O gradiente ∇i (h) pode ser
5. A saída é, então, convertida em não-linearidade através expresso por [3], [7]:
das funções de ativação (relé ou sigmóide).
∂ ε i2 ∂ εi
2.1. Treinamento da Rede Neural ∇ i ( h) = = 2 εi (4)
∂ Vi (h) ∂ Vi (h)
A rede neural possui a capacidade de aprender, para
tanto, ela deve ser treinada, ajustando assim os seus pesos.
A função de ativação utilizada na aplicação abordada
Para tal, necessita-se de algoritmo de treinamento, neste
(neste caso, analise de estabilidade cuja variável analisada
caso, utiliza-se o algoritmo retropropagação.
é à margem de segurança do sistema) é a função sigmóide
O algoritmo retropropagação é um procedimento
definida por [3], [7], [9]:
sistemático de adaptação de pesos de redes neurais, baseado
no método do gradiente descendente, que consiste em
adaptar os pesos de tal forma, que o erro quadrático da rede 1
yi = (5)
seja minimizado. É realizado da seguinte forma [3], [9]: 1 + e( −λ si )
sendo:
1. Apresentação de um padrão X à rede, o qual fornece λ = constante que determina a inclinação da curva yi
uma saída Y;
2. Cálculo do erro (diferença entre o valor desejado e a Diferenciando a Equação (2) com relação ao vetor Vi,
saída) para cada saída; obtém-se:
3. Determinação do erro retropropagado pela rede
associado à derivada parcial do erro quadrático; ∂ εi ∂ yi ∂ yi ∂ si
4. Ajuste dos pesos de cada elemento; =− = (6)
∂ Vi ∂ Vi ∂ si ∂ Vi
5. Por fim, um novo padrão é apresentado à rede e o
processo é repetido até que ocorra a convergência, ou
Da Equação (6), resulta-se:
seja, (erro < tolerância preestabelecida) ou o número de
iterações corresponda a um valor máximo previamente
estabelecido ∂εi ∂ si
= − sgm' ( si ) (7)
∂ Vi ∂ Vi
O algoritmo retropropagação consiste na adaptação de em que:
pesos, tal que, o erro quadrático da rede é minimizado. A ∂ yi
soma do erro quadrático instantâneo de cada neurônio sgm' ( si ) = = λ yi ( 1 − yi ) , derivada parcial de yi
alocado na última camada é dada por [3]: ∂ si
ns com relação a si.
ε 2 = ∑ ε i2 (2)
i =1 Observa-se que:
sendo: ∂ si
= Xi (8)
εi = d i - yi ; ∂ Vi
di = saída desejada do i-ésimo elemento da última sendo:
camada da rede; Xi Δ vetor padrão;
y i = saída do i-ésimo elemento da última camada da
= [ x 0 i x1i x 2 i K x n i ] T.
rede;
ns = número de neurônios da última camada da rede.
Substituindo a Equação (8) na Equação (7), tem-se:
Considerando-se o neurônio de índice i da rede, e
utilizando-se o método do gradiente descendente [3], [9], o ∂εi
ajuste de pesos pode ser formulado como: = − sgm' ( s i ) X i (9)
∂ Vi

2
Proceedings of the 9th Brazilian Conference on Dynamics Control and their Applications
Serra Negra, SP - ISSN 2178-3667 392
Inserindo-se a Equação (9) na Equação (4), resulta em: Nesta seção serão abordados os principais conceitos que
permeiam o uso das técnicas de OOP utilizando a linguagem
∇ i (h) = − 2 ε i sgm' ( s i ) X i (10) de programação JAVA.
Um dos grandes diferenciais desta técnica em relação a
Utilizando (10) estimado no método do gradiente outros paradigmas de programação é o conceito de herança,
descendente, obtém-se o seguinte algoritmo [3], [7]: mecanismo no qual permite a extensão de definições já
existentes. É importante enfatizar também juntamente com o
conceito de herança a importância do polimorfismo, que é a
Vi (h + 1) = Vi (h) + 2 γ ε i ( λ yi ( 1 − yi ) ) X i (11) capacidade de invocar métodos que tem a mesma
identificação (assinaturas), porém comportamentos distintos
Os pesos iniciais são normalmente adotados como [12]. Para considerar-se um sistema OOP, é necessário levar
números randômicos, visto que a iniciação nula quase em conta pelo menos 4 características:
sempre proporciona baixa convergência [3].
Uma formulação bastante interessante é o algoritmo • Classificação;
retropropagação com momento que faz com que o • Herança;
algoritmo se torne mais rápido. • Polimorfismo;
O processo de aprendizagem exige com que a mudança
• Encapsulamento.
nos pesos seja proporcional a ∂ ε i / ∂ Vi . O gradiente
descendente requer que uma infinidade de passos sejam
tomados. Considera-se, por exemplo, uma taxa de 3.1. Classe
treinamento grande o possível para que haja oscilação sem A definição de classes e seus inter-relacionamentos são
direção. Assim, um meio de evitar a oscilação para γ conhecidos como o gabarito para a definição de seus
grande, é tomar uma variação no peso dependente da objetos, apresentando-se quais propriedades, atributos o
variação do peso passado acrescentando o termo momento. objeto terá. Classe, não descreve somente os atributos, mas
Este procedimento se constitui no algoritmo também o comportamento dos objetos, ou seja, quais
retropropagação com momento [11]. funcionalidades poderão ser aplicadas aos objetos, essas
A adaptação dos pesos, neste caso, pode ser formulada funcionalidades são descritas através de métodos. Um
da seguinte forma [3]: método nada mais é que o análogo a uma função ou
procedimento, diferindo-se somente que ele manipula os
vij (h+1) = vij (h) + Δvij (h) (12) atributos da classe e variáveis locais definidos [13].
sendo: Um exemplo de classe utilizando a linguagem JAVA é
Δvij (h) = 2 γ (1 - η) βj xi + ηΔvij (h-1); (13) descrito na Figura 1.
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 sj.
Figura 1. Exemplo de classe.

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


se: A Figura 1 apresenta uma classe MLP (Multi Layer
Perceptron) que compõe o pequeno projeto de redes neurais
βj =σ j ∑ w j k βk (15)
artificiais cujo algoritmo de treinamento utilizado é o
k ∈R ( j)
algoritmo retropropagação.
sendo:
R(j) = conjunto dos índices dos elementos que se 3.2. Objeto
encontram na fileira seguinte à fileira do
elemento j e que estão interligados ao elemento No contexto de OOP, um objeto é uma entidade capaz de
j. guardar estados (informações) e de realizar operações
(comportamento) que podem se utilizar dos estados, bem
como modificá-los, um objeto também é conhecido como
3. ORIENTAÇÃO A OBJETO instância quando pertencer a uma classe. As declarações de
um objeto são denominadas métodos e suas informações
A orientação a objeto (OOP) não tem a intenção de atributos [13].
substituir a programação estrutural tradicional, desta forma
ela é uma evolução das técnicas que vem sendo muito
3.3. Herança
empregadas nos últimos tempos, porém não formalizadas,
como visibilidade, escopo e utilização de variáveis locais O conceito de herança organiza as classes para reuso,
[12]. isto é, faz-se o uso da herança para resolver o problema de

3
Proceedings of the 9th Brazilian Conference on Dynamics Control and their Applications
Serra Negra, SP - ISSN 2178-3667 393
Implementação De Redes Neurais Artificiais Utilizando A Linguagem De Programação Java
José R. Campos, Anna D. P. Lotufo, Carlos R. Minussi, Mara L. M. Lopes

classes que compartilham características iguais. Tomando específico, há alguns passos necessários para a o sucesso do
como exemplo a classe Neurônio, Neurônio Intermediário, aprendizado da rede. São eles:
Neurônio de Saída, ambos são variações da classe Neurônio,
ou seja, todos eles têm características iguais, porém 4.1.1. Coleta dos dados e configuração
comportamentos diferentes ao longo do programa.
Neurônio, seja de entrada, intermediário ou de saída, pode Os dois primeiros passos para o desenvolvimento da rede
conter pesos, dados de entradas, dados de saídas, porém o é a abstração dos dados relativos ao problema e a sua
cálculo do erro para cada um se difere [13]. separação em conjuntos, treinamento e diagnóstico. Esta
tarefa requer uma minuciosa análise para que não haja
problemas como ambigüidade e erros nos dados. Além
disso, os dados devem ser significativos e cobrir
amplamente o problema em questão.
Normalmente os dados coletados são separados em duas
categorias, dados de treinamento que serão utilizados para o
treinamento da rede e diagnóstico, que serão utilizados para
verificação da performance (desempenho) sob condições
reais de utilização.
Figura 2. Exemplo de classe com herança.
4.1.2. Configuração da rede
A Figura 2 ilustra um exemplo de classe utilizando O terceiro passo é quem denomina o comportamento da
herança, em Java pode-se observar o uso da palavra extends, rede conforme os padrões de entrada e diagnósticos
isto indica que a classe Neurônio Intermediário herda as apresentados no passo um e dois.
características da classe Neurônio, deste modo, é notório o Determinação dos parâmetros da rede como:
reuso da classe poupando assim a sobrecarga de códigos
repetitivos. Herança é a principal característica de um a) Taxa de Treinamento - γ;
sistema OOP. Como citado em [14], um sistema que não faz b) Inclinação da função de ativação - λ;
o uso de herança não é considerado um sistema totalmente c) Bias;
OOP. d) Taxa do momento - η;
Desta forma, a principal vantagem da herança é evitar a e) Escolha da função de ativação.
duplicidade, podendo unicamente herdar características de
uma classe-pai e especializar métodos e atributos.
Estes passos tem um grande impacto na performance
(desempenho) da rede neural, pois, uma boa escolha desses
3.4. Polimorfismo parâmetros a rede terá grande sucesso em sua convergência,
A característica de polimorfismo é a capacidade de embora a definição dessas configurações seja de forma
modificar e interagir com os objetos sem a necessidade do empírica.
conhecimento prévio de sua classe, através de
comportamento dinâmico [15]. Em outras palavras, esses 4.2. Integração
comportamentos podem possuir métodos homônimos,
Finalmente, com a rede já configurada e treinada, ela já
porém com resultados distintos e comportamentos distintos.
pode ser introduzida no ambiente da aplicação na qual ela
Assim o polimorfismo, junto com o encapsulamento, que
foi projetada. Para maior facilidade da operação, foi
será abordado a seguir, proporciona um código mais
desenvolvido uma interface gráfica para os passos um, dois
inteligível e aumenta o nível da dinâmica proposta pela OOP
e três visando um grande aumento de produtividade e
[15].
minimizando a complexidade da integração.
3.5. Encapsulamento
4.3. Idealização da Rede Neural
Segundo Jacobson [15], é a capacidade de definir
O sistema desenvolvido traz consigo uma interface bem
restrição a visibilidade, de acesso e modificação dos
intuitiva para o usuário, pois ela permite a configuração da
atributos e métodos, assim é possível encapsular métodos e
rede de forma rápida e bem customizada em três etapas.
atributos para que exista uniformidade de acesso durante e
Na primeira, é apresentado ao usuário um sistema de
depois do acesso, sem que haja a necessidade da
procura de arquivo em que se encontram os dados inerentes
modificação dos objetos dependentes de tais operações.
ao treinamento em questão. Neste arquivo, constam os
padrões de entradas e saídas.
4. APLICAÇÃO DA REDE NEURAL EM JAVA O próximo passo requer a configuração das camadas da
rede. O sistema automaticamente arbitra os melhores dados
4.1. Desenvolvimento da Aplicação de acordo com os dados fornecidos na primeira etapa,
porém, também possível a seleção do número de neurônios
Para este trabalho foi desenvolvido na linguagem JAVA em cada camada através do botão “Customizar”. Nesta fase,
uma interface gráfica para que o usuário entre com as é então apresentado um preview do arquivo na janela do
configurações e os dados de entrada por um arquivo programa, conforme visto na Figura 5.

4
Proceedings of the 9th Brazilian Conference on Dynamics Control and their Applications
Serra Negra, SP - ISSN 2178-3667 394
Na terceira e última etapa, o usuário entrará com os Após ter concluído as três etapas, inicia-se o treinamento
dados referentes ao treinamento, tais como: taxa de clicando no botão “Iniciar o processo de treinamento”. Caso
treinamento, erro mínimo tolerável, quantidade de épocas, a rede tenha convergido, é apresentado um gráfico (Figura
valor do bias, inclinação da função de ativação, momento, 6) contendo a média do erro quadrático da rede, e ao mesmo
tipo de função de ativação e as configurações iniciais dos tempo, sugere-se ao usuário diagnosticar a rede para a
pesos. conferência do treinamento, o gráfico do diagnóstico é
Nestas duas últimas, o sistema permite ao usuário ilustrado na Figura 7.
selecionar através de caixa de seleção outros
comportamentos a seguir: 4.4. Aplicação na análise de sensibilidade
a) Seleção do tipo da função de ativação: Sigmóide Neste artigo considera-se um exemplo para aplicação
Logística, Tangente Hiperbólica, Relé, etc. mostrada na Análise de Estabilidade Transitória de um Sistema de
na Figura 3; Energia Elétrica composto por 3 máquinas síncronas, 7
linhas de transmissão e 9 barras [16].
Na análise de estabilidade transitória é adotado o modelo
clássico [6] e ela corresponde à obtenção da margem de
segurança para contingências de curto-circuito com saída de
linha de transmissão sob defeito.
O objetivo do trabalho é evidenciar a aplicabilidade e
simplicidade da rede neural feedforward com algoritmo
retropropagação através da linguagem de programação
JAVA.
Neste artigo será mostrada a aplicação da rede neural
para o diagnóstico da margem de segurança para o sistema
de 3 máquinas [6].

Tabela 1. Parâmetros utilizados na rede neural.

Sistema Anderson &


Item
Fouad
Número de vetores padrões 40
Número de camadas 3
Número de neurônios por camadas 5-10-1
Tolerância 0,0001
Taxa de treinamento - γ 0,3
Momento - η 0,8
Figura 3. Escolha da função de ativação. Inclinação da função sigmóide - λ 0,3

b) Seleção do tipo de sementes iniciais para os pesos: Na Tabela 1 são apresentados os parâmetros que foram
Pesos com valor entre -1 e 1, com valores entre 0 e 1 utilizados no treinamento e diagnostico da rede neural.
ou pesos aleatórios como ilustra a Figura 4.

Figura 5. Interface da rede neural na linguagem JAVA.


Figura 4. Escolha dos pesos.

5
Proceedings of the 9th Brazilian Conference on Dynamics Control and their Applications
Serra Negra, SP - ISSN 2178-3667 395
Implementação De Redes Neurais Artificiais Utilizando A Linguagem De Programação Java
José R. Campos, Anna D. P. Lotufo, Carlos R. Minussi, Mara L. M. Lopes

A Figura 5 mostra a interface do programa JAVA para a Tabela 2. Resultados reais e obtidos pela rede neural.
rede neural feedforward com algoritmo retropropagação.
Pode-se observar que a interface proporciona ao usuário a Saída Saída Saída Saída Saída Saída Saída Saída
Real Obtida Real Obtida Real Obtida Real Obtida
disponibilização de todos os parâmetros que são utilizados
no processamento da rede neural. 0.510 0.519 0.345 0.349 0.215 0.214 0.100 0.128
0.420 0.434 0.355 0.353 0.300 0.279 0.225 0.218
Nota-se também, que os dados de entrada da rede neural 0.225 0.155 0.090 0.035
0.221 0.139 0.091 0.063
utilizados na aplicação tanto para o treinamento quanto para 0.225 0.220 0.155 0.131 0.100 0.082 0.040 0.056
o diagnostico da rede neural, que neste caso é analise de 0.585 0.598 0.445 0.431 0.265 0.269 0.105 0.150
sensibilidade, são indexados ao processo como um arquivo 0.665 0.675 0.575 0.582 0.505 0.482 0.370 0.386
de dados. 0.470 0.478 0.370 0.378 0.295 0.292 0.255 0.219
A interface proporciona ao mesmo tempo uma conexão 0.310 0.321 0.240 0.236 0.180 0.176 0.125 0.132
0.415 0.421 0.330 0.339 0.265 0.261 0.210 0.195
da entrada de dados, que serão utilizados na rede neural, e 0.270 0.262 0.195 0.197 0.135 0.148 0.090 0.112
da saída de dados que fornecem os resultados pertinentes a
cada aplicação. A saída do número de iterações obtida pela Na Tabela 2 observam-se os resultados obtidos, via
rede neural e o tempo de processamento estão indicados na método PEBS (saída real) [16] e pela rede neural
parte inferior da interface. feedforward com treinamento retropropagação (saída
Durante o processamento do treinamento da rede neural obtida). Observa-se que a RNA gerar diagnósticos próximos
é criada uma interface gráfica após a convergência da rede dos dados fornecidos via PEBS.
como mostra a Figura 6. Esta interface representa a
evolução do erro obtido no treinamento da rede neural até a
5. CONCLUSÃO
convergência.
Este artigo apresenta uma metodologia para
treinamento de redes neurais feedforward baseado no
algoritmo retropropagação executada através de uma
programação orientada a objeto. Para demonstrar a
facilidade da analise e do desenvolvimento da rede neural
feedforward com algoritmo retropropagação foi
desenvolvido um sistema de análise de estabilidade
transitória de um Sistema de Energia Elétrica Multi-
máquinas (Sistema Anderson & Fouad) [6].
O enfoque principal do artigo é a implementação da rede
neural de tal forma que ela tivesse uma linguagem mais
acessível para vários profissionais de diversas áreas podendo
ser aplicada em inúmeras situações. A dificuldade de
implementação do algoritmo faz com que os pesquisadores
procurem programas mais dinâmicos como por exemplo o
Figura 6. Interface gráfica do erro obtido pela rede neural. MATLAB. Porém, nem todos os programas oferecem o
suporte técnico necessário para a análise total da aplicação.
Após a execução do treinamento torna-se ativo o ícone Uma técnica inovadora que está sendo muito difundida no
de diagnostico o qual é realizado seguidamente gerando a ambiente de desenvolvimento de aplicativos é a
interface gráfica ilustrada pela Figura 7. Este gráfico mostra programação orientada ao objeto.
os resultados reais da aplicação e os resultados obtidos pela A grande vantagem de utilizar a técnica de programação
rede neural. orientada a objeto é que ela proporciona maior facilidade na
programação, uma maior reutilização de código e
independência no desenvolvimento de módulos.
Dentre as linguagens de programação orientada a objeto
existentes foi escolhida a linguagem de programação JAVA,
por ser totalmente orientada a objeto, por ter grande
facilidade na construção de interfaces gráficas através do
aplicativo NetBeans IDE 6.8. Desta forma, foram
desenvolvidas interfaces para a interação com o usuário a
fim de estabelecer simplicidade na customização da rede.
O presente trabalho não enfatiza somente o
desenvolvimento da rede neural para a análise de
estabilidade, mas sim na utilização da técnica da OOP.
Foram apresentadas no decorrer do trabalho, várias
Figura 7. Comparação entre os resultados reais e resultados obtidos. vantagens na utilização e aplicação da mesma, dessa forma,
os resultados esperados foram muito satisfatórios.
No caso da aplicação na análise de estabilidade
transitória o objetivo, neste artigo, é utilizar a rede neural AGRADECIMENTOS
para diagnosticar as margens de segurança para um conjunto Agradeço a Universidade Estadual Paulista - Júlio de
de potências. Mesquita Filho (UNESP) Campus de Ilha Solteira por ter

6
Proceedings of the 9th Brazilian Conference on Dynamics Control and their Applications
Serra Negra, SP - ISSN 2178-3667 396
proporcionado uma estrutura adequada para o término deste
trabalho.

REFERENCIAS
[1] T. L. Fine, “Feedforward Neural Network Methodology”,
Springer-Verlag, USA, 1999.
[2] P. J. Werbos, “Beyond Regression: New Tools for Prediction and
Analysis in the Behavioral Sciences”, Master Thesis, Harvard
University, 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: An
Introduction”, Addison Wesley, New York, 1991.
[6] P. M. Anderson, A. A. Fouad, “Power System Control and
Stability”, 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 de
Cargas Elétricas via Redes Neurais”, Dissertação de Mestrado,
Programa de Pós-graduação em Engenharia Elétrica - Faculdade
de Engenharia de Ilha Solteira - UNESP, 2000.
[10] C. R. Minussi, M. C. G. Silveira, “Electric Power System
Transient Stability by Neural Networks”, 38 Th Midwest
Symposium 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 Desenvolver
Sistemas Profissionais Orientados a Objetos com Padrões de
Projeto”, ed. 1, Novatec, São Paulo, 2007.
[13] C. Cardoso, “Orientação a Objetos na Prática”, ed. 1, Ciência
Moderna, São Paulo, 2006.
[14] A. Leite, “FJ-11 - Java e Orientação a Objetos”, Apostila do
Curso FJ11 – CAELUM Ensino e Inovação, 2009.
[15] I. Jacobson, “Object Oriented Software Engineering: A Use Case
Driven Approach (Hardcover)”, Addison-Wesley, 1992.
[16] A. D. P. Lotufo, “Análise de Sensibilidade por Redes Neurais para
Estudos de Estabilidade Transitória de Sistemas Elétricos de
Potência”, Tese de Doutorado, Programa de Pós-Graduação em
Engenharia Elétrica, UNESP, Campus de Ilha Solteira, 2004.

7
Proceedings of the 9th Brazilian Conference on Dynamics Control and their Applications
Serra Negra, SP - ISSN 2178-3667 397
View publication stats

Você também pode gostar