4const char* TCodificacaoPermutacao::nomesVizinhanca[] = {
36 "Spearman footrule" };
42 {
"TIPO_CRUZAR", 3, 1, 4,
"TIPO_CRUZAR: 1 - PMX, 2 - Edge, 3 - Order; 4 - Cycle",
nomesCruzamento,
_TV(
"0,2,3") },
43 {
"TIPO_MUTAR", 0,0,0,
"TIPO_MUTAR: 0 - aplica um vizinho aleatório (seja 1 só elemento ou segmento)",
NULL,
_TV(
"0,2,3") },
44 {
"TIPO_VIZINHO", 1,1,3,
"TIPO_VIZINHO: vários métodso para vizinhanças de inteiros", nomesVizinhanca,
_TV(
"0,1") },
45 {
"LIMITE_VIZINHOS", 0,0,1000,
46"LIMITE_VIZINHOS, conforme a vizinhança, se 0 não há limite\n\
47- inserir + trocaPar + inverterSegmento - limita a distância entre pares" },
48 {
"TIPO_DISTANCIA", 1,1,3,
"Distância: vários métodso para distâncias de permutações",
nomesDistancias,
_TV(
"0,2,3") }
242 for (
int k =
i;
k !=
j; (
i <
j ?
k++ :
k--))
284 nomesVizinhanca[tipo - 1],
i,
j);
287 for (
int k =
i;
k !=
j; (
i <
j ?
k++ :
k--))
ETiposDistanciaPermutacao
ETiposVizinhancaPermutacao
@ EXTRA_DEBUG
Nível extra para debug muito detalhado (uso interno).
TVector< int > _TV(const char *str)
void Debug(bool completo=true) override
Mostra o estado no ecrã, para debug.
void Cruzamento(TPonto a, TPonto b)
void Vizinhanca(TVector< TPonto > &vizinhos)
TPonto Duplicar(void)=0
Cria um objecto que é uma cópia deste.
void ResetParametros()
Inicializa os parametros, indicadores e instâncias.
void Copiar(TPonto objecto)
Fica com uma cópia do objecto.
int custo
Custo total, atualizada após Avaliar()
virtual void Vizinhanca(TVector< TPonto > &vizinhos)
void ResetParametros() override
Inicializa os parametros, indicadores e instâncias.
static bool memoriaEsgotada
Flag indicando problemas de memória esgotada.
int Parametro(int id) const
static int resultado
Resultado retornado pelo algoritmo na última execução.
static TVector< TParametro > parametro
Parâmetros a serem utilizados na configuração atual.
TVector< Item > & RandomOrder()
Coloca os elementos em ordem aleatória (Fisher–Yates shuffle).
TVector< Item > & Reset(Item const &i)
Preenche todo o vetor com um mesmo valor.
unsigned int rand(int seq)
Retorna o próximo valor pseudo-aleatório.