Off Topic - [MATLAB] Combinatoria mediante funciones en cascada

 
Vista:
Imágen de perfil de Jon
Val: 2
Ha disminuido su posición en 17 puestos en Off Topic (en relación al último mes)
Gráfica de Off Topic

[MATLAB] Combinatoria mediante funciones en cascada

Publicado por Jon (1 intervención) el 02/10/2020 12:29:46
Hola a todos,

Estoy intentando programar un algoritmo para probar muchas combinaciones (unos 50.000) y posteriormente post-procesar estos resultados. De todas formas, el usuario podrá filtrar manualmente ciertas características, reduciendo la cantidad de combinaciones.

Con el objetivo de reducir el tiempo de ejecución, mi idea era estructurar el algoritmo con funciones en cascada en vez de usar bucles "For". Es decir, tengo una función principal, ésta llama a otra y así consecutivamente (9 en total).

Dicho esto, mi problema es el siguiente. Puesto que no soy Ingeniero Informático, no sé cómo gestionar el contador de todos los casos. Ahora mismo, el programa me salta a la siguiente opción en la primera "etapa".

Espero que se haya entendido la duda, pero si queréis dejadme vuestro correo y os envío un diagrama del programa.

Un saludo,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro Andrade

[MATLAB] Combinatoria mediante funciones en cascada

Publicado por Alejandro Andrade (50 intervenciones) el 28/03/2023 22:31:58
¡Hola Jon!

Entiendo que estás implementando un algoritmo que genera todas las combinaciones posibles de ciertas características, y que estás usando funciones en cascada para hacerlo. Sin embargo, estás teniendo problemas para gestionar el contador de todos los casos. Aquí te propongo una solución:

1. Crea una variable global, digamos "contador", y inicialízala en cero antes de llamar a la función principal.
2. En cada función que genera combinaciones, antes de llamar a la siguiente función en cascada, actualiza el valor de "contador" sumando la cantidad de combinaciones generadas en esa función.
3. Si el usuario filtra manualmente ciertas características, tienes dos opciones:
3.1 Si las combinaciones se generan en la última función en cascada, puedes simplemente ignorar las combinaciones que no cumplan con los filtros. En este caso, el valor final de "contador" será la cantidad de combinaciones válidas.
3.2 Si las combinaciones se generan en una función anterior, debes modificar la función para que genere solo las combinaciones válidas y actualice el valor de "contador" en consecuencia.
4. Una vez que terminas de generar todas las combinaciones, el valor de "contador" será la cantidad total de combinaciones generadas, incluyendo las que no cumplen con los filtros.

Espero que esto te ayude a resolver tu problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar