Example #1
0
 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
Example #2
0
    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
Example #3
0
 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
Example #4
0
  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
Example #5
0
    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])