• Nenhum resultado encontrado

3 CONCEITOS FUNDAMENTAIS

3.1 PROJETO DOS CIRCUITOS INTEGRADOS CMOS ANALÓGICOS

3.2.5 Processo de busca das especificações através do algoritmo competitivo imperialista (ICA)

O algoritmo competitivo imperialista (ICA)49 é um dos algoritmos de otimização evolucionários mais recentes, proposto por Atashpaz-Gargari e Lucas (2007). Ele é inspirado pelo processo sócio-politico da competição imperialista. Comparado com outros algoritmos evolucionários convencionais, o ICA tem demonstrado desempenho superior, ou seja, convergência mais rápida e maior capacidade para alcançar a solução ótima global (BIJAMI et al., 2014; ATASHPAZ-GARGARI; LUCAS, 2007).

Similarmente ao algoritmo genético, o ICA é iniciado com uma população (conjunto de soluções potenciais). Os indivíduos (soluções) são chamados países, que são divididos em dois grupos distintos: colônias e imperialistas, que juntos formam os impérios. A competição imperialista entre esses impérios forma a base desse algoritmo. Durante essa competição, impérios fracos são reduzidos, enquanto que os impérios mais poderosos tomam posse de suas colônias. No final do processamento do algoritmo, espera-se que a competição imperialista convirja para um estado no qual existe somente um império e suas colônias possuem poderes semelhantes ao do imperialista (ATASHPAZ-GARGARI; LUCAS, 2007). A Figura 24 mostra o fluxograma do ICA no MTGSPICE.

49 Imperialist competitive algorithm.

Figura 24 – Fluxograma de execução do algoritmo competitivo imperialista no MTGSPICE.

Fonte: Autor “adaptado de” Atashpaz-Gargari e Lucas, 2007, p. 2.

( )E

( )N

Movimento das colônias em direção ao imperialista correspondente ( )B

Sim

Início do ICA

Legenda:

Atuação do simulador de circuitos SPICE Nova

rodada Inicialização dos

impérios ( )A

O império que possuir a maior probabilidade conquista a colônia mais fraca do império mais fraco

Não

Sim

( )G

( )H

Registro das variáveis para o mapeamento

do MTGSPICE ( )I

( )L Registro da melhor solução para a rodada

Não Sim

( )M

( )O

Fim do ICA Número total de rodadas alcançado?

(100 Rodadas) O número total de soluções

de projeto do OTA é obtido pelo MTGSPICE ( )C

( )D

( )F

Existe uma colônia em um império que possui maior aptidão

que o imperialista?

Não

Troca das posições entre o imperialista e a colônia

Revolução

Cálculo da aptidão total de todos os impérios

Elimina esse império Existe um império

sem colônias?

Sim

Não

Número total de iterações

alcançado?

( )J

(30 Soluções Iniciais)

(1.000 Iterões)

Final da Rodada: a Solução que Apresenta o Maior Valor de Aptidão entre as 1.000 Iterações Realizadas é Selecionada como

Solução da Rodada.

( )K

Similarmente ao GA, o ICA é iniciado com um conjunto de soluções aleatórias (países do mundo). Alguns dos melhores países da população são selecionados para serem os imperialistas e o restante formam as colônias desses imperialistas (ATASHPAZ-GARGARI;

LUCAS, 2007). O tamanho da população e o número de imperialistas são parâmetros do ICA, que nos experimentos realizados nesse trabalho foram adotados com os valores 30 e 3, respectivamente. Todas as colônias da população inicial são divididas entre os imperialistas mencionados, onde o número de colônias de cada império é diretamente proporcional ao poder (valor da função de aptidão) do imperialista (ATASHPAZ-GARGARI; LUCAS, 2007). Nesse trabalho, o valor da função de aptidão de cada solução (país) é calculado por uma função que atribui à solução, um valor entre 0 e 100, que é definido pela soma ponderada do valor da função de aptidão de cada especificação de projeto, da mesma forma que é realizado no GA (vide equação (30) na subseção 4.1). Após o cálculo do número de colônias de cada imperialista, a divisão das colônias entre os imperialistas é realizada por meio de um sorteio aleatório. Os imperialistas junto com as colônias correspondentes formam os impérios (ATASHPAZ-GARGARI; LUCAS, 2007). No caso desse trabalho, as três melhores soluções das 30 iniciais são selecionadas como imperialistas e as 27 restantes são as colônias que são divididas entre os imperialistas para formarem 3 impérios (processo A da Figura 24).

No processo C da Figura 24, os países imperialistas começam a melhorar suas colônias movendo cada colônia em direção ao imperialista. A direção do movimento é o vetor da colônia para o imperialista e a variação da posição de cada colônia é dada pela equação (25) (ATASHPAZ-GARGARI; LUCAS, 2007):

∆𝑉𝑎𝑟_𝑃𝑟𝑜𝑗𝑐𝑜𝑙 = 𝑟𝑎𝑛𝑑(0; 1) 𝐶𝐴 [𝑉𝑎𝑟_𝑃𝑟𝑜𝑗𝑖𝑚𝑝− 𝑉𝑎𝑟_𝑃𝑟𝑜𝑗𝑐𝑜𝑙] , (25) onde, ΔVar_Projcol representa o valor da mudança realizada em uma determinada variável de projeto (dimensões dos MOSFETs e condições de polarização) correspondente a uma determinada colônia, rand(0; 1) representa um gerador de números reais aleatórios na faixa [0;

1], Var_Projimp e Var_Projcol representam os valores das variáveis de projeto do imperialista e da colônia, respectivamente e CA é o coeficiente de assimilação, que deve ser um número maior que 1 para permitir que as colônias se aproximem de ambos os lados do estado imperialista.

Nesse trabalho, CA foi ajustado experimentalmente para 2, devido ao melhor desempenho obtido pelas soluções de projeto do OTA. Portanto, a nova posição da colônia é obtida pela soma da posição atual com a correspondente variação dada pela equação (25), ou seja Var_Projcol = Var_Projcol + ΔVar_Projcol.

Em seguida, algumas colônias de cada império podem passar por um processo chamado revolução (processo D da Figura 24). Esse operador é semelhante à mutação do GA e tem como objetivo explorar melhor o espaço de busca de soluções possíveis (busca das melhores soluções globais). Primeiramente, o número de colônias de cada império que passam pela revolução é calculado pela equação (26) (ROCHE et al., 2012):

𝑁𝑅𝑒𝑣 = 𝑟𝑜𝑢𝑛𝑑(𝑃𝑅𝑒𝑣 𝑁𝐶𝑜𝑙) , (26) onde, NRev representa o número de colônias revoltosas do império, PRev é a taxa de revolução (análogo à taxa de mutação do GA) , NCol é o número total de colônias do império e round é uma função que arredonda NRev para o número inteiro mais próximo. Nesse trabalho, PRev é adotado igual a 0,1. Em seguida, NRev países (soluções) são gerados aleatoriamente e substituem aleatoriamente algumas colônias do império.

No processo E da Figura 24, o valor da função de aptidão de cada uma das colônias de cada império é calculado através do uso do simulador SPICE para verificar se a melhor colônia do império possui avaliação maior que o imperialista. Em caso afirmativo, troca-se as posições entre o imperialista e a melhor colônia, processo F da Figura 24 (ATASHPAZ-GARGARI;

LUCAS, 2007).

Em seguida, calcula-se o valor da aptidão total de cada império (processo G da Figura 24). O valor da função de aptidão total de um império é dado pelo valor da função de aptidão do imperialista adicionado a uma porcentagem do valor médio da aptidão de suas colônias, conforme mostra a equação (27) (ATASHPAZ-GARGARI; LUCAS, 2007):

𝐸𝑣𝑎𝑙𝑇𝑂𝑇(𝑖) = 𝐸𝑣𝑎𝑙(𝐼𝑚𝑝(𝑖)) + 𝜁 𝑚𝑒𝑎𝑛[𝐸𝑣𝑎𝑙(𝐶𝑜𝑙(𝑖))] , (27) onde, EvalTOT(i) é a aptidão total do i-ésimo império, Eval(Imp(i)) é o valor da função de aptidão do i-ésimo imperialista, mean[Eval(Col(i))] é o valor médio da aptidão das colônias do império i e ζ é um número positivo menor que 1 que representa a porcentagem da contribuição do valor médio de aptidão das colônias no valor da função de aptidão do império. O valor de 0,02 (2%) para ζ foi usado nos experimentos realizados nesse trabalho.

No processo H da Figura 24 ocorre a competição imperialista, que simula a tentativa dos impérios de tomar posse de colônias de outros impérios e controlá-las. Essa competição imperialista gradualmente diminui o poder dos impérios mais fracos e aumenta o poder dos

impérios mais fortes (ATASHPAZ-GARGARI; LUCAS, 2007). No ICA, esse processo é modelado através da escolha de uma das colônias mais fracas do império mais fraco e realiza-se um sorteio para decidir qual dos impérios receberá a colônia. Nesrealiza-se sorteio, os impérios com os maiores valores de aptidão terão maires probabilidades de conquistarem a colônia do império mais fraco. Para realizar esse sorteio, calcula-se a probabilidade de cada império dominar a colônia, representada por Pi, cujo cálculo é baseado no poder de cada império. Para realizar o cálculo de Pi, primeiramente identifica-se o valor da função de aptidão do império mais fraco.

Em seguida, o poder de cada império é calculado subtraindo-se o valor da função de aptidão de cada império desse valor. Assim, Pi é obtido dividindo-se o valor do poder de cada império pelo valor da soma total do poder de todos os impérios. Em seguida, gera-se um número aleatório ri

(0 ≤ ri ≤ 1) para cada império. Finalmente, a probabilidade de posse de cada império é subtraída de ri, ou seja, calcula-se o valor da diferença (Pi - ri) para cada império, onde o império escolhido é o que apresenta o maior valor da diferença. Semelhantemente à taxa de cruzamento do algoritmo genético, a competição imperialista ocorre com uma determinada taxa de incidência (PComp). Uma taxa de 11% foi adotada nos experimentos realizados nesse trabalho.

Em seguida, a etapa I da Figura 24 verifica se o império mais fraco não possui colônia.

Caso afirmativo, o império é eliminado (processo J da Figura 24).

No processo K, as variáveis de projeto e os resultados obtidos para as especificações de projeto (AV0, fT, PM, VOUT, PTOT, AG e MSAT), correspondentes à melhor solução encontrada (imperialista mais forte), obtidos no final de cada iteração, são registrados em arquivo com a finalidade de realizar o mapeamento do processo de otimização do ICA no MTGSPICE.

O processo B da Figura 24 verifica se um determinado número de iterações foi realizado.

Caso negativo, os processos C até K são repetidos novamente até a obtenção do número de iterações desejadas do algoritmo. Nos experimentos realizados nesse trabalho, 1000 iterações do ICA são realizadas, onde aproximadamente 30000 soluções são avaliadas, quando o processo de busca da solução final de projeto é concluído. A solução e os resultados de desempenho obtidos para a rodada são, então, registrados em arquivo, conforme indicado no processo L da Figura 24.

Uma nova rodada significa começar o processo de otimização do MTGSPICE novamente, ou seja, uma nova população inicial é gerada randomicamente, conforme indicado nos processos M e N da Figura 24. O projetista pode escolher o número de rodadas do processo de otimização das soluções (100, nesse caso), que define o número de soluções de projeto do OTA apresentadas no final do processo de busca, conforme indicado no processo O da Figura 24.

3.2.6 Processo de busca das especificações através do algoritmo do “sapo pulando