Capítulo 2: Algoritmo de generación de partículas
2.6. Herramientas Desarrolladas
Para facilitar el trabajo en la presente investigación, así como su prueba y puesta a punto, se desarrollaron algunas herramientas.
La primera de ellas es utilizada para la visualización de empaquetamientos de discos y esferas en 2 y 3 dimensiones respectivamente con el formato de fichero Yerva que tiene en su definición el medio como un conjunto de caras y la cantidad de esferas con sus coordenadas y radios. Teniendo la opción de mostrar las partículas en el orden en que se generaron y la posibilidad de moverse y rotar en 3 dimensiones esta herramienta resultó útil a la hora de depurar y validar el algoritmo.
Esta herramienta es una aplicación de consola, lo que implica necesita el pase de parámetros para su funcionamiento. La definición de los mismos es el siguiente: program.exe [-d] [-l] yervaFile
El parámetro “-d” se especifica cuando se necesita depurar el empaquetamiento. Esto va mostrando incrementalmente cada esfera o disco en la posición y orden que se generó. Con la opción “-l” se muestran además los números de las esferas o discos que representan el orden en que se generaron.
Para la navegación del empaquetamiento se emplea el botón derecho del mouse para mover la cámara con lo que se logra la rotación del empaquetamiento, con ambos botones del mouse o con el tercer botón se acerca o aleja el empaquetamiento. La Figura 2.11 muestra la aplicación en ejecución.
Figura 2 11 Herramienta para visualizar empaquetamientos de esferas y discos.
La segunda herramienta (fig. 2.12) fue pensada para llevar a cabo las pruebas estadísticas que se verán reflejadas en el Capítulo 3. Dado que los algoritmos que involucran números aleatorios no son deterministas.
Esta herramienta cuenta con varios tipos de parámetros definibles por el usuario, los mismos serán utilizados para crear los directorios en que se almacenarán los resultados, crear una línea de comandos que se le pasará al programa que se desea ejecutar y para crear el fichero de captura de salida estándar en caso que se especifique. El programa puede ser ejecutado con el mismo conjunto de parámetros las veces que se estime necesario, además de contar con soporte para multiprocesamiento, lo que disminuye el tiempo total de la ejecución (que es estimado por el software) en caso en que el tiempo no sea un factor a medir.
A continuación se detalla el uso de esta herramienta.
El campo Programa (Program) es obligatorio dado que es el programa que se desea ejecutar. Para cambiar este valor se debe presionar el botón para explorar ficheros (…). Al cambiar este valor si el campo del Directorio de Trabajo está vacío, este se cambia para el directorio donde reside el ejecutable seleccionado. Un concepto fundamental son las cadenas parametrizadas que no son más que cadenas de caracteres que pueden incluir uno o más parámetros en su definición. Los parámetros se especifican encerrando el nombre del mismo entre llaves, así para hacer referencia al parámetro n se debe escribir {n}. Estas cadenas parametrizadas son generadores de cadenas de caracteres [regulares] en tiempo de ejecución pues cada parámetro que contenga será mapeado a su valor correspondiente. Es importante que cada parámetro usado en estas cadenas sea definido antes de comenzar la ejecución para evitar errores.
El Directorio de Trabajo (Working Directory) es usando cuando el programa crea o lee ficheros desde donde este se encuentra. De esta forma se pueden mantener los ficheros de una forma ordenada. El contenido de este campo es una cadena parametrizada que representa un camino que será usado para leer o escribir resultados con caminos relativos al programa que se desea ejecutar. Un ejemplo de su utilización es el siguiente: D:\output\{size}\{distribution}\{i}\
La lista de parámetros contiene los parámetros por defecto así como los definibles por el usuario. Los parámetros por defecto juegan el roll de generar cadenas de caracteres únicas que son deseables para no sobrescribir resultados previos. Actualmente se cuenta con dos de estos parámetros: {n} que toma valores entre 0 y la cantidad total de ejecuciones menos uno e {i} que toma valores entre 0 y la cantidad de ejecuciones con el mismo conjunto de parámetros menos uno. Estos parámetros no se pueden redefinir ni modificar puesto que son usados internamente por el software. Entre los parámetros definibles se encuentran los incrementales (autoincrement) que tiene un índice inferior y superior con un incremento, tomando valores desde el límite inferior e incrementando en el incremento hasta que el valor no sobrepase el límite
superior. Otro parámetro es el conjunto (set) al que se le define los valores que puede tomar mediante una lista de cadenas. En el menú contextual de la lista de parámetros encontramos las opciones para su manipulación, para insertar un nuevo parámetro se selecciona Insert en este menú lo que muestra una ventana para la definición de este como se muestra en la Figura 2.13.
Figura 2 13 Ventana de diálogo para la creación de un nuevo parámetro.
Luego de especificar el nombre, el tipo y las propiedades particulares del parámetro seleccionado se presiona el botón OK para agregarlo a la lista de parámetros. Para eliminar un parámetro simplemente se selecciona este y se presiona la tecla DELETE, también se puede lograr el mismo objetivo seleccionando la opción Delete en el menú contextual.
La Línea de Comando (Command Line) son los parámetros que se le pasan al programa que se desea ejecutar y dependen del mismo. El formato de este campo es una cadena parametrizada que representa la línea de comandos que se le pasa al programa. Un ejemplo de esto es: -s {size} -f "c:\temp\file_{i}.txt"
La Configuración de Ejecución (Run Config) son las veces que se deberá ejecutar el programa con el mismo conjunto de parámetros. Este valor está estrechamente relacionado con los valores que tomará el parámetro {i} ya que este tomará valores desde 0 hasta el valor que se especifique en este campo menos uno.
La Configuración Multiproceso (Thread Config) es usada si se especifica en computadoras con más de un procesador. La configuración por defecto se puede utilizar en todos los casos, pero cuando no se tiene en cuenta el tiempo de cada ejecución y se cuenta con más de un procesador es preferible usar el multiprocesamiento para disminuir el tiempo total de las ejecuciones. La cantidad de procesadores a usar se especifica en Cantidad de Hilos (Thread Count) así como la prioridad de los mismos en Prioridad de los Hilos (Thread Priority). Si el programa imprime datos por la salida estándar se puede considerar usar la Captura de Salida (Capture Output) que se activa chequeando el cuadro de chequeo que se encuentra a la izquierda del campo lo que habilita los controles correspondientes. Semejante al Directorio de Trabajo, este campo cuenta con un botón de selección (…) y un cuadro de texto. El botón de selección selecciona un fichero del sistema de archivos, lo que representa la base de las capturas pues dado que se realizarán muchas ejecuciones este valor debe ser único para cada una de ellas para no sobrescribir los resultados. Luego de seleccionar un fichero la dirección de este pasa al cuadro de texto donde se le deben agregar los parámetros para formar una cadena parametrizada que representa la dirección absoluta del fichero que contendrá la salida estándar de cada ejecución. Ejemplo de esto es: D:\output\{size}\{distribution}\{i}\output.txt
El próximo grupo es la Información de Ejecución que muestra el tiempo de ejecución (Elapsed Time), el tiempo restante (Remain Time), la memoria usada por todos los Hilos que se encuentran en ejecución (Memory Used) y la cantidad de los mismos (Active Threads).
El único campo que es obligatorio para una ejecución es el campo Programa (Program) que de especificarlo con la configuración por defecto será ejecutado una sola vez sin línea de comando y sin captura de salida estándar. Para detener la ejecución en cualquier momento, se debe presionar el botón Cancelar (Cancel ).
2.7.
Conclusiones Parciales
Se ha logrado extender e implementar una variante del método de avance frontal en 3 dimensiones, la misma puede ser extendida a otros tipos de partículas y medios para los cuales generarlas. Modificaciones del método general como la aproximación de las partículas a su posición final y el tratamiento de las colisiones entre ellas posibilitan una mayor velocidad de generación. Se ha desarrollado además una herramienta que permitirá realizar una mayor cantidad de corridas del algoritmo con una gran facilidad y de esta forma obtener una mayor confiabilidad en las pruebas que se efectuarán en el capítulo siguiente.