Pular para o conteúdo principal
Versões: 0.5.x

Clonalg

Algoritmo de Seleção Clonal (CLONALG).

Herança

Esta classe herda de BaseOptimizer

Módulo: aisp.csa
Importação: from aisp.csa import Clonalg


Visão geral

O Clonal Selection Algorithm (CSA) é um algoritmo de otimização inspirado no processo biológico de seleção e expansão clonal dos anticorpos do sistema imunológico 1. Esta implementação do clonalg foi adaptada para minimização e maximização da função de custo em problemas binários, contínuos, com intervalo de valor e de permutação.

observação

Esta implementação do CLONALG contem modificações para o pacote AISP, com intuito da aplicação geral em diferentes tipos de problemas, o que pode resultar em comportamentos diferentes de implementações focada em um problema específico.
A adaptação visa generalizar o uso do CLONALG para tarefas de minimização e maximização, além de oferecer suporte a problemas binários, contínuos, com intervalo de valor e de permutação


Exemplo

import numpy as np
from aisp.csa import Clonalg

# Limites do espaço de busca
bounds = {'low': -5.12, 'high': 5.12}


# Função de custo
def rastrigin_fitness(x):
x = np.clip(x, bounds['low'], bounds['high'])
return 10 * len(x) + np.sum(x ** 2 - 10 * np.cos(2 * np.pi * x))


# Instância do CLONALG
clonalg = Clonalg(problem_size=2, bounds=bounds, seed=1)
clonalg.register('affinity_function', rastrigin_fitness)
population = clonalg.optimize(100, 50, False)
print('Best cost:', abs(clonalg.best_cost))

Output:

Best cost: 0.02623036956750724

Parâmetros do Construtor

NomeTipoDefaultDescrição
problem_sizeint-Dimensão do problema que será otimizado.
Nint50Número de células de memória (anticorpos) na população.
rate_clonalint10Número máximo de clones possíveis de uma célula. Esse valor é multiplicado pela afinidade da célula para definir o número de clones.
rate_hypermutationfloat1.0Taxa de hipermutação que controla a intensidade das mutações durante a expansão clonal. valores maiores reduzem a intensidade, enquanto menores aumentam.
n_diversity_injectionint5Número de novas células de mémoria aleatórias inseridas para manter a diversidade.
selection_sizeint5Número dos melhores anticorpos selecionados para a clonagem.
affinity_functionOptional[Callable[..., npt.NDArray]]NoneFunção objetiva usada para avaliar as soluções candidatas durante a otimização.
feature_typeFeatureTypeAll'ranged-features'Tipo de representação das soluções: binária, contínua, com intervalo de valor e para permutação.
boundsOptional[Dict]NoneDefine os limites no espaço de busca quando feature_type='ranged-features'.
mode{"min", "max"}'min'Define se o algoritmo realiza minimização ou maximização da função de custo.
seedintNoneSeed para geração aleatória.

Atributos

NomeTipoPadrãoDescrição
populationOptional[List[Antibody]]NonePopulação de anticorpos.

Métodos Públicos

optimize

def optimize(
self, max_iters: int = 50, n_iter_no_change=10, verbose: bool = True
) -> List[Antibody]:
...

Realiza o processo de otimização e retorna a população de anticorpos resultante.

Parâmetros

NomeTipoPadrãoDescrição
max_itersint50Número máximo de iterações na busca da melhor solução do problema usando o CLONALG.
n_iter_no_changeint10Número máximo de interações sem melhoria na melhor solução global encontrada.
verboseboolTrueIndica se as mensagens de progresso na busca do melhor anticorpo deve ser exibido.

Returns

TipoDescrição
List[Antibody]População de anticorpos após a expansão e seleção clonal.

Exceções

ExceçãoDescrição
NotImplementedErrorSe a função de afinidade não for fornecida para avaliar as soluções.

affinity_function

def affinity_function(self, solution: npt.NDArray) -> np.float64:
...

Avalia a afinidade de uma solução candidata.

Parâmetros

NomeTipoPadrãoDescrição
solutionnpt.NDArray-Solução candidata que será avaliada.

Returns

TipoDescrição
np.float64Valor de afinidade da solução candidata avaliada.

Exceções

ExceçãoDescrição
NotImplementedErrorSe a função de afinidade não tiver sido definida.

Exemplos Estendidos

Exemplos completos de uso estão disponíveis nos notebooks Jupyter:


Referências

Footnotes

  1. BROWNLEE, Jason. Clonal Selection Algorithm. Clever Algorithms: Nature-inspired Programming Recipes., 2011. Available at: https://cleveralgorithms.com/nature-inspired/immune/clonal_selection_algorithm.html