################################################## ################################
Random.Bounded.Matrix ##
########### ################################################## ###################
# Autor: Mauricio Zambrano-Bigiarini ##
###################### ################################################## ########
# Criado: 2008 ##
# Atualizações: 23-Nov-2010 ##
# 20-Sep-2012; 29-out-2012 ##
##################### #####################################
# Propósito: Criar uma matriz gerada aleatoriamente, com uma distribuição uniforme limitada
menor <- matriz ( rep ( x.MinMax [, 1 ], npara ), nrow = npart , byrow = TRUE )
superior <- matriz ( rep ( x.MinMax [, 2 ], npart ), nrow = npart , byrow = VERDADEIRO )
} # 'Random.Bounded.Matrix' end
# set.seed (1)
# Random.Bounded.Matrix (10, x.MinMax)
################################################## ##############################
## Amostragem aleatória em latim-hipercubo ##
########### ################################################## ###################
# Autor: Mauricio Zambrano-Bigiarini ##
# Criado: 17-Dez-2010 ##
# Atualizações: 20-Set-2012; 29-out-2012 ##
# 07-fev-2014 ##
################################### ##############################################
Propósito: Desenha um Amostra Latin Hypercube de um conjunto de distribuições uniformes
# para uso na criação de um projeto de hipercubo em latim
################## ##################################### ########################################
Output: Uma matriz de Amostra Hipercubo Latina de ndim com valores uniformemente
# distribuídos em 'ranges'
######################################### #######################################
https://rdrr.io/cran/hydroPSO/src/R/PSO_v2013.R 1/5
4/19/2019 hydroPSO source: R/PSO_v2013.R
# número de partículas
npart <- n
menor <- matriz ( rep ( intervalos [, 1 ], npara ), nrow = npart , byrow = TRUE )
superior <- matriz ( rep ( intervalos [, 2 ], npart ), nrow = npart , byrow = TRUE )
} # 'rLHS' end
################################################## ###############################
enorm #
################# ################################################## #############
# Autor: Mauricio Zambrano-Bigiarini
############################# ################################################## #
# Criado: 19-Sep-2012 #
# Atualizações: #
#################################### #############################################
Propósito: Calcula o Euclidiano norma de um vetor #
################################################## ###############################
Saída: valor numérico único com a norma euclideana de 'x' #
##### ################################################## #########################
enorm <- function ( x ) sqrt ( soma ( x * x ) )
################################################## ##############################
# alea.normal #
############### ################################################## ###############
# Autor: Mauricio Zambrano-Bigiarini #
# Baseado na função Matlab desenvolvida por Maurice Clerc (Maio de 2011), #
# e disponível em: #
# http: // www.particleswarm.info/SPSO2011_matlab.zip
######################################### #########################################
Criado em: 19-Set-2012 #
# Atualizações: 29-out-2012
################### ########################################
Propósito: Utiliza a forma polar da Caixa Transformação -Muller para obter #
# um número pseudo-aleatório de uma distribuição Gaussiana #
################################# ################################################
Saída: valor numérico único com um número pseudo-aleatório de uma distribuição #
#
gaussiana com média = 'média' e desvio padrão = 'sd' # #####################
################################################## #########
alea.normal <- function ( mean =0 , sd = 1 ) {
w <- 2
enquanto ( w > = 1 ) {
x1 <- 2 * runif ( 1 ) - 1
x2 <- 2 * runif ( 1 ) - 1
w <- x1 * x1 + x2 * x2
} # 'ENQUANTO' fim
w <- sqrt ( -2 * log ( w ) / w )
y1 <- x1 * w
if ( runif ( 1 ) < 0.5 ) y1 <- - y1
y1 <- y1 * sd + média
} # 'alea.normal' end
https://rdrr.io/cran/hydroPSO/src/R/PSO_v2013.R 2/5
4/19/2019 hydroPSO source: R/PSO_v2013.R
################################################## ##############################
# alea.sphere
############### ################################################## ###############
# Autor: Mauricio Zambrano-Bigiarini #
# Baseado na função Matlab desenvolvida por Maurice Clerc (Maio de 2011), #
# e disponível em: #
# http: // www.particleswarm.info/SPSO2011_matlab.zip
######################################### #########################################
Criado em: 19-Set-2012 #
# Atualizações: #
####################### ###################################
Propósito: Gera um ponto aleatório dentro da hiperesfera centrada #
# em torno de G com raio = r #
###################### ####################################
Output: vetor numérico com a localização de um ponto aleatório dentro do #
# hypersphere around G com radius = r #
######################################### #######################################
alea.sphere <- função ( G ,raio ) {
# Passo 1. Direção
l <- 0
#x <- replicar (n, alea.normal (média = 0, sd = 1))
x <- rnorm ( n , média = 0 , sd = 1 )
l <- sqrt ( soma ( x * x ) )
x <- r * raio * x / l
} # 'alea.sphere' end
################################################## ###############################
compute.CF Função #
############## ################################################## ################
# Autor: Mauricio Zambrano-Bigiarini
########################### ################################################## ####
# Criado: 2008 #
# Atualizações: #
##################################### ###########################################
# Calcula o fator de constrição de Clerc
# Clerc, M; Kennedy, J .; , "O enxame de partículas - explosão, estabilidade e
# convergência em um espaço complexo multidimensional", Evolutionary Computation,
# IEEE Transactions on, vol.6, no.1, pp. 58-73, fev 2002
# doi: 10.1109 / 4235.985692
# Resultado: vetor de 'n' velocidades, uma para cada parâmetro, correspondendo à partícula atual
############################## ##################################################
## compute.veloc Function ##
################### ######################################
# Autor: Mauricio Zambrano-Bigiarini #
#### ################################################## ##########################
# Criado: 2008 #
# Atualizações: out-2011; Nov-2011 #
# 19-set-2012; 20 de setembro de 2012; 28 de outubro de 2012; 31 de outubro de 2012
# 09-May-2016 #
#################### #####################################
compute.veloc <- function ( x , v , w , c1 , c2 , CF , Pbest , part.index , gbest ,
topologia , método , MinMax , neighs.index ,
localBest , localBest.pos ,
ngbest.fit , ngbest , lpbest.fit ) {
if ( método == "spso2011" ) {
p <- x + r1 * c1 * ( pbest - x )
l <- x + r2 * c2 * ( localBest - x )
if ( part.index ! = localBest.pos ) {
Gr <- ( x + p + l ) / 3
} mais Gr <- ( x + p ) / 2
if ( part.index ! = localBest.pos ) {
vn <- CF * ( w * v + r1 * c1 * ( pbest - x ) + r2 * c2 * ( localBest - x ) )
} mais vn <- CF * ( w * v + r1 * c1 * ( pbest - x) )
https://rdrr.io/cran/hydroPSO/src/R/PSO_v2013.R 4/5
4/19/2019 hydroPSO source: R/PSO_v2013.R
# computando os valores c2 para cada uma das melhores partículas,
# ponderada de acordo com seu valor de adequação
se ( MinMax == "min" ) {
c2i <- c2 * ( ( 1 / ngbest.fit ) / soma ( 1 / ngbest. fit ) )
} else c2i <- c2 * ( ngbest.fit / sum ( ngbest.fit ) )
# computando a velocidade
vn <- CF * ( w * v + r1 * c1 * ( pbest - x ) + colSums ( R2 * c2i * ( ngbest - X )
) )
vn <- CF * ( w * v + ( 1 / N ) * colSums ( r * ( P - X ) ) )
retorno ( vn )
} # 'compute.veloc' end
https://rdrr.io/cran/hydroPSO/src/R/PSO_v2013.R 5/5