Sistemas de Controle  0.5
Biblioteca matematica de Controle
Métodos Públicos | Atributos Protegidos | Lista de todos os Membros
Referência da Template de Classe Optimization< UsedType >abstract

Classe abstrata que tratam todos os métodos de otimização de sistemas. Mais...

#include <optimization.h>

Diagrama de colaboração para Optimization< UsedType >:
Collaboration graph

Métodos Públicos

 Optimization ()
 Construtor padrão da biblioteca de otimização. Mais...
 
Matrix< UsedType > getOptimizatedVariable ()
 
Matrix< UsedType > getRestrictionEqualityr ()
 
Matrix< UsedType > getRestrictionR ()
 
void AddRestrictionsEquality (Matrix< UsedType > A, Matrix< UsedType > B)
 
void AddRestrictionsInequality (Matrix< UsedType > A, Matrix< UsedType > B, bool isRigth)
 
void setRestrictionsEquality (Matrix< UsedType > A, Matrix< UsedType > B)
 
void setRestrictionsInequality (Matrix< UsedType > A, Matrix< UsedType > B, bool isRigth)
 
virtual void Optimize ()=0
 

Atributos Protegidos

Matrix< UsedType > OptimizatedVariable
 
Matrix< UsedType > RestrictionR
 
Matrix< UsedType > RestrictionEqualityr
 
Model< UsedType > * model
 

Descrição Detalhada

template<class UsedType>
class Optimization< UsedType >

Classe abstrata que tratam todos os métodos de otimização de sistemas.

O objetivo principal dessa classe é ser uma abstração para tratar e otimizar modelos matemáticos (redes neurais, arx, armax, carima, espaço de estados, função de transferência, fuzzy, e etc.). A funcionalidade desta classe é inquestionável quando percebemos que precisamos obter uma solução otimizada para os sistemas lineares e não lineares dos modelos. Por isso, ter uma classe que integre e abstraia essas funcionalidades facilitará a implementação e, também, a desacoplará.

Parâmetros
OptimizatedVariableMatrix com a solução otimizada do modelo dado.
RestrictionRAs restrições do sistema estão escritas na forma $ R\,\Beta = r $. A partir desta forma RestrictionR é a variável $R$ da equação.
RestrictionEqualityrAs restrições do sistema estão escritas na forma $ R\,\Beta = r $. A partir desta forma RestrictionEqualityr é a variável $r$ da equação.
modelé o modelo abstrato matemático, onde as matrizes de otimização são montadas.

Definição na linha 21 do arquivo optimization.h.

Construtores & Destrutores

template<class UsedType>
Optimization< UsedType >::Optimization ( )

Construtor padrão da biblioteca de otimização.

O construtor padrão da biblioteca de otimização permite que um objeto do tipo Optimization seja construído. O objetivo da otimização é encontar o valor dos coeficientes dos modelos matemáticos quando estes estão sujeitos a restrições. Dependendo da furmulação matemática também é possível encontrar, por exemplo, o sinal de entrada u (que pode significar a aplicação de uma força a um sistema físico) necessário para se ter o melhor desempenho sob certas limitações.

$Ex_1$:

#include "src/optimizationLibs/leastsquare.h"
int main(int argc, char *argv)
{
Matrix<double> A,B,C,D,u;
A = "-2,-1;1,0";
B = "0;1"; C = "0,1"; D = "0";
u = "1,2,3,-1,-3,8,8,8,1,1,1,1,1";
StateSpace<double> SS(A,B,C,D);
ARX<double> gz(2,2);
gz.setLinearModel(~u,~SS.sim(u));
Optimization<double> *LS = new LeastSquare<double>(&gz);
LS->Optimize();
return 0;
}

Resultado:

-1.810
0.819
0.100
-0.082

Ex2:

#include "src/optimizationLibs/leastsquare.h"
int main(int argc, char *argv)
{
Matrix<double> u, syspar;
u = "1,1,1,1,1,1,1,1,1,1";
syspar = "-1.809674836071920;0.818730753077982;0.004678840160444;0.004377076845618";
Model<double> *gz = new ARX<double>(2,2);
gz->setModelCoef(syspar);
gz->sim(~u).print();
gz->setIO(~u,gz->sim(~u));
Optimization<double> *P = new PSO<double>(gz,4,20,2000);
P->Optimize();
Model<double> *gz2 = new ARX<double>(2,2);
(gz->getOutputMatrix()|gz2->sim(~u)).print();
return 0;
}

Resultado Possível:

0.000
0.005
0.018
0.037
0.062
0.090
0.122
0.156
0.191
0.228
-0.078 -0.689 -0.061 0.133
0.000 0.000
0.005 -0.061
0.018 0.067
0.037 0.035
0.062 0.121
0.090 0.106
0.122 0.164
0.156 0.158
0.191 0.197
0.228 0.196

Ex3:

//O exemplo a ser colocado aqui será o de RLS
(mínimos quadrados recursivo)

Resultado Possível:

Ver também:

Veja também
print();

Métodos

template<class UsedType>
void Optimization< UsedType >::AddRestrictionsEquality ( Matrix< UsedType >  A,
Matrix< UsedType >  B 
)
template<class UsedType>
void Optimization< UsedType >::AddRestrictionsInequality ( Matrix< UsedType >  A,
Matrix< UsedType >  B,
bool  isRigth 
)
template<class UsedType>
Matrix<UsedType> Optimization< UsedType >::getOptimizatedVariable ( )
template<class UsedType>
Matrix<UsedType> Optimization< UsedType >::getRestrictionEqualityr ( )
template<class UsedType>
Matrix<UsedType> Optimization< UsedType >::getRestrictionR ( )
template<class UsedType>
virtual void Optimization< UsedType >::Optimize ( )
pure virtual
template<class UsedType>
void Optimization< UsedType >::setRestrictionsEquality ( Matrix< UsedType >  A,
Matrix< UsedType >  B 
)
template<class UsedType>
void Optimization< UsedType >::setRestrictionsInequality ( Matrix< UsedType >  A,
Matrix< UsedType >  B,
bool  isRigth 
)

Atributos

template<class UsedType>
Model<UsedType>* Optimization< UsedType >::model
protected

Definição na linha 25 do arquivo optimization.h.

template<class UsedType>
Matrix<UsedType> Optimization< UsedType >::OptimizatedVariable
protected

Definição na linha 24 do arquivo optimization.h.

template<class UsedType>
Matrix<UsedType> Optimization< UsedType >::RestrictionEqualityr
protected

Definição na linha 24 do arquivo optimization.h.

template<class UsedType>
Matrix<UsedType> Optimization< UsedType >::RestrictionR
protected

Definição na linha 24 do arquivo optimization.h.


A documentação para esta classe foi gerada a partir do seguinte arquivo: