示例#1
0
    def optimize(self, parametersReport = True):
        u'''
        Método para obtenção da estimativa dos parâmetros e sua matriz de covariância.
        '''
        # ---------------------------------------------------------------------
        # FLUXO
        # ---------------------------------------------------------------------
        self._EstimacaoNaoLinear__controleFluxo.SET_ETAPA('otimizacao')

        # ---------------------------------------------------------------------
        # VALIDAÇÃO
        # ---------------------------------------------------------------------
        if not self._EstimacaoNaoLinear__flag.info['dadosestimacao']:
            raise TypeError(u'For execute optimize is necessary to input the estimation data.')

        if self._EstimacaoNaoLinear__controleFluxo.SETparametro:
            raise TypeError(u'The optimization method cannot be run with SETparameter.')

        # ---------------------------------------------------------------------
        # RESOLUÇÃO
        # ---------------------------------------------------------------------
        X   = self.x.estimacao.matriz_estimativa
        Uyy = self.y.estimacao.matriz_covariancia
        y   = self.y.estimacao.vetor_estimativa
        variancia = inv(X.transpose().dot(inv(Uyy)).dot(X))
        parametros = variancia.dot(X.transpose().dot(inv(Uyy))).dot(y)

        # ---------------------------------------------------------------------
        # ATRIBUIÇÃO A GRANDEZA
        # ---------------------------------------------------------------------
        self.parametros._SETparametro(parametros.transpose()[0].tolist(),variancia,None)

        # ---------------------------------------------------------------------
        # FUNÇÃO OBJETIVO NO PONTO ÓTIMO
        # ---------------------------------------------------------------------
        # initialization of the method that create the symbolic's variables
        EstimacaoNaoLinear._constructionCasadiVariables(self)

        self.FOotimo = float(self._excObjectiveFunction(self.parametros.estimativa,self._values))

        # parameters report creation
        if parametersReport:
            self._out.Parametros(self.parametros, self.FOotimo)
示例#2
0
#%% Starting the MT_PEU main object
# Model: Pass the model defined in def Model;
# symbols_x: List of symbols for quantity x;
# symbols_y: List of symbols for quantity y;
# symbols_param: List of symbols for the parameters to be estimated;
# label_latex_param: List of symbols for parameters written in LaTex;
# label_latex_x: List of symbols for quantities x written in LaTex
# units_y: List of units of measurement for independent quantities;
# units_param: List of units of measurement of the parameters;
# units_x: List of units of measurement of dependent quantities;
# Folder: Defines the name of the folder where the results will be saved.
Estime = EstimacaoNaoLinear(Model,
                            symbols_x=[r't', 'Tau'],
                            units_x=['s', 'K'],
                            label_latex_x=[r'$t$', '$T$'],
                            symbols_y=[r'y'],
                            units_y=['adm'],
                            symbols_param=['ko', 'E'],
                            units_param=['adm', 'K'],
                            label_latex_param=[r'$k_o$', r'$E$'],
                            Folder='Exemple5')

#%% Defining observed data
# Input data
# input 1
time = [
    120.0, 60.0, 120.0, 60.0, 30.0, 15.0, 45.1, 90.0, 150.0, 60.0, 60.0, 30.0,
    150.0, 90.4, 120.0, 60.0, 60.0, 60.0, 30.0, 45.1, 30.0, 45.0, 15.0, 90.0,
    25.0, 60.1, 60.0, 30.0, 60.0
]
# input 1 uncertainty
uxtime = [0.001] * 29
示例#3
0

#%% Starting the MT_PEU main object
# Model: Pass the model defined in def Model;
# symbols_x: List of symbols for quantity x;
# symbols_y: List of symbols for quantity y;
# symbols_param: List of symbols for the parameters to be estimated;
# label_latex_param: List of symbols for parameters written in LaTex;
# units_y: List of units of measurement for independent quantities;
# units_x: List of units of measurement of dependent quantities;
# units_param: List of units of measurement of the parameters;
# Folder: Defines the name of the folder where the results will be saved.
Estime = EstimacaoNaoLinear(Model,
                            symbols_x=['t', 'Tao'],
                            units_x=['s', 'K'],
                            symbols_y=[r'y'],
                            units_y=['adm'],
                            symbols_param=['ko', 'E'],
                            units_param=['adm', 'K'],
                            Folder='Exemple2')

#%% Defining observed data
# Input data
# input 1
time = [
    120.0, 60.0, 60.0, 120.0, 120.0, 60.0, 60.0, 30.0, 15.0, 60.0, 45.1, 90.0,
    150.0, 60.0, 60.0, 60.0, 30.0, 90.0, 150.0, 90.4, 120.0, 60.0, 60.0, 60.0,
    60.0, 60.0, 60.0, 30.0, 45.1, 30.0, 30.0, 45.0, 15.0, 30.0, 90.0, 25.0,
    60.1, 60.0, 30.0, 30.0, 60.0
]
# input 1 uncertainty
uxtime = [1] * 41
示例#4
0
def Model(param, x, args):
    T = x[:, 0]
    A, B, C = param[0], param[1], param[2]

    return exp(A - (B / (T + C)))  # Pvp calculation - vectorized


#%% Starting the MT_PEU main object
# Model: Pass the model defined in def Model;
# symbols_x: List of ymbols for quantity x;
# symbols_y: List of ymbols for quantity y;
# symbols_param: List of Symbols for the parameters to be estimated;
# Folder: Defines the name of the folder where the results will be saved.
Estimation = EstimacaoNaoLinear(Model,
                                symbols_x=[r'T'],
                                symbols_y=[r'y'],
                                symbols_param=['A', 'B', 'C'],
                                Folder='Exemple3')

#%% Defining observed data
# Input data
T = [
    297.1, 298.2, 299.3, 301.2, 304.2, 307.2, 310.2, 314.1, 316.2, 317.8,
    318.2, 320.2, 323.1, 326.2, 329.1, 331.2, 334.2, 337.1, 340.2, 343.2,
    346.2, 349.1, 352.2
]
# Input data uncertainty
uxT = [0.1] * len(T)

# Output data
P = [
示例#5
0
def Model(param,x,*args):

    a1, b1, a2, b2 = param[0], param[1], param[2], param[3]
    x1, x2 = x[:,0], x[:,1]

    return vertcat(a1*x1/(1+b1*x1), a2*(x2**b2))

#%% Starting the MT_PEU main object
# Model: Pass the model defined in def Model;
# symbols_x: Lis of symbols for quantity x;
# symbols_y: List of symbols for quantity y;
# symbols_param: List of symbols for the parameters to be estimated;
# label_latex_param: List of ymbols for parameters written in LaTex;
# units_y: List of units of measurement for independent quantities;
# Folder: Defines the name of the folder where the results will be saved.
Estime = EstimacaoNaoLinear(Model,symbols_x=['x1','x2'],symbols_y=['y1','y2'],symbols_param=['alpha1','alpha2', 'beta1', 'beta2'],
                          label_latex_param=[r'$\alpha_1$',r'$\alpha_2$',r'$\beta_1$',r'$\beta_2$'],units_y=['kg','kg'],Folder='Exemple4')

#%% Defining observed data
# Input data
# input 1
x1 = [1.,2.,3.,5.,10,15.,20.,30.,40.,50.]
# input 1 uncertainty
ux1 = [1]*10
# input 2
x2 = [1.,2.,3.,5.,10,15.,20.,30.,40.,50.]
# input 2 ucertainty
ux2 = [1]*10

# Output data
# output 1
y1 = [1.66,6.07,7.55,9.72,15.24,18.79,19.33,22.38,24.27,25.51]
示例#6
0
]
temperatura = [
    600.0, 600.0, 612.0, 612.0, 612.0, 612.0, 620.0, 620.0, 620.0, 620.0,
    620.0, 620.0, 620.0, 620.0, 620.0, 620.0, 620.0, 620.0, 620.0, 620.0,
    620.0, 620.0, 620.0, 620.0, 620.0, 620.0, 620.0, 631.0, 631.0, 631.0,
    631.0, 631.0, 639.0, 639.0, 639.0, 639.0, 639.0, 639.0, 639.0, 639.0, 639.0
]

uy = [1] * 41
uxtempo = [1] * 41
uxtemperatura = [1] * 41

#Execução do MT_PEU
Estime = EstimacaoNaoLinear(Modelo,
                            simbolos_x=['t', 'T'],
                            simbolos_y=['y'],
                            simbolos_param=['ko', 'E'],
                            Folder='Exemplo1')
Estime.setDados(0, (tempo, uxtempo), (temperatura, uxtemperatura))
Estime.setDados(1, (y, uy))
Estime.setConjunto(tipo='estimacao')
Estime.optimize(initial_estimative=[0.5, 25000], algoritmo='ipopt')
Estime.incertezaParametros(metodoIncerteza='Geral' '')
Estime.predicao()

# Valores originais
hessian = array([[5.46625676e+00, -7.50116238e-03],
                 [-7.50116238e-03, 1.02960714e-05]])
sensibilidade = array([[-1.06335451e-01, 1.52826132e-04],
                       [-5.59353653e-02, 8.03907392e-05],
                       [-1.28132438e-01, 1.80542088e-04],
示例#7
0
ux1 = ones((10, 1))
ux2 = ones((10, 1))
uy1 = ones((10, 1))
uy2 = ones((10, 1))

x = concatenate((x1, x2), axis=1)
y = concatenate((y1, y2), axis=1)
ux = concatenate((ux1, ux2), axis=1)
uy = concatenate((uy1, uy2), axis=1)

Estime = EstimacaoNaoLinear(
    WLS,
    Modelo,
    simbolos_x=['x1', 'x2'],
    simbolos_y=['y1', 'y2'],
    simbolos_param=[r'a%d' % i for i in xrange(4)],
    label_latex_param=[r'$\alpha_{%d}$' % i for i in xrange(4)],
    unidades_y=['kg', 'kg'],
    projeto='projeto')
sup = [6., .3, 8., 0.7]
inf = [1., 0, 1., 0.]

tipo = None

# =================================================================================
# PARTE II - GENÉRICO (INDEPENDE DO EXEMPLO)
# =================================================================================

Estime.gerarEntradas(x, y, ux, uy, tipo='experimental')
#print Estime._EstimacaoNaoLinear__etapas
示例#8
0
    A, B = param[0], param[1]

    return exp(
        A / 8.31446 + B / (8.31446 * T) -
        (68.2 / 8.31446) * log(T / 298.15))  # Pvp calculation - vectorized


#%% Starting the MT_PEU main object
# Model: Pass the model defined in def Model;
# symbols_x: List of symbols for quantity x;
# symbols_y: List of symbols for quantity y;
# symbols_param: List of symbols for the parameters to be estimated;
# Folder: Defines the name of the folder where the results will be saved.
Estimation = EstimacaoNaoLinear(Model,
                                symbols_x=[r'T'],
                                symbols_y=[r'P'],
                                symbols_param=['A', 'B'],
                                Folder='Exemple8')

#%% Defining observed data
# Input data
T = [
    297.1, 298.2, 299.3, 301.2, 304.2, 307.2, 310.2, 314.1, 316.2, 317.8,
    318.2, 320.2, 323.1, 326.2, 329.1, 331.2, 334.2, 337.1, 340.2, 343.2,
    346.2, 349.1, 352.2
]
# Input data uncertainty
uT = [0.1] * len(T)

# Output data
P = [
示例#9
0
    def __init__(self,simbolos_y,simbolos_x,simbolos_param,PA=0.95,projeto='Projeto',**kwargs):
        u'''
        Classe para executar a estimação de parâmetros de modelos MISO lineares nos parâmetros       

        ======================
        Bibliotecas requeridas
        ======================
        * Numpy
        * Scipy
        * Matplotlib
        * Math
        * PSO - **Obtida no link http://github.com/ddss/PSO. Os códigos devem estar dentro de uma pasta de nome PSO**

        =======================
        Entradas (obrigatórias)
        =======================
        * ``simbolos_y`` (list)     : lista com os simbolos das variáveis y (Não podem haver caracteres especiais)
        * ``simbolos_x`` (list)     : lista com os simbolos das variáveis x (Não podem haver caracteres especiais)
        * ``simbolos_param`` (list) : lista com o simbolos dos parâmetros (Não podem haver caracteres especiais)

        ====================
        Entradas (opcionais)
        ====================
        * ``PA`` (float): probabilidade de abrangência da análise. Deve estar entre 0 e 1. Default: 0.95
        * ``projeto`` (string): nome do projeto (Náo podem haver caracteres especiais)

        **AVISO**:
        * Para cálculo do coeficiente linear, basta que o número de parâmetros seja igual ao número de grandezas
        independentes + 1.

        ==============================
        Keywords (Entradas opcionais):
        ==============================
        
        * ``nomes_x``        (list): lista com os nomes para x 
        * ``unidades_x``     (list): lista com as unidades para x (inclusive em formato LATEX)
        * ``label_latex_x``  (list): lista com os símbolos das variáveis em formato LATEX
        
        * ``nomes_y``        (list): lista com os nomes para y
        * ``unidades_y``     (list): lista com as unidades para y (inclusive em formato LATEX)
        * ``label_latex_y``  (list): lista com os símbolos das variáveis em formato LATEX
        
        * ``nomes_param``       (list): lista com os nomes para os parâmetros (inclusive em formato LATEX)
        * ``unidades_param``    (list): lista com as unidades para os parâmetros (inclusive em formato LATEX)
        * ``label_latex_param`` (list): lista com os símbolos das variáveis em formato LATEX
        
        * ``base_path`` (string): String que define o diretório pai que serão criados/salvos os arquivos gerados pelo motor de cálculo
        
        =======        
        Métodos
        =======
        
        Para a realização da estimação de parâmetros de um certo modelo faz-se necessário executar \
        alguns métodos, na ordem indicada:
            
        **ESTIMAÇÂO DE PARÂMETROS** 
        
        * ``gerarEntradas``        : método para incluir dados obtidos de experimentos. Neste há a opção de determinar \
        se estes dados serão utilizados como dados para estimar os parâmetros ou para validação. (Vide documentação do método)
        * ``otimiza``              : método para realizar a otimização, com base nos dados fornecidos em gerarEntradas.
        * ``incertezaParametros``  : método que avalia a incerteza dos parâmetros (Vide documentação do método)   
        * ``gerarEntradas``        : (é opcional para inclusão de dados de validação)
        * ``Predicao``             : método que avalia a predição do modelo e sua incerteza ou utilizando os pontos experimentais ou de \
        validação, se disponível (Vide documentação do método) 
        * ``analiseResiduos``      : método para executar a análise de resíduos (Vide documentação do método)
        * ``graficos``             : método para criação dos gráficos (Vide documentação do método)
        * ``_armazenarDicionario`` : método que returna as grandezas sob a forma de um dicionário (Vide documentação do método)
        
        ====================
        Fluxo de trabalho        
        ====================
        
        Esta classe valida a correta ordem de execução dos métodos. É importante salientar que cada vez que o método ``gerarEntradas`` \
        é utilizado, é criado um novo ``Fluxo de trabalho``, ou seja, o motor de cálculo valida de alguns métodos precisam ser reexecutados \
        devido a entrada de novos dados.
        
        **Observação 1**: Se forem adicionados diferentes dados de validação (execuções do método gerarEntradas para incluir tais dados), \
        são iniciado novos fluxos, mas é mantido o histórico de toda execução.
        
        **Observação 2**: Se forem adicionados novos dados experimentais, todo o histórico de fluxos é apagado e reniciado.
         
        ======      
        Saídas
        ======
        
        As saídas deste motor de cálculo estão, principalmente, sob a forma de atributos e gráficos.
        Os principais atributos de uma variável Estimacao, são:
                
        * ``x`` : objeto Grandeza que contém todas as informações referentes às grandezas \
        independentes sob a forma de atributos:
            * ``experimental`` : referente aos dados experimentais. Principais atributos: ``matriz_estimativa``, ``matriz_covariancia``
            * ``calculado``    : referente aos dados calculados pelo modelo. Principais atributos: ``matriz_estimativa``, ``matriz_covariancia``
            * ``validacao``    : referente aos dados de validação. Principais atributos: ``matriz_estimativa``, ``matriz_covariancia``
            * ``residuos``     : referente aos resíduos de regressão. Principais atributos: ``matriz_estimativa``, ``estatisticas``
            
        * ``y``          : objeto Grandeza que contém todas as informações referentes às grandezas \
        dependentes sob a forma de atributos. Os atributos são os mesmos de x.

        * ``parametros`` : objeto Grandeza que contém todas as informações referentes aos parâmetros sob a forma de atributos.
            * ``estimativa``         : estimativa para os parâmetros
            * ``matriz_covariancia`` : matriz de covariância
            * ``regiao_abrangencia`` : pontos contidos na região de abrangência
        
        Obs.: Para informações mais detalhadas, consultar os Atributos da classe Grandeza.        
        '''
        # ---------------------------------------------------------------------
        # INICIANDO A CLASSE INIT
        # ---------------------------------------------------------------------

        EstimacaoNaoLinear.__init__(self,WLS,Modelo,simbolos_y,simbolos_x,simbolos_param,PA,projeto,**kwargs)

        self._EstimacaoNaoLinear__flag.setCaracteristica(['calc_termo_independente'])

        # ---------------------------------------------------------------------
        # VALIDAÇÃO
        # ---------------------------------------------------------------------
        if self.y.NV != 1:
            raise ValueError(u'Está apenas implementado estimação de parâmetros de modelos lineares MISO')

        if (self.parametros.NV != self.x.NV) and (self.parametros.NV != self.x.NV+1):
            raise ValueError(u'O número de parâmetros deve ser: igual ao de grandezas independentes (não é efetuado cálculo do coeficiente linear)'+\
            'OU igual ao número de grandezas independentes + 1 (é calculado o coeficiente linear).')

        # ---------------------------------------------------------------------
        # Definindo se o b será calculado
        # ---------------------------------------------------------------------
        if (self.parametros.NV == self.x.NV+1):
            self._EstimacaoNaoLinear__flag.ToggleActive('calc_termo_independente')
示例#10
0
#%% Model definition
# def Model: The subroutine that specifies the equations with their respective parameters.
def Model(param, x, *args):

    ko, E = param[0], param[1]
    time, T = x[:,0], x[:,1]

    return exp(-(ko*10**17)*time*exp(-E/T))

#%% Starting the MT_PEU main object
# Model: Pass the model defined in def Model;
# symbols_x: list of symbols for quantity x;
# symbols_y: list of symbols for quantity y;
# symbols_param: list of symbols for the parameters to be estimated;
# Folder: string with the name of the folder where reports and charts will be saved;
Estime = EstimacaoNaoLinear(Model, symbols_x=['t','Tao'], symbols_y=['y'], symbols_param=['ko','E'], Folder='Example1')

#%% Defining observed data
# Observed data of dependent variable
y = [0.9,0.949,0.886,0.785,0.791,0.890,0.787,0.877,0.938,
0.782,0.827,0.696,0.582,0.795,0.800,0.790,0.883,0.712,0.576,0.715,0.673,
0.802,0.802,0.804,0.794,0.804,0.799,0.764,0.688,0.717,0.802,0.695,0.808,
0.655,0.309,0.689,0.437,0.425,0.638,.659,0.449]
# uncertainty of dependent variables
uy = [1]*41
# Observed data of independent variable (input 1)
time = [120.0,60.0,60.0,120.0,120.0,60.0,60.0,30.0,15.0,60.0,
45.1,90.0,150.0,60.0,60.0,60.0,30.0,90.0,150.0,90.4,120.0,
60.0,60.0,60.0,60.0,60.0,60.0,30.0,45.1,30.0,30.0,45.0,15.0,30.0,90.0,25.0,
60.1,60.0,30.0,30.0,60.0]
# input 1 uncertainty
示例#11
0
    def __init__(self,symbols_y,symbols_x,symbols_param,PA=0.95,folder='Projeto',**kwargs):
        u'''
        Classe para executar a estimação de parâmetros de modelos MISO lineares nos parâmetros       

        ======================
        Bibliotecas requeridas
        ======================
        * Numpy
        * Scipy
        * Matplotlib
        * Math
        * PSO - **Obtida no link http://github.com/ddss/PSO. Os códigos devem estar dentro de uma pasta de nome PSO**

        =======================
        Entradas (obrigatórias)
        =======================
        * ``symbols_y`` (list)     : lista com os simbolos das variáveis y (Não podem haver caracteres especiais)
        * ``symbols_x`` (list)     : lista com os simbolos das variáveis x (Não podem haver caracteres especiais)
        * ``symbols_param`` (list) : lista com o simbolos dos parâmetros (Não podem haver caracteres especiais)

        ====================
        Entradas (opcionais)
        ====================
        * ``PA`` (float): probabilidade de abrangência da análise. Deve estar entre 0 e 1. Default: 0.95
        * ``folder`` (string): nome do projeto (Náo podem haver caracteres especiais)

        **AVISO**:
        * Para cálculo do coeficiente linear, basta que o número de parâmetros seja igual ao número de grandezas
        independentes + 1.

        ==============================
        Keywords (Entradas opcionais):
        ==============================
        
        * ``names_x``        (list): lista com os nomes para x
        * ``units_x``        (list): lista com as unidades para x (inclusive em formato LATEX)
        * ``label_latex_x``  (list): lista com os símbolos das variáveis em formato LATEX
        
        * ``names_y``        (list): lista com os nomes para y
        * ``units_y``        (list): lista com as unidades para y (inclusive em formato LATEX)
        * ``label_latex_y``  (list): lista com os símbolos das variáveis em formato LATEX
        
        * ``names_param``       (list): lista com os nomes para os parâmetros (inclusive em formato LATEX)
        * ``units_param``       (list): lista com as unidades para os parâmetros (inclusive em formato LATEX)
        * ``label_latex_param`` (list): lista com os símbolos das variáveis em formato LATEX
        
        * ``base_path`` (string): String que define o diretório pai que serão criados/salvos os arquivos gerados pelo motor de cálculo
        
        =======        
        Métodos
        =======
        
        Para a realização da estimação de parâmetros de um certo modelo faz-se necessário executar \
        alguns métodos, na ordem indicada:
            
        **ESTIMAÇÂO DE PARÂMETROS** 
        
        * ``setConjunto``        : método para incluir dados obtidos de experimentos. Neste há a opção de determinar \
        se estes dados serão utilizados como dados para estimar os parâmetros ou para validação. (Vide documentação do método)
        * ``optimize``              : método para realizar a otimização, com base nos dados fornecidos em setConjunto.
        * ``parametersUncertainty``  : método que avalia a incerteza dos parâmetros (Vide documentação do método)
        * ``setConjunto``        : (é opcional para inclusão de dados de validação)
        * ``Prediction``             : método que avalia a predição do modelo e sua incerteza ou utilizando os pontos experimentais ou de \
        validação, se disponível (Vide documentação do método) 
        * ``residualAnalysis``      : método para executar a análise de resíduos (Vide documentação do método)
        * ``plots``             : método para criação dos gráficos (Vide documentação do método)
        * ``_armazenarDicionario`` : método que retorna as grandezas sob a forma de um dicionário (Vide documentação do método)
        
        ====================
        Fluxo de trabalho        
        ====================
        
        Esta classe valida a correta ordem de execução dos métodos. É importante salientar que cada vez que o método ``setConjunto`` \
        é utilizado, é criado um novo ``Fluxo de trabalho``, ou seja, o motor de cálculo valida de alguns métodos precisam ser reexecutados \
        devido a entrada de novos dados.
        
        **Observação 1**: Se forem adicionados diferentes dados de validação (execuções do método gerarEntradas para incluir tais dados), \
        são iniciado novos fluxos, mas é mantido o histórico de toda execução.
        
        **Observação 2**: Se forem adicionados novos dados experimentais, todo o histórico de fluxos é apagado e reniciado.
         
        ======      
        Saídas
        ======
        
        As saídas deste motor de cálculo estão, principalmente, sob a forma de atributos e gráficos.
        Os principais atributos de uma variável Estimacao, são:
                
        * ``x`` : objeto Grandeza que contém todas as informações referentes às grandezas \
        independentes sob a forma de atributos:
            * ``estimação`` : referente aos dados experimentais. Principais atributos: ``matriz_estimativa``, ``matriz_covariancia``
            * ``calculado``    : referente aos dados calculados pelo modelo. Principais atributos: ``matriz_estimativa``, ``matriz_covariancia``
            * ``predição``    : referente aos dados de validação. Principais atributos: ``matriz_estimativa``, ``matriz_covariancia``
            * ``residuos``     : referente aos resíduos de regressão. Principais atributos: ``matriz_estimativa``, ``estatisticas``
            
        * ``y``          : objeto Grandeza que contém todas as informações referentes às grandezas \
        dependentes sob a forma de atributos. Os atributos são os mesmos de x.

        * ``parametros`` : objeto Grandeza que contém todas as informações referentes aos parâmetros sob a forma de atributos.
            * ``estimativa``         : estimativa para os parâmetros
            * ``matriz_covariancia`` : matriz de covariância
            * ``regiao_abrangencia`` : pontos contidos na região de abrangência
        
        Obs.: Para informações mais detalhadas, consultar os Atributos da classe Grandeza.        
        '''
        # ---------------------------------------------------------------------
        # INICIANDO A CLASSE INIT
        # ---------------------------------------------------------------------
        # For to start the class it's necessary to check wich is the most suitable model

        if (len(symbols_param) == len(symbols_x) + 1):
            # The the independent term will be calculated and Model_2 should be used
            EstimacaoNaoLinear.__init__(self, Model_2, symbols_y, symbols_x, symbols_param, PA, folder, **kwargs)
        else:
            # The the independent term won't be calculated and Model_1 should be used
            EstimacaoNaoLinear.__init__(self, Model_1, symbols_y, symbols_x, symbols_param, PA, folder, **kwargs)

        self._EstimacaoNaoLinear__flag.ToggleActive('Linear') # Enable linear flag to correctly create 'self .__ values' when independent term calculation
        self._EstimacaoNaoLinear__flag.setCaracteristica(['calc_termo_independente'])

        # ---------------------------------------------------------------------
        # VALIDAÇÃO
        # ---------------------------------------------------------------------
        if self.y.NV != 1:
            raise ValueError(u'It is performing the parameter estimation of linear models only for the MISO case.')

        if (self.parametros.NV != self.x.NV) and (self.parametros.NV != self.x.NV+1):
            raise ValueError(u'The number of parameters must be equal to the number of independent quantities (the linear coefficient is not calculated).'+\
            'OR equal to the number of independent quantities + 1 (the linear coefficient is calculated).')

        self.__coluna_dumb = False # this variable indicates that a column of ones has been added to independent quantities
        # ---------------------------------------------------------------------
        # Definindo se o b será calculado
        # ---------------------------------------------------------------------
        if (self.parametros.NV == self.x.NV+1):
            self._EstimacaoNaoLinear__flag.ToggleActive('calc_termo_independente')
            self.__coluna_dumb = True