Jueves 14 de Noviembre de 2024, 17:20
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Inteligencia artificial(Busqueda local)
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Inteligencia artificial(Busqueda local) (Leído 2168 veces)
oscarreyesavila
Nuevo Miembro
Mensajes: 1
Inteligencia artificial(Busqueda local)
«
en:
Martes 9 de Abril de 2019, 21:55 »
0
Hola amigos, estoy realizando un código de búsqueda de local, y consiste :
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
struct vecinos{
int* vecino;
};
typedef struct vecinos Vecinos;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int* asigsol(int);
void impsol(int*,int);
Vecinos* asigvecinos(void);
int fitness(int *,int );
int fitnessVecinos(int *,int );
void crearVecinos(int,int,int,int,int,int[],int,int);
void burbuja(int arreglo[],int TAM);
int main(int argc, char *argv[]) {
int i=1,n;
int * solucion;
Vecinos vecinos[5];
int f=0,ite;
printf("size of the array solution");
scanf("%d",&n);
solucion=asigsol(n);
printf("solucion innicial");
printf("\n");
impsol(solucion,n);
printf("\n------------------------");
crearVecinos(*(solucion+0),*(solucion+1),*(solucion+2),*(solucion+3),*(solucion+4),solucion,n,i);
/*
vecinos[0].vecino=malloc(3*sizeof(int));
vecinos[0].vecino[0]=1;
vecinos[0].vecino[1]=2;
vecinos[0].vecino[2]=3;
for(i=0;i<3;i++){
printf("%d",vecinos[0].vecino
);
}
*/
free(solucion);
return 0;
}
int* asigsol(int n){
int x;
int * vecino=malloc(n*sizeof(int));
srand(time(0));
for(x=0;x<n;x++){
*(vecino+x)=(rand()%9)+10;//se genera el número aleatorio entre 0 y 29
}//for
return vecino;
free(vecino);
}
void impsol(int* solucion,int n){
int i;
for(i=0;i<n;i++){
printf("VECINOS[%d]=%d",i,solucion
);
printf("\n");
}
}
Vecinos* asigvecinos(void){
Vecinos* vecinos=malloc(5*sizeof(Vecinos));
return vecinos;
}
int fitness(int * arreglo,int n){
int i,r=0,R=0;
for(i=0;i<n;i++){
r=*(arreglo+i) * *(arreglo+i);
R+=r;
}
return R;
}
int fitnessVecinos(int * arreglo,int n ){
int i,r=0,R=0;
for(i=0;i<n;i++){
r=*(arreglo+i) * *(arreglo+i);
R+=r;
}
return R;
}
void crearVecinos(int a,int b,int c,int d,int e,int Fit[],int n,int i){
int x,j,l;
int Fits=0;
int A=0,B=0,C=0,D=0,E=0;
Vecinos vecinos[5];
for(x=0;x<5;x++){
vecinos
.vecino=malloc(6*sizeof(int));
}
srand(time(0));
for(x=0;x<5;x++){
for(j=0;j<5;j++){
vecinos
.vecino[j]=(rand()%9)+10;
}
}
vecinos[0].vecino[5]=a;
vecinos[1].vecino[5]=b;
vecinos[2].vecino[5]=c;
vecinos[3].vecino[5]=d;
vecinos[4].vecino[5]=e;
for(l=0;l<5;l++){
impsol(vecinos[l].vecino,6);
printf("\n");
}
Fits=fitness(Fit,n);
A=fitnessVecinos(vecinos[0].vecino,6);
B=fitnessVecinos(vecinos[1].vecino,6);
C=fitnessVecinos(vecinos[2].vecino,6);
D=fitnessVecinos(vecinos[3].vecino,6);
E=fitnessVecinos(vecinos[4].vecino,6);
printf("%d",A);
printf("\n");
printf("%d",B);printf("\n");
printf("%d",C);printf("\n");
printf("%d",D);printf("\n");
printf("%d",E);printf("\n");
printf("%d",Fits);printf("\n");
int arreglo[6]={A,B,C,D,E,Fits};
burbuja(arreglo,6);
printf("ORdebado-----------------\n");
impsol(arreglo,6);
printf("-----------------\n");
while(i<6){
if(Fits==arreglo[0]){
printf("fits\n");
i++;
crearVecinos(Fit[0],Fit[1],Fit[2],Fit[3],Fit[4],Fit,n,i);
}else{
if(arreglo[0]==A){
printf("A");
i++;
crearVecinos(vecinos[0].vecino[0],vecinos[0].vecino[1],vecinos[0].vecino[2],vecinos[0].vecino[3],vecinos[0].vecino[4],vecinos[0].vecino,6,i);
}
if(arreglo[0]==B){
printf("B");
i++;
crearVecinos(vecinos[1].vecino[0],vecinos[1].vecino[1],vecinos[1].vecino[2],vecinos[1].vecino[3],vecinos[1].vecino[4],vecinos[1].vecino,6,i);
}
if(arreglo[0]==C){
printf("C");
i++;
crearVecinos(vecinos[2].vecino[0],vecinos[2].vecino[1],vecinos[2].vecino[2],vecinos[2].vecino[3],vecinos[2].vecino[4],vecinos[2].vecino,6,i);
}
if(arreglo[0]==D){
printf("D");
i++;
crearVecinos(vecinos[3].vecino[0],vecinos[3].vecino[1],vecinos[3].vecino[2],vecinos[3].vecino[3],vecinos[3].vecino[4],vecinos[3].vecino,6,i);
}
if(arreglo[0]==E){
printf("E");
i++;
crearVecinos(vecinos[4].vecino[0],vecinos[4].vecino[1],vecinos[4].vecino[2],vecinos[4].vecino[3],vecinos[4].vecino[4],vecinos[4].vecino,6,i);
}
}
}
}
void burbuja(int lista[],int TAM){
int i,j,temp;
for (i=1;i<TAM;i++)
{
for (j=0;j<TAM-1;j++)
{
if (lista[j] > lista[j+1]) //condicion
{
temp = lista[j]; //temp guarda momentaneamente el valor de lista[j]
lista[j]=lista[j+1]; //Asigno al la posicion lista[j], lo que hay en lista[j+1]
lista[j+1]=temp; //obtendra un nuevo valor por parte de temp.
}
}
}
}
Alguien puede ayudarme en mi funcion crearvecinos, por que cuando entra en el ciclo while me arroja valores raros ,o tengo que liberar memoria,por que me sale otra cosa.
Tweet
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Inteligencia artificial(Busqueda local)