IMPLEMENTAÇÃO DE REDES NEURAIS ARTIFICIAIS UTILIZANDO

Propaganda
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, [email protected], [email protected], [email protected], [email protected]
Abstract: This work develops a feedforward neural 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.
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].
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 supervisionadas
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
2. REDES NEURAIS ARTIFICIAIS
2.1. Estrutura da 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).
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
[9]:
sendo:
θi (h)
γ
h
∇i (h)
1. Um conjunto de entradas (sinais) X, x1, x2, ..., xn, são
apresentados à rede;
2. Cada sinal é ponderado por um peso associado V,
w1, w2, ..., wn, que indica sua influência na saída da
unidade;
3. As entradas ponderadas são aplicadas ao bloco
somatório, Σ , onde se adiciona também uma entrada
independente, x0 = 1, denominada bias;
4. A saída intermediária do neurônio é, então, dada por [3]:
si =
n
∑ wi j x j
Vi
Vi (h + 1) = Vi (h) − θ i (h)
=
=
=
=
γ [∇i (h)];
taxa de treinamento;
índice da iteração;
gradiente do erro quadrático com relação aos
pesos do neurônio i avaliado em h;
= 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 a
função objetivo do erro quadrático corresponde à direção
contrária ao gradiente. O gradiente ∇i (h) pode ser
expresso por [3], [7]:
(1)
j
5. A saída é, então, convertida em não-linearidade através
das funções de ativação (relé ou sigmóide).
2.1. Treinamento da Rede Neural
∇ i ( h) =
A rede neural possui a capacidade de aprender, para
tanto, ela deve ser treinada, ajustando assim os seus pesos.
Para tal, necessita-se de algoritmo de treinamento, neste
caso, utiliza-se o algoritmo retropropagação.
O algoritmo retropropagação é um procedimento
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
seja minimizado. É realizado da seguinte forma [3], [9]:
yi =
(4)
1
(5)
1 + e( −λ si )
sendo:
λ = constante que determina a inclinação da curva yi
Diferenciando a Equação (2) com relação ao vetor Vi,
obtém-se:
∂ yi
∂ yi ∂ si
∂ εi
=−
=
∂ Vi
∂ Vi
∂ si ∂ Vi
(6)
Da Equação (6), resulta-se:
O algoritmo retropropagação consiste na adaptação de
pesos, tal que, o erro quadrático da rede é minimizado. A
soma do erro quadrático instantâneo de cada neurônio
alocado na última camada é dada por [3]:
ns
∂ εi
∂ ε i2
= 2 εi
∂ Vi (h)
∂ Vi (h)
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óide
definida por [3], [7], [9]:
1. Apresentação de um padrão X à rede, o qual fornece
uma 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, ou
seja, (erro < tolerância preestabelecida) ou o número de
iterações corresponda a um valor máximo previamente
estabelecido
ε 2 = ∑ ε i2
(3)
em que:
sgm' ( si ) =
(2)
∂εi
∂ si
= − sgm' ( si )
∂ Vi
∂ Vi
∂ yi
= λ yi ( 1 − yi ) , derivada parcial de yi
∂ si
com relação a si.
Observa-se que:
i =1
sendo:
εi = d i - yi ;
di = 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.
(7)
∂ si
= Xi
∂ Vi
(8)
sendo:
Xi Δ vetor padrão;
= [ x 0 i x1i x 2 i K x n i ] T.
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
ajuste de pesos pode ser formulado como:
∂εi
= − sgm' ( s i ) X i
∂ Vi
(9)
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:
∇ i (h) = − 2 ε i sgm' ( s i ) X i
Nesta seção serão abordados os principais conceitos que
permeiam o uso das técnicas de OOP utilizando a linguagem
de programação JAVA.
Um dos grandes diferenciais desta técnica em relação a
outros 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 o
conceito de herança a importância do polimorfismo, que é a
capacidade de invocar métodos que tem a mesma
identificação (assinaturas), porém comportamentos distintos
[12]. Para considerar-se um sistema OOP, é necessário levar
em conta pelo menos 4 características:
(10)
Utilizando (10) estimado no método do gradiente
descendente, obtém-se o seguinte algoritmo [3], [7]:
Vi (h + 1) = Vi (h) + 2 γ ε i ( λ yi ( 1 − yi ) ) X i
(11)
Os pesos iniciais são normalmente adotados como
números randômicos, visto que a iniciação nula quase
sempre proporciona baixa convergência [3].
Uma formulação bastante interessante é o algoritmo
retropropagação com momento que faz com que o
algoritmo se torne mais rápido.
O processo de aprendizagem exige com que a mudança
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
treinamento grande o possível para que haja oscilação sem
direção. Assim, um meio de evitar a oscilação para γ
grande, é tomar uma variação no peso dependente da
variação do peso passado acrescentando o termo momento.
Este
procedimento
se
constitui
no
algoritmo
retropropagação com momento [11].
A adaptação dos pesos, neste caso, pode ser formulada
da seguinte forma [3]:
sendo:
Δvij (h) =
=
vij
γ
η
=
=
vij (h+1) = vij (h) + Δvij (h)
•
•
•
•
Classificação;
Herança;
Polimorfismo;
Encapsulamento.
3.1. Classe
A definição de classes e seus inter-relacionamentos são
conhecidos como o gabarito para a definição de seus
objetos, apresentando-se quais propriedades, atributos o
objeto terá. Classe, não descreve somente os atributos, mas
também o comportamento dos objetos, ou seja, quais
funcionalidades poderão ser aplicadas aos objetos, essas
funcionalidades são descritas através de métodos. Um
método nada mais é que o análogo a uma função ou
procedimento, diferindo-se somente que ele manipula os
atributos da classe e variáveis locais definidos [13].
Um exemplo de classe utilizando a linguagem JAVA é
descrito na Figura 1.
(12)
2 γ (1 - η) βj xi + ηΔvij (h-1);
(13)
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.
se:
Figura 1. Exemplo de classe.
Se o elemento j encontrar-se nas demais camadas tem-
βj =σ j
∑ w j k βk
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 é o
algoritmo retropropagação.
(15)
k ∈R ( j)
sendo:
R(j) = conjunto dos índices dos elementos que se
encontram na fileira seguinte à fileira do
elemento j e que estão interligados ao elemento
j.
3.2. Objeto
No contexto de OOP, um objeto é uma entidade capaz de
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
instância quando pertencer a uma classe. As declarações de
um objeto são denominadas métodos e suas informações
atributos [13].
3. ORIENTAÇÃO A OBJETO
A orientação a objeto (OOP) não tem a intenção de
substituir a programação estrutural tradicional, desta forma
ela é 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].
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
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
como 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ém
comportamentos 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 o
cálculo do erro para cada um se difere [13].
específico, há alguns passos necessários para a o sucesso do
aprendizado 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 sua
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
O terceiro passo é quem denomina o comportamento da
rede conforme os padrões de entrada e diagnósticos
apresentados no passo um e dois.
Determinação dos parâmetros da rede como:
A Figura 2 ilustra um exemplo de classe utilizando
herança, em Java pode-se observar o uso da palavra extends,
isto indica que a classe Neurônio Intermediário herda as
características da classe Neurônio, deste modo, é notório o
reuso da classe poupando assim a sobrecarga de códigos
repetitivos. Herança é a principal característica de um
sistema OOP. Como citado em [14], um sistema que não faz
o uso de herança não é considerado um sistema totalmente
OOP.
Desta forma, a principal vantagem da herança é evitar a
duplicidade, podendo unicamente herdar características de
uma classe-pai e especializar métodos e atributos.
a)
b)
c)
d)
e)
Taxa de Treinamento - γ;
Inclinação da função de ativação - λ;
Bias;
Taxa do momento - η;
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 forma
empírica.
3.4. Polimorfismo
A característica de polimorfismo é a capacidade de
modificar e interagir com os objetos sem a necessidade do
conhecimento prévio de sua classe, através de
comportamento dinâmico [15]. Em outras palavras, esses
comportamentos podem possuir métodos homônimos,
porém com resultados distintos e comportamentos distintos.
Assim o polimorfismo, junto com o encapsulamento, que
será abordado a seguir, proporciona um código mais
inteligível e aumenta o nível da dinâmica proposta pela OOP
[15].
4.2. Integração
Finalmente, com a rede já configurada e treinada, ela já
pode ser introduzida no ambiente da aplicação na qual ela
foi projetada. Para maior facilidade da operação, foi
desenvolvido uma interface gráfica para os passos um, dois
e três visando um grande aumento de produtividade e
minimizando a complexidade da integração.
3.5. Encapsulamento
4.3. Idealização da Rede Neural
Segundo Jacobson [15], é a capacidade de definir
restrição a visibilidade, de acesso e modificação dos
atributos e métodos, assim é possível encapsular métodos e
atributos para que exista uniformidade de acesso durante e
depois do acesso, sem que haja a necessidade da
modificação dos objetos dependentes de tais operações.
O sistema desenvolvido traz consigo uma interface bem
intuitiva para o usuário, pois ela permite a configuração da
rede 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 inerentes
ao 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 da
rede. O sistema automaticamente arbitra os melhores dados
de acordo com os dados fornecidos na primeira etapa,
porém, também possível a seleção do número de neurônios
em 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.
4. APLICAÇÃO DA REDE NEURAL EM JAVA
4.1. Desenvolvimento da Aplicação
Para este trabalho foi desenvolvido na linguagem JAVA
uma interface gráfica para que o usuário entre com as
configurações e os dados de entrada por um arquivo
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
dados referentes ao treinamento, tais como: taxa de
treinamento, 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ário
selecionar através de caixa de seleção outros
comportamentos a seguir:
Após ter concluído as três etapas, inicia-se o treinamento
clicando no botão “Iniciar o processo de treinamento”. Caso
a rede tenha convergido, é apresentado um gráfico (Figura
6) contendo a média do erro quadrático da rede, e ao mesmo
tempo, sugere-se ao usuário diagnosticar a rede para a
conferência do treinamento, o gráfico do diagnóstico é
ilustrado na Figura 7.
a) Seleção do tipo da função de ativação: Sigmóide
Logística, Tangente Hiperbólica, Relé, etc. mostrada
na Figura 3;
Neste artigo considera-se um exemplo para aplicação
na Análise de Estabilidade Transitória de um Sistema de
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].
4.4. Aplicação na análise de sensibilidade
Tabela 1. Parâmetros utilizados na rede neural.
Item
Número de vetores padrões
Número de camadas
Número de neurônios por camadas
Tolerância
Taxa de treinamento - γ
Momento - η
Inclinação da função sigmóide - λ
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 1
ou pesos aleatórios como ilustra a Figura 4.
Sistema Anderson &
Fouad
40
3
5-10-1
0,0001
0,3
0,8
0,3
Na Tabela 1 são apresentados os parâmetros que foram
utilizados no treinamento e diagnostico da rede neural.
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
rede neural feedforward com algoritmo retropropagação.
Pode-se observar que a interface proporciona ao usuário a
disponibilização de todos os parâmetros que são utilizados
no 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 para
o diagnostico da rede neural, que neste caso é analise de
sensibilidade, são indexados ao processo como um arquivo
de dados.
A interface proporciona ao mesmo tempo uma conexão
da entrada de dados, que serão utilizados na rede neural, e
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
rede 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 rede
como mostra a Figura 6. Esta interface representa a
evolução do erro obtido no treinamento da rede neural até a
convergência.
Tabela 2. Resultados reais e obtidos pela rede neural.
Saída
Real
Saída
Obtida
Saída
Real
Saída
Obtida
Saída
Real
Saída
Obtida
Saída
Real
Saída
Obtida
0.510
0.420
0.225
0.225
0.585
0.665
0.470
0.310
0.415
0.270
0.519
0.434
0.221
0.220
0.598
0.675
0.478
0.321
0.421
0.262
0.345
0.355
0.155
0.155
0.445
0.575
0.370
0.240
0.330
0.195
0.349
0.353
0.139
0.131
0.431
0.582
0.378
0.236
0.339
0.197
0.215
0.300
0.090
0.100
0.265
0.505
0.295
0.180
0.265
0.135
0.214
0.279
0.091
0.082
0.269
0.482
0.292
0.176
0.261
0.148
0.100
0.225
0.035
0.040
0.105
0.370
0.255
0.125
0.210
0.090
0.128
0.218
0.063
0.056
0.150
0.386
0.219
0.132
0.195
0.112
Na Tabela 2 observam-se os resultados obtidos, via
método PEBS (saída real) [16] e pela rede neural
feedforward com treinamento retropropagação (saída
obtida). Observa-se que a RNA gerar diagnósticos próximos
dos dados fornecidos via PEBS.
5. CONCLUSÃO
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 Multimá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
MATLAB. Porém, nem todos os programas oferecem o
suporte técnico necessário para a análise total da aplicação.
Uma técnica inovadora que está sendo muito difundida no
ambiente de desenvolvimento de aplicativos é a
programação orientada ao objeto.
A grande vantagem de utilizar a técnica de programação
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
vantagens na utilização e aplicação da mesma, dessa forma,
os resultados esperados foram muito satisfatórios.
Figura 6. Interface gráfica do erro obtido pela rede neural.
Após a execução do treinamento torna-se ativo o ícone
de diagnostico o qual é realizado seguidamente gerando a
interface gráfica ilustrada pela Figura 7. Este gráfico mostra
os resultados reais da aplicação e os resultados obtidos pela
rede neural.
Figura 7. Comparação entre os resultados reais e resultados obtidos.
No caso da aplicação na análise de estabilidade
transitória o objetivo, neste artigo, é utilizar a rede neural
para diagnosticar as margens de segurança para um conjunto
de potências.
AGRADECIMENTOS
Agradeço a Universidade Estadual Paulista - Júlio de
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
Download