Home | Develop | Download | Contact
Namespaces
Funciones Pds::Optimization::Firefly

Funciones para la optimización de una función de costo: Pds::Optimization::Firefly(), etc. Más...

Namespaces

namespace  Pds
 Nombre de espacio para Pds (Procesamiento Digital de Senales)
 
namespace  Pds::Optimization
 Nombre de espacio para Optimization.
 

Optimization : Gaussiam mixture model

Pds::Vector Pds::Optimization::Firefly (Pds::FireflyConf &Conf, unsigned int L, double(*CostFunc)(const Pds::Vector &W, const std::vector< Pds::Matrix > &Params), const std::vector< Pds::Matrix > &Params, Pds::Vector(*WorkingRegion)(const Pds::Vector &W, const std::vector< Pds::Matrix > &Params), double *BestCost=NULL)
 Implementa Firefly Algorithm [8] [9] [pp. 81] [7]. Más...
 
Pds::Vector Pds::Optimization::Firefly (Pds::FireflyConf &Conf, const std::vector< Pds::Vector > &W0, double(*CostFunc)(const Pds::Vector &W, const std::vector< Pds::Matrix > &Params), const std::vector< Pds::Matrix > &Params, Pds::Vector(*WorkingRegion)(const Pds::Vector &W, const std::vector< Pds::Matrix > &Params), double *BestCost=NULL)
 Implementa Firefly Algorithm [8] [9] [pp. 81] [7]. Más...
 

Descripción detallada

Funciones para la optimización de una función de costo: Pds::Optimization::Firefly(), etc.

#include <Pds/FuncOptFirefly>

Documentación de las funciones

◆ Firefly() [1/2]

Pds::Vector Pds::Optimization::Firefly ( Pds::FireflyConf Conf,
unsigned int  L,
double(*)(const Pds::Vector &W, const std::vector< Pds::Matrix > &Params)  CostFunc,
const std::vector< Pds::Matrix > &  Params,
Pds::Vector(*)(const Pds::Vector &W, const std::vector< Pds::Matrix > &Params)  WorkingRegion,
double *  BestCost = NULL 
)

Implementa Firefly Algorithm [8] [9] [pp. 81] [7].

La función retorna el mejor vector $\mathbf{w}$ encotrado que maximize la función $CostFunc(\mathbf{w},Params): \mathbb{R}^{N}\rightarrow \mathbb{R}$, restricto al dominio descrito por la función $WorkingRegion(\mathbf{w},Params): \mathbb{R}^{N}\rightarrow \mathbb{R}^N$.

\[
{\boldsymbol {\epsilon }}_{t} \leftarrow Pds::RandN(N,1)
\]

\[
\alpha_t \leftarrow \alpha_0 ~ \delta^t 
\]

\[
{\mathbf {w}}_{i}^{{t+1}}={\mathbf {w}}_{i}^{t}+\beta e^{-\gamma ||{\mathbf {w}}_{j}^{t}-{\mathbf {w}}_{i}^{t}||^{2}}({\mathbf {w}}_{j}^{t}-{\mathbf {w}}_{i}^{t})+\alpha _{t}{\boldsymbol {\epsilon }}_{t}
\]

Comentarios
Es necesario que el usuario cree las funciones,

$\mathbf{w}=WorkingRegion(\mathbf{w},Params)$: La función de restrición de dominio.
Pds::Vector WorkingRegion(const Pds::Vector &W,const std::vector<Pds::Matrix> &Params)
{
if(W.IsEmpty())
{
// Generate a Wn vector usando Params.
return Wn;
}
// Apply transform in Wn to locate it in the acceptable region.
return Wn;
}
La clase tipo Pds::Vector . Esta clase genera una matriz de Nlin lineas y 1 columna....
Definition: Vector.hpp:80
bool IsEmpty(void) const
Verifica si la matriz es nula es decir con lineas o columnas cero o arreglo NULL.

$f=CostFunc(\mathbf{w},Params)$: La función a maximizar.
double CostFunc(const Pds::Vector &W,const std::vector<Pds::Matrix> &Params)
{
// Calculate the cost C using W y Params.
return C;
}
Parámetros
[in]ConfConfiguracion de las iteraciones. Esta variable contiene, entre otras cosas, las variables $\alpha_0$, $\beta$, $\gamma$ y $\delta$.
[in]LCantidad de Fireflies a crear. For most applications, we can use the population size L = 15 to 100, though the best range is L = 25 to 40. L debe ser mayor igual de 2.
[in]CostFuncFuncion de costo $CostFunc: \mathbb{R}^{N}\rightarrow \mathbb{R}$ la cual deseamos maximizar. Esta función acepta vários parametros de entrada, si necesario, en el vector de matrices Params.
[in]ParamsVector de matrices para ser pasadas a las funciones $CostFunc()$ y $WorkingRegion()$.
[in]WorkingRegionFuncion de restriccion de dominio $WorkingRegion: \mathbb{R}^{N}\rightarrow \mathbb{R}^N$.
  • Si la función recibe un vector vacio la función retorna un vector aleatorio dentro de la región aceptable.
  • Si la función recibe un vector fuera de la región aceptable la función retorna un vector dentro de la región aceptable
Esta función acepta vários parametros de entrada, si necesario, en el vector de matrices Params.
[out]BestCost[Optional] Retorna el valor de la funcion de costo para el vector retornado. En caso de error este valor no es modificado.
Devuelve
La función retorna el vector $\mathbf{w}$ que tiene el mayor valor econtrado de $CostFunc(\mathbf{w},Params)$.

◆ Firefly() [2/2]

Pds::Vector Pds::Optimization::Firefly ( Pds::FireflyConf Conf,
const std::vector< Pds::Vector > &  W0,
double(*)(const Pds::Vector &W, const std::vector< Pds::Matrix > &Params)  CostFunc,
const std::vector< Pds::Matrix > &  Params,
Pds::Vector(*)(const Pds::Vector &W, const std::vector< Pds::Matrix > &Params)  WorkingRegion,
double *  BestCost = NULL 
)

Implementa Firefly Algorithm [8] [9] [pp. 81] [7].

La función retorna el mejor vector $\mathbf{w}$ encotrado que maximize la función $CostFunc(\mathbf{w},Params): \mathbb{R}^{N}\rightarrow \mathbb{R}$, restricto al dominio descrito por la función $WorkingRegion(\mathbf{w},Params): \mathbb{R}^{N}\rightarrow \mathbb{R}^N$.

\[
{\boldsymbol {\epsilon }}_{t} \leftarrow Pds::RandN(N,1)
\]

\[
\alpha_t \leftarrow \alpha_0 ~ \delta^t 
\]

\[
{\mathbf {w}}_{i}^{{t+1}}={\mathbf {w}}_{i}^{t}+\beta e^{-\gamma ||{\mathbf {w}}_{j}^{t}-{\mathbf {w}}_{i}^{t}||^{2}}({\mathbf {w}}_{j}^{t}-{\mathbf {w}}_{i}^{t})+\alpha _{t}{\boldsymbol {\epsilon }}_{t}
\]

Comentarios
Es necesario que el usuario cree las funciones,

$\mathbf{w}=WorkingRegion(\mathbf{w},Params)$: La función de restrición de dominio.
Pds::Vector WorkingRegion(const Pds::Vector &W,const std::vector<Pds::Matrix> &Params)
{
if(W.IsEmpty())
{
// Generate a Wn vector usando Params.
return Wn;
}
// Apply transform in Wn to locate it in the acceptable region.
return Wn;
}

$f=CostFunc(\mathbf{w},Params)$: La función a maximizar.
double CostFunc(const Pds::Vector &W,const std::vector<Pds::Matrix> &Params)
{
// Calculate the cost C using W y Params.
return C;
}
Parámetros
[in]ConfConfiguracion de las iteraciones. Esta variable contiene, entre otras cosas, las variables $\alpha_0$, $\beta$, $\gamma$ y $\delta$.
[in]W0Posiciones iniciales de los Firefly. El numero de elementos en W0 debe ser mayor igual de 2.
[in]CostFuncFuncion de costo $CostFunc: \mathbb{R}^{N}\rightarrow \mathbb{R}$ la cual deseamos maximizar. Esta función acepta vários parametros de entrada, si necesario, en el vector de matrices Params.
[in]ParamsVector de matrices para ser pasadas a las funciones $CostFunc()$ y $WorkingRegion()$.
[in]WorkingRegionFuncion de restriccion de dominio $WorkingRegion: \mathbb{R}^{N}\rightarrow \mathbb{R}^N$.
  • Si la función recibe un vector vacio la función retorna un vector aleatorio dentro de la región aceptable.
  • Si la función recibe un vector fuera de la región aceptable la función retorna un vector dentro de la región aceptable
Esta función acepta vários parametros de entrada, si necesario, en el vector de matrices Params.
[out]BestCost[Optional] Retorna el valor de la funcion de costo para el vector retornado. En caso de error este valor no es modificado.
Devuelve
La función retorna el vector $\mathbf{w}$ que tiene el mayor valor econtrado de $CostFunc(\mathbf{w},Params)$.

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed