You are here

Tutorial 7: Basic Customization

Tutorial 7: Basic Customization


 Pode-se apresentar a situação onde os métodos padrões implementados no Framework do Clarion não sejam os requeridos pela aplicação desenvolvida, para lograr definir e utilizar procedimentos próprios Clarion faz uso dos delegados de C# (delegates). É possível utilizar delegados como parâmetros de funções durante a inicialização delas.

Por exemplo, se se quer especificar um método para calcular a possibilidade de escolha de um parâmetro, durante a inicialização de uma rede BP, por exemplo, é só passar para a função o delegado associado.

O seguinte código apresenta a forma de inicializar a BPNetwork com um critério de escolha definido pelo usuário usando uma função que tem a mesma assinatura do que o delegado EligibilityChecker.

 O código anterior apresenta uma forma curta de especificar a função. Outra forma é declarando o delegado que utiliza função especificada. Assim por exemplo, se define una função chamada Custom_EligibilityCheck, a qual é associada a um delegado chamado CustomEligibilityCheckerDelegate, mesmo que é utilizado na inicialização da rede

 Embora a inicialização de objetos internos utilizando delegados seja opcional, tem elementos que de fato requer a utilização deles para poder ser declarados, esse é o caso das regras IRL e as regras fixas.

 

Creating Custom Rules

Na arquitetura Clarion são utilizadas duas classes para implementar os dois tipos de regra: a classe IRLRule e a classe FixedRule. Para poder inicializar qualquer das duas classes é requerido um delegado, de fato é necessário inicializar a classe com o delegado que vai calcular o valor da regra. A assinatura do delegado SupportCalculator é

 

Using the SupportCalculator Delegate to Set Up an IRL Rule

Aqui se apresentará um exemplo de uso do SupportCalculator para inicializar uma regra do tipo IRLRule. Suponha que se tem o seguinte conjunto de pares dimensão-valor {dim1,a}, {dim1, b}, {dim2, c}, e {dim2, d} e a ação: {do_something}. Então suponha-se que quer se criar a seguinte regra:

 Para utilizar a condição da regra é necessário criar um método que pode ser inicializado usando a assinatura do delegado SupportCalculator. Em pseudo-código ele seria:

 

Initializing the IRL Rule

Para configurar a IRLRule são necessárias três coisas. Primeiro é necessário inicializa-la

Segundo é necessário configurar a condição inicial da regra

 Finalmente é necessário "commit" ela:

 Isto é todo o necessário que se precisa para configurar uma IRLRule.

 

Using the SupportCalculator Delegate to Set Up a Fixed Rule

O processo para configurar uma regra fixa é muito similar ao de a IRLRule. Como exemplo vai-se utilizar a seguinte regra

 Para programa a regra é usada uma função com a assinatura do delegado SupportCalculator. Em pseudo-código isso é:

 O código do pseudo-código em C# fica:

 

Initializing the Fixed Rule

Para iniciar uma regra fixa é fazer o mesmo que para a IRLRule:

 

Generic Equations

As veces numa tarefa é possivel obter um resultado apartir da saida de uma equação conhecida. Quando acontecem estes cenarios Clarion tem a classe GenericEquation. Este componente utiliza o delegado Equation. A assinatura do delegado é 

Como já foi dito, para implementar uma custom equation, todo o que é necessario é definir um método com a mesma assinatura do que o delegado.

Por exemplo suponhamos que quer-se criar uma GenericEquation que possa ser usada para resolver uma equação linear simples, isto é possível usando:

 Após ter criado o método do delegado, para poder usa-lo é necessário passar ele como parâmetro durante a inicialização da GenericEquation.

 Só para lembrar, para completar a inicialização da GenericEquation, é necessário definir as entradas e as saídas, assim como adiciona-lo ao agente. A seguinte imagem apresenta o exemplo de como configurar a GenericEquation:

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer