Hola compas , por favor, a ver si podéis echarme una manilla sobre cómo abordar correctamente la única condición que me queda en este problema de optimización, en el que se pretende crear un andamio con hasta 5 piezas y minimizando su coste:
No logro almacenar en el array con 0 y 1 (andamio[]) la solución correcta de mínimo coste (*costeAndamio < coste_total).
He probado con: min 7m, max 8m, y <=25 y me devuelve las piezas 1 y 2, en lugar de la 4, que sería la más barata.
Aquí parte del código (el necesario para entender lo que quiero hacer ):
Y MUCHÍSIMAS GRACIAS!!!
No logro almacenar en el array con 0 y 1 (andamio[]) la solución correcta de mínimo coste (*costeAndamio < coste_total).
He probado con: min 7m, max 8m, y <=25 y me devuelve las piezas 1 y 2, en lugar de la 4, que sería la más barata.
Aquí parte del código (el necesario para entender lo que quiero hacer ):
Código (c) [Seleccionar]
void insertarPiezas(Pieza piezas[])
{
piezas[0].altura = 5;
piezas[0].peso = 10;
piezas[0].coste = 50;
piezas[1].altura = 3;
piezas[1].peso = 13;
piezas[1].coste = 70;
piezas[2].altura = 4;
piezas[2].peso = 28;
piezas[2].coste = 80;
piezas[3].altura = 7;
piezas[3].peso = 25;
piezas[3].coste = 100;
piezas[4].altura = 6;
piezas[4].peso = 30;
piezas[4].coste = 90;
}
***************ESTA DE DEBAJO ES LA PARTE QUE ME INTERESA Y NO FUNCIONA CORRECTAMENTE EN EL IF...********************
void actualizarSolucion(int solucion_parcial[], Pieza piezas[], int andamio[],int *alturaAndamio, int *pesoAndamio, int *costeAndamio, int alturaMin)
{
int altura_total = 0, peso_total = 0, coste_total = 0;
for(int i = 0; i < NUM_PIEZAS; i++)
{
if(solucion_parcial == 1){
altura_total += piezas.altura;
peso_total += piezas.peso;
coste_total += piezas.coste;
}
}
if(alturaMin <= altura_total && *costeAndamio <= coste_total){
printf("\nCoste andamio = %d vs Coste total = %d", *costeAndamio, coste_total);
minimoCoste(solucion_parcial, andamio, altura_total, peso_total, coste_total, *alturaAndamio, *pesoAndamio, *costeAndamio);
*alturaAndamio = altura_total;
*pesoAndamio = peso_total;
*costeAndamio = coste_total;
}
}
int minimoCoste(int solucion_parcial[], int andamio[], int altura_total, int peso_total, int coste_total, int *alturaAndamio, int *pesoAndamio, int *costeAndamio)
{
for(int i = 0; i < NUM_PIEZAS; i++)
{
andamio = solucion_parcial;
printf("\n %d ",andamio);
}
return andamio;
}
Y MUCHÍSIMAS GRACIAS!!!