Экспериментальное исследование средней трудоемкости алгоритма
}(celdaNueva == NULL) {[indiv+TAMPOBL].variable[dim] += x*(esp->u[dim] - esp->l[dim]); }{[indiv+TAMPOBL].variable[dim] = x*(celdaNueva->unodo[dim] - celdaNueva->lnodo[dim]) + (celdaNueva->unodo[dim] + celdaNueva->lnodo[dim])/2; } }celda *cercana(int prioridad, struct celda *nodo) {i;celda *res;(; nodo->padre != NULL; nodo = nodo->padre) {(i = 0; i < TREENODES; i++) {(&(nodo->padre->hijo[i]) == nodo) {; }= busca(prioridad, &(nodo->padre->hijo[i]));(res != NULL) {res; } } }NULL; }celda *busca(int prioridad, struct celda *nodo) {i;celda *res;(nodo->d[0] == -1) {(nodo->clase <= prioridad) {nodo; }{NULL; } }(i = 0; i < TREENODES; i++) {= busca(prioridad, &(nodo->hijo[i]));(res != NULL) {res; } }NULL; }selecciona(struct individuo *pobl) {c = TAMPOBL/2;i, j, contr, indmin;min;hayFactibles;(i = 0; (!pobl[i].factible) || (i < 2*TAMPOBL); i++);= (i < 2*TAMPOBL)? 1: 0;(i = 0; i < 2*TAMPOBL; i++) {[i].victorias = 0;(j = 0; j < c; j++) {= rnd(0, 2*TAMPOBL-2);= (contr>=i)? contr+1: contr;((pobl[i].factible && pobl[contr].factible)) {(pobl[i].aptitud < pobl[contr].aptitud) {[i].victorias++; } }{(!pobl[contr].factible) {(pobl[i].factible) {[i].victorias++; }if (pobl[i].viol < pobl[contr].viol) {[i].victorias++; } } } } }(i = 0; !pobl[i].factible && i < 2*TAMPOBL; i++);(i < 2*TAMPOBL) {= pobl[i].aptitud;= i;(; i < 2*TAMPOBL; i++) {(pobl[i].factible && pobl[i].aptitud < min) {= i;= pobl[i].aptitud; } }[indmin].victorias = c + 1; }(pobl, 2*TAMPOBL, sizeof(struct individuo), &compVictorias); }compVictorias(const void *ind1, const void *ind2) {dif;= ((struct individuo *)ind2)->victorias - ((struct individuo *)ind1)->victorias;dif; }nuevoInd(struct individuo *ind) {j;l[VARIABLES], u[VARIABLES];(l, u);(j = 0; j < VARIABLES; j++) {>variable[j] = rndreal(l[j], u[j]); } }extremos(int *indmin, int *indmax, struct individuo *pobl) {i, sumados = 0;min, max, med = 0.0;(i = 0; !pobl[i].factible && i < TAMPOBL; i++);(i < TAMPOBL) {= min = pobl[i].aptitud; *indmin = *indmax = i;(; i < TAMPOBL; i++) {(pobl[i].factible) {(pobl[i].aptitud < min) { *indmin = i;= pobl[i].aptitud; }(pobl[i].aptitud > max) { *indmax = i;= pobl[i].aptitud; }+= pobl[i].aptitud;++; } } }{= min = pobl[0].viol; *indmin = *indmax = 0;(i = 0; i < TAMPOBL; i++) {(pobl[i].viol < min) { *indmin = i;= pobl[i].viol; }(pobl[i].viol > max) { *indmax = i;= pobl[i].viol; }+= pobl[i].aptitud;++; } }= med/sumados;} Заключение В работе был описан алгоритм TS (Поиск с запретами), а также приведены примеры адаптации алгоритма для решения проблем оптимизации. По приведенным таблицам можно сравнить эффективность работы алгоритма TS по отношению к другим алгоритмам. Таким как: Имитация отжига, k-means, Ward. Было проведено экспериментальное исследование средней трудоёмкости алгоритма. По полученным данным были построены графики, при анализе которых можно установить, что функция качества линейно зависит от длины генотипа. алгоритм обмен экспериментальный трудоемкость |