Экспериментальное исследование средней трудоемкости алгоритма
}(i = 0; i < NUMCONSTR; i++) {(a, "\ng%d = %0.7f", i+1, pobl[indmin].g[i]); }(a, "\nviol = %0.7f", pobl[indmin].viol);(a, "\nEl mejor individuo es ");(!pobl[indmin].factible) {(a, "no "); }(a, "factible.\nEvluaciones: %ld\n\n", evs); } }(a);("%0.7f", pobl[indmin].aptitud);(!pobl[indmin].factible) {(" i"); }("\n");(0); }creenciasInic(struct creencias *esp) {i;l[VARIABLES], u[VARIABLES];(l, u);(i = 0; i < VARIABLES; i++) {>L[i] = esp->U[i] = MAXFLOAT;>l[i] = esp->lp[i] = l[i];>u[i] = esp->up[i] = u[i]; }>raiz = (struct celda *) malloc(sizeof(struct celda));>raiz->padre = NULL;>raiz->hijo = NULL;>raiz->profundidad = PROFUNDIDAD_MAX; }poblacionInic(struct individuo *pobl, struct creencias *esp) {i, j;(i = 0; i < TAMPOBL; i++) {(j = 0; j < VARIABLES; j++) {[i].variable[j] = rndreal(esp->lp[j], esp->up[j]); } } }violacionInic(float gmax[]) {i;(i = 0; i < NUMCONSTR; i++) {[i] = 0; } }violacion(struct individuo *ind, float gmax[]) {i;v;(TRUSSPROBL) {; }>viol = 0;(i = 0; i < NUMCONSTR; i++) {(i < NUMCONSTR - NUMEQCONSTR) {= (ind->g[i] > 0)? ind->g[i]: 0; }{= fabs(ind->g[i]); }(v > gmax[i]) {[i] = v; }>viol += v/gmax[i]; } }actualizaCreencias(struct individuo *pobl, struct creencias *esp, int t) {aceptados[TOP + 3];i, j, iinf, isup, dim, numHijo, sumando, celda, k = 20;sup, inf;celda *nodoAct;(t%k == 0) {(pobl);(i = 0; i < VARIABLES; i++) {= 0;= pobl[0].variable[i];= 0;= pobl[0].variable[i];(j = 1; j < TOP; j++) {(pobl[j].variable[i] < inf) {= j;= pobl[j].variable[i]; }(pobl[j].variable[i] > sup) {= j;= pobl[j].variable[i]; } }( (inf < esp->l[i]) || (pobl[iinf].aptitud < esp->L[i] && pobl[iinf].factible) ) {(inf < esp->u[i]) {>l[i] = inf;>L[i] = pobl[iinf].aptitud; } }( (sup > esp->u[i]) || (pobl[isup].aptitud < esp->U[i] && pobl[isup].factible) ) {(sup > esp->l[i]) {>u[i] = sup;>U[i] = pobl[isup].aptitud; } } }(&tiempo1);(esp->raiz, pobl, esp);(&tiempo2);+= 1000*(tiempo2.time - tiempo1.time) + tiempo2.millitm - tiempo1.millitm; }(&tiempo1);(i = 0; i < TAMPOBL; i++) {= 0;(j = 0; j < VARIABLES; j++) {(pobl[i].variable[j] < esp->l[j] ||[i].variable[j] > esp->u[j]) {= -1;; } }(numHijo == -1) {[i].celda = NULL;; }(nodoAct = esp->raiz; nodoAct->d[0] != -1; nodoAct = &(nodoAct->hijo[numHijo])) {= 0;= 1;(j = 0; j < TREEDIMS; j++) {= nodoAct->d[j];(pobl[i].variable[dim] > (nodoAct->lnodo[dim] + nodoAct->unodo[dim])/2) {+= sumando; }+= sumando; } }[i].celda = nodoAct;(pobl[i].factible) {[i].celda->factibles++;(pobl[i].celda->factibles == 1) {(pobl[i].celda->noFactibles == 0) {[i].celda->clase = FACTIBLE; }{[i].celda->clase = SEMIFACTIBLE;(pobl[i].celda->profundidad > 1) {(pobl[i].celda, pobl, esp);= -1;; } } } }{[i].celda->noFactibles++;(pobl[i].celda->noFactibles == 1) {(pobl[i].celda->factibles == 0) {[i].celda->clase = NO_FACTIBLE; }{[i].celda->clase = SEMIFACTIBLE;(pobl[i].celda->profundidad > 1) {(pobl[i].celda, pobl, esp);= -1;; } } } } }(&tiempo2);+= 1000*(tiempo2.time - tiempo1.time) + tiempo2.millitm - tiempo1.millitm; }expande(struct celda *nodoAct, struct individuo *pobl, struct creencias *esp) {i, j, numArbol, numHijo, sumando, dim, min;sumMin[PRUEBAS_ARBOL][TREEDIMS + 1];tmp;(nodoAct->hijo == NULL) {>hijo = (struct celda *) malloc(TREENODES*sizeof(struct celda));(i = 0; i < TREENODES; i++) {>hijo[i].padre = nodoAct;>hijo[i].hijo = NULL;>hijo[i].profundidad = nodoAct->profundidad - 1; } }(i = 0; i < TREENODES; i++) {>hijo[i].d[0] = -1; }(nodoAct->padre == NULL) {(i = 0; i < VARIABLES; i++) {>lnodo[i] = esp->l[i];>unodo[i] = esp->u[i]; } }(VARIABLES > TREEDIMS) {(numArbol = 0; numArbol < PRUEBAS_ARBOL; numArbol++) {(i = 0; i < TREENODES; i++) {>hijo[i].factibles = 0;>hijo[i].noFactibles = 0; }[numArbol][1] = rnd(0, VARIABLES-1);[numArbol][2] = rnd(0, VARIABLES-2);[numArbol][3] = rnd(0, VARIABLES-3);(sumMin[numArbol][2] >= sumMin[numArbol][1]) {[numArbol][2]++;(sumMin[numArbol][3] >= sumMin[numArbol][1]) {[numArbol][3]++; |