def guardar_resultados(self, directory): fecha = utils.fecha_para_filename() filename = str(self.n) + '-' + str(self.k) + '_' + fecha + ".csv" with open(directory + filename, mode="w") as my_file: towrite = ",".join( [str(x) for x in self.resultados]) my_file.write( towrite ) return filename
def generar_reporte(self, reg, rango=[10, 100, 1000, 10000, 100000]): html = '<!doctype html><html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8">' html += "<title>Reporte 1: n={n}, k={k}.</title>".format(n=self.n, k=self.k) html += '<link type="text/css" rel="stylesheet" href="styles.css" />' html += "</head>" html += "<body>" nav = '<div id="nav"><ul>' nav += utils.nav_para_gens(reg.suffix) nav += '<li class="titulo">Experimentos</li>' content = '<div id="content"><h1>Reporte 1: n={n}, k={k}.</h1>'.format(n=self.n, k=self.k) m_gen = muestras.Muestra(self.n, self.k, 0) abstract = '<div id="abstract"><h2>Explicacion</h2>' abstract += '<p class="texto">Es un reporte para investigar graficamente el comportamiento de la funcion con diferentes tamanños de muestra. Tratando de investigar las caracteristicas del caso promedio.</p>' abstract += "<h3>Parametros comunes:</h3>" abstract += "<p><strong>Tamaño de cadena (n)</strong>: {a}</p>".format(a=self.n) abstract += "<p><strong>Tamaño de alfabeto (k)</strong>: {a}</p>".format(a=self.k) abstract += "<p><strong>Tamaño de Poblacion</strong>: " try: abstract += "{a}".format(a=float(m_gen.poblacion())) except: abstract += "{a} * {b}".format(a=m_gen.k, b=m_gen.n) abstract += "</p>" ran_gen = m_gen.rango_posible() abstract += "<p><strong>Mejor Caso</strong>: {a}</p>".format(a=ran_gen[0]) abstract += "<p><strong>Peor Caso</strong>: {a}</p>".format(a=ran_gen[1]) abstract += "</div>" content += abstract for x in rango: navlink, subsec = self.generar_seccion(x, reg) nav += navlink content += subsec nav += "</ul></div>" content += "</div>" html += nav html += content html += "</body></html>" filename = "reporte1-{n}-{k}_".format(n=self.n, k=self.k) + utils.fecha_para_filename() + ".html" with open(reg.directorio_reportes + filename, mode="w") as my_file: my_file.write(html) return filename
def generar_histograma(self, directorio): rango_posible = self.muestra.rango_posible() n, bins, patches = plt.hist( self.muestra.resultados, range(rango_posible[0], rango_posible[1]), normed=1, facecolor="green", alpha=0.75 ) plt.xlabel("Costo") plt.ylabel("Probabilidad") plt.title( "Histograma: n={n}, k={k}, cant={cant}".format(n=self.muestra.n, k=self.muestra.k, cant=self.muestra.cant) ) plt.grid(True) fecha = utils.fecha_para_filename() filename = str(self.muestra.n) + "-" + str(self.muestra.k) + "-" + str(self.muestra.cant) + "_" + fecha + ".png" plt.savefig(directorio + filename, dpi=(640 / 8)) plt.close() return filename
def generar_reporte(self, reg, rango=[10,20,50,100,200,500]): html = '<!doctype html><html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8">' html += '<title>Reporte 2: n={n}, muestras={k}.</title>'.format(n=self.n, k=self.cant) html += '<link type="text/css" rel="stylesheet" href="styles.css" />' html += '</head>' html += '<body>' nav = '<div id="nav"><ul>' nav += utils.nav_para_gens(reg.suffix) nav += '<li class="titulo">Experimentos</li>' content = '<div id="content"><h1>Reporte 2: n={n}, muestras={k}.</h1>'.format(n=self.n, k=self.cant) abstract = '<div id="abstract"><h2>Explicacion</h2>' abstract += '<p class="texto">Es un reporte para investigar graficamente el comportamiento de la funcion manteniendo el tamaño de cadena y el tamanño de muestra, pero variando el tamaño del alfabeto. Se intenta ver como se modifica el grafico de la funcion.</p>' abstract += '<h3>Parametros comunes:</h3>' abstract += '<p><strong>Tamaño de cadena (n)</strong>: {a}</p>'.format(a=self.n) abstract += '<p><strong>Tamaño de muestra</strong>: {a}</p>'.format(a=self.cant) abstract += '<p><strong>Rango de tamaño de Alfabeto</strong>: ' abstract += ', '.join([str(x) for x in rango]) abstract += '</p>' abstract += '</div>' content += abstract for x in rango: navlink, subsec = self.generar_seccion(x, reg) nav += navlink content += subsec nav += '</ul></div>' content += '</div>' html += nav html += content html += '</body></html>' filename = "reporte2-{n}-{k}_".format(n=self.n, k=self.cant) + utils.fecha_para_filename() + ".html" with open(reg.directorio_reportes + filename, mode="w") as my_file: my_file.write( html ) return filename
En cadena y alfabeto = 500, el histograma se come toda la memoria y se tilda el script, independientemente del tamaño de Muestra. Por lo que dejamos como tamaño maximo: 200 ''' #Configuracion reg = utils.registry reg.directorio_reportes = "resultados/reportes/" reg.directorio_imagenes = "resultados/reportes/imagenes/" reg.directorio_muestras = "resultados/muestras/" reg.directorio_imagenes_html = "imagenes/" if __name__ == '__main__': reg.suffix = utils.fecha_para_filename() #Version Rapida, Con Muestras pequeñas #Reporte 1 print("Reportes de tipo 1") r1 = gen_reporte1.GenerarReporte1([10, 25], [10,20]) r1.generar_reportes(reg) #Reporte2 print("Reportes de tipo 2") r2 = gen_reporte2.GenerarReporte2([10, 25], rango=[5, 7], cant=10) r2.generar_reportes(reg) #Reporte3 print("Reportes de tipo 3") r3 = gen_reporte3.GenerarReporte3([(10,10),(25,25)], [10,100])