[RO] experiencias con la tercer entrega - parte individual

[RO] experiencias con la tercer entrega - parte individual

de Hector Cancela -
Número de respuestas: 12

Estimadas y estimados:

para compartir las experiencias con los distintos lenguajes en la realización de estos primeros ejercicios del curso, pedimos que cada participante conteste este mensaje, indicando:

- Qué lenguaje utilizó para programar el ejercicio 6.1

- Qué tiempo de ejecución insumió el programa para un tamaño de muestra N=1E+6

- Qué tamaño de muestra calcularon en la parte b, y qué tiempo de ejecución les insumió

- Si realizaron corridas con otros N todavía mayores, y en ese caso cual fue el mayor N que usaron y qué tiempo insumió

- Otros comentarios (problemas de memoria, dificultades con las bibliotecas de números aleatorios, elementos que hicieron sencillo o complicado resolver la tarea).

Muchos saludos

Héctor


En respuesta a Hector Cancela

Re: [RO] experiencias con la tercer entrega - parte individual

de Bruno Fonseca Lema -
Buenas, de mi parte usé R para programar el ejercicio 6.1 El tiempo de ejecución para N=1E+6 fue 22 s. En la parte b, utilicé N=13712359 con tiempo de ejecución 300 s. Entiendo que las características de la máquina también deben incidir en los tiempos de ejecución. En mi caso estoy usando un procesador i3 con 8gb de ram.

Saludos,
Bruno
En respuesta a Hector Cancela

Re: [RO] experiencias con la tercer entrega - parte individual

de Federico Adrian Molina Schöpf -
Hola, buenos días

- En mi caso utilicé Python (versión 3.10.9).
- Parte a) Para N=1000000 llevó 8,2 s.
- Parte b) Tamaño de muestra calculado N=14374208, el tiempo de ejecución fue 130,7 s
- Otros datos sobre la plataforma de cómputo:
* Sistema Operativo: Windows 10 Pro 64-bit
* Procesador: Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz (4 CPUs), 2.9GHz
* Memoria RAM: 8192MB

Saludos, Federico.
En respuesta a Hector Cancela

Re: [RO] experiencias con la tercer entrega - parte individual

de Daniel Matias Ramirez Rios -
Hola,

Yo utilicé R. Para N=1000000 llevó 6.77 segundos. El tamaño de la parte b fue N= 15878616 y llevó 105.58 segundos. ç
La computadora utilizada: Lapto Hp procesador Intel i7 CPU @ 2.50GHz 12.0 GB de
Ram. Sistema operativo: Windows 10 Pro

Saludos
Daniel
En respuesta a Hector Cancela

Re: [RO] experiencias con la tercer entrega - parte individual

de Juan Camilo Riveros Murcia -
Hola, siguiendo el formato de respuesta de Federico:

- En mi caso utilicé R (versión 4.2.1).
- Parte a) Para N=1000000 llevó 9,7 s.
- Parte b) Tamaño de muestra calculado N=13.690.959, el tiempo de ejecución fue 113,2 s
- Otros datos sobre la plataforma de cómputo:
* Sistema Operativo: Windows 10 Home 64-bit
* Procesador: Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz (4 CPUs), 2.4GHz
* Memoria RAM: 8192MB

Buen día para todos.
En respuesta a Hector Cancela

Re: [RO] experiencias con la tercer entrega - parte individual

de Franco Enrique Fontana -
Hola a todos, va el detalle de lo solicitado en relación con el ejercicio 6.1:

Lenguaje utilizado: Python 3.11
Tiempo de ejecución (s) para n=10^6: 2.192964
Tamaño de muestra obtenido en parte b (nN): 13710072
Tiempo tamaño de muestra obtenido en parte b (nN): No se calculó el tiempo específico de nN sino tiempo = (total estimación + nN), resultando prácticamente iguales, por lo que el tiempo de cálculo de nN es mínimo
Tiempo de ejecución parte c (con n=13710072): 31.88207
Órdenes mayores a 10^6: En este caso no se realizaron

Por influir en los tiempos de ejecución, agrego también las características del equipo:

Hardware:
Procesador Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz 3.20 GHz
RAM instalada 32,0 GB
Tipo de sistema Sistema operativo de 64 bits, procesador x64

Sistema Operativo:
Edición Windows 11 Pro
Versión 21H2


Comentarios:

En el caso de Python (desde mi punto de vista un lenguaje muy amigable para utilizar), entiendo que principalmente el uso de las bibliotecas numpy para el manejo de arrays y pandas para la presentación clara de resultados (por pantalla, csv, xlsx, etc) facilitan mucho la tarea. También la biblioteca scipy cuando por ejemplo tenemos que trabajar con distribuciones de probabilidad.

Otro tema que tuve en cuenta en este y todos los problemas, es siempre declarar una semilla fija arbitraria para la generación de los números pseudoaleatorios. Así se puede obtener una misma secuencia en cada ejecución y resulta más fácil el desarrollo del código para el algoritmo.

Saludos,

F r a n c o . -

En respuesta a Hector Cancela

Re: [RO] experiencias con la tercer entrega - parte individual

de Miguel Angel Paolino Varela -
Lenguaje: Python 3.11.7 | packaged by Anaconda, Inc. | (main, Dec 15 2023, 18:05:47) [MSC v.1916 64 bit (AMD64)]
Tiempo de ejecución para N = 1E6 fue de 9.968 s
Para la parte B estimé 10 250 000 replicaciones (creo que tengo un error en el cálculo del error estimado en la parte a...) porque el programa me devuelve 0.001001 como error ~ 1E-3 para ese número de replicaciones. (que validaría el resultado) Tiempo de ejecución 106.7 segundos
No seguí calculando con N mayores ya que el cálculo del volumen del cono por fórmula es 1.34 km3, el mismo resultado que obtuve con Monte Carlo para la parte b
En respuesta a Miguel Angel Paolino Varela

Re: [RO] experiencias con la tercer entrega - parte individual

de Hector Cancela -
Buenas,
gracias a Bruno, Federico, Daniel, Juan, Franco y Miguel por compartir. Por lo que comentan, tanto R como Python han sido buenas opciones para implementar los algoritmos, y los tiempos de ejecución, si bien varían de acuerdo a implementaciones y a características de los PCs, son bastante rápidos.

Para quienes no contestaron aún, les recuerdo que los postings marcados como [RO] son de respuesta obligatoria y parte de la evaluación del curso, así que en cuanto puedan, por favor compartan su experiencia en este foro.
Saludos
Héctor
En respuesta a Hector Cancela

Re: [RO] experiencias con la tercer entrega - parte individual

de Andres Santos Melogno -
Buenas tardes, disculpas por la demora

Utilicé Python en Gooegle Colab para realizar el ejercicio 6.1. El tiempo de ejecución n_replicaciones = 10**6 fue de 45 segundos. En la parte b) utilicé un N=13722946, demorando 0.00094 segundos. La PC cuenta con Intel(R) Core(TM) i3-8100T CPU @ 3.10GHz 3.10 GHze. Los tiempos de ejecución de la primer parte difieren de mis compañeros, puede ser por la utlización de la biblioteca Numpy de Python.
En respuesta a Hector Cancela

Re: [RO] experiencias con la tercer entrega - parte individual

de Santiago Robaina Passeggi -
Buenas, disculpen la demora en la respuesta.

Yo utilicé python, y no he tenido ningún problema. El tiempo de ejecución viene siendo bueno en general, en concreto para ese tamaño de muestra fue 1.8278s
En respuesta a Hector Cancela

Re: [RO] experiencias con la tercer entrega - parte individual

de Leandro Hernandez Fernandez Chaves -
Buenas, disculpen la tardanza. En mi caso utilicé python, el tiempo de ejecución para n=10e6 fue de 9 segundos y medio aproximadamente y para n=8965269, el tiempo de cálculo se me fue a 124 segundos.

Se me complicó un poco el ejercicio porque se me dificultó la comprensión de algunas partes del teórico que creí haber entendido bien. Una vez superado ese detalle, entiendo que pude resolver la tarea correctamente.

Saludos
En respuesta a Hector Cancela

Re: [RO] experiencias con la tercer entrega - parte individual

de Ignacio Miguel Corrales Burutaran -
Buenas, disculpen que recién responda. En mi trabajo cumplo turnos rotativos y eso dificulta mucho el hacerse una rutina para de disponer de tiempos y la necesidad de descansos se hace mayor.
Dejando de lado las excusas, les cuento que utilicé lenguaje Python para resolver el ejercicio.
Utilizando la PC de mi trabajo (me quedé un rato fuera de mi horario laboral, no vayan a creer que le estoy robando a la empresa, jeje), la cual cuenta con 32GB de RAM, un procesador Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz y Sistema Operativo Windows 10 Pro for Workstations (64 bits), versión 22H2, Compilación 19045.3693; el tiempo insumido para el millón de repeticiones, fue de 1,771 segundos.
En la parte b, el nH calculado fue de 13.680.588 y para su ejecución, insumió 24,33 segundos.
La tasa de ejecuciones por segundo (unas 560 mil) es casi idéntica en ambos casos, por lo que el costo computacional es claramente lineal en N.
Por otra parte, no realicé corridas con N mayores.
Los comentarios que tengo para agregar, es que para calcular la inversa de la normal, utilicé una librería de Python llamada scipy.special (función ndtri), ya que primeramente utilicé otra (que no recuerdo el nombre pero que era más intuitiva en los nombres de funciones y en su uso) pero los tiempos insumidos eran mayores y haciendo un poco de investigación, llegué a que esa librería, bajo cuerdas, usaba esta otra para el cálculo de funciones estadísticas, así que readaptando el código, logré mejores resultados de desempeño.
Por otro lado, para la parte grupal tuvimos que comparar el código con el de mi compañero y resultó casi idéntico, sin embargo el desempeño de uno y otro era muy disímil. Analizando ambos códigos en mayor detalle, concluimos que el uso de la librería numpy impactaba negativamente en el desempeño. El código de mi compañero usaba dicha librería para calcular la distancia euclidiana entre puntos (en el problema de la hiperesfera) y para acumular vectores y calcular su promedio y desviación estándar. En el mío, que utilizaba únicamente operaciones aritméticas estándar para dichos cálculos, el mismo problema se resolvía (en la misma PC) en el órden de 3 veces más rápido.
A su vez, también en la tarea grupal, en cierto momento llegamos a que debíamos correr la solución con una cantidad de repeticiones nh= 184.443.973, y en el script donde se utilizaba numpy, el código no podía ejecutarse por errores de memoria insuficiente, mientras que en el que no usaba dicha librería, se ejecutó sin problemas más allá de la natural demora para su ejecución.

Espero estos comentarios (medio tardíos) y nuestra experiencia les sean útiles a los demás para encarar los problemas siguientes.
En respuesta a Ignacio Miguel Corrales Burutaran

Re: [RO] experiencias con la tercer entrega - parte individual

de Hector Cancela -
Buenas, gracias Andrés, Santiago, Leandro e Ignacio por sumarse al intercambio!
Sé que el curso tiene un ritmo intenso, y que todos los participantes tienen que atender obligaciones laborales y otros cursos que realizan en paralelo, por lo que aprecio mucho el esfuerzo en ir siguiendo las actividades que proponemos para realizar, incluyendo el intercambio en los foros que permite compartir muchos detalles de la práctica que no es fácil incluir o comprender en un material puramente teórico.
Muchos saludos
Héctor