def main():
    print('{:_^78}'.format(" DISTRIBUCIÓN NORMAL "))
    num_marcas = (int(input("Cantidad de marcas:")))

    calcular_marcas(num_marcas, marcas)
    calcular_fx(marcas, fx)
    calcular_Fx(fx, Fx)
    imprimir(marcas, fx, Fx)

    dias = (int(input("Cantidad de días a simular:")))
    semilla = (int(input("Valor de la semilla:")))
    metodo_mixto(dias, semilla, 11, 13, 64, aleatorios)
    print("\nVALORES ALEATORIOS", aleatorios)
    chicuadrado.test_chi(aleatorios)

    # generar_random(semilla,dias, aleatorios)
    # metodo_mult(cant_dias, valor_semilla, 11, 64, aleatorios)
    # metodo_mixto(cant_dias, valor_semilla, 11, 13, 64, aleatorios)

    buscar_intervalo(semilla, dias, marcas, Fx)

    print('{:_^78}'.format(""))
    print("CANTIDAD DE DÍAS", dias, "\n" "VALORES DIARIOS ", periodo)

    x = np.linspace(-4, 4, 50)
    graficar_normal(x, lw=2)
示例#2
0
def main():
    print('{:_^78}'.format(" DISTRIBUCIÓN DE POISSON "))
    n = (int(input("Cantidad de variables aleatorias deseadas:")))
    mu = (float(input("Valor de mu:")))
    var_al(n, mu)
    calcular_fx(X, fx, mu)
    calcular_Fx(fx, Fx)
    imprimir(X, fx, Fx)

    dias = (int(input("Cantidad de días a simular:")))
    semilla = (int(input("Valor de la semilla:")))

    metodo_mixto(dias, semilla, 11, 13, 64, aleatorios)
    print("VALORES ALEATORIOS:", aleatorios)
    chicuadrado.test_chi(aleatorios)

    buscar_intervalo(semilla, dias, X, Fx)

    print('{:_^78}'.format(""), "\n")
    print("CANTIDAD DE DÍAS EVALUADOS:", dias, "\n"
          "VALORES DIARIOS OBTENIDOS: ", periodo)

    graficar_poi(50, mu)
def main():
    print('{:_^78}'.format(" DISTRIBUCIÓN EXPONENCIAL "))
    n = (int(input("Cantidad de eventos a evaluar:")))
    a = (float(input("Amplitud del intervalo:")))
    ini = (float(input("Valor inicial:")))
    var_al(ini, n, a)
    calcular_fx(X, fx)
    calcular_Fx(fx, Fx)
    imprimir(X, fx, Fx)

    dias = (int(input("Cantidad de días a simular:")))
    semilla = (int(input("Valor de la semilla:")))
    metodo_mixto(dias, semilla, 11, 13, 1024, aleatorios)
    print("\nVALORES ALEATORIOS:", aleatorios)
    chicuadrado.test_chi(aleatorios)

    buscar_intervalo(semilla, dias, X, Fx)

    print('{:_^78}'.format(""), "\n")
    print("CANTIDAD DE DÍAS EVALUADOS:", dias, "\n"
          "VALORES DIARIOS OBTENIDOS: ", periodo)

    x = np.linspace(0, 10, 50)
    graficar_exp(x, lw=2)
    (iteraciones sin encontrar repetición) de mod/4.

    """
    res = []

    for i in range(n):
        x1 = (a * x + c) % mod
        x2 = x1 / (mod-1)  # para que el valor esté entre 0 y 1
        # print (i+1, x2)
        x = x1
        #v_res.append(x2)
        v_res.append(round(x2, 4))

    #print(v_res)


def ingresar():
    n = int(input("Cantidad de números deseados:"))
    x = int(input("Valor de la semilla: "))
    a = int(input("Valor del multiplicador: "))
    c = int(input("Valor de la constante aditiva: "))
    m = int(input("Valor del modulo: "))
    metodo_mixto(n, x, a, c, m, res)


if __name__ == "__main__":  # solo se ejecuta cuando no es llamado via 'import'
    ingresar()
    print("Valores Aleatorios:", res)
    chicuadrado.test_chi(res)

def inicio(p_dias):
    corridas = 1

    for i in range(0, sim):
        v_total_per.append(0)
        v_total_vtas.append(0)
        v_mayorVenta.append(0)
        v_menorVenta.append(0)
        v_total_prov_a.append(0)
        v_total_prov_b.append(0)

    calcular_demoraFx(demoraPx_prov_a, demoraFx_prov_a)
    calcular_demoraFx(demoraPx_prov_b, demoraFx_prov_b)

    print('\nPROVEEDOR A')
    imprimir_demora(demora_prov_a, demoraPx_prov_a, demoraFx_prov_a)
    print('PROVEEDOR B')
    imprimir_demora(demora_prov_b, demoraPx_prov_b, demoraFx_prov_b)

    while corridas <= sim:
        print('{: ^34}'.format(""))
        cprint("ITERACIÓN NÚMERO:",
               'blue',
               attrs=['bold', 'underline'],
               end=""), cprint(corridas, 'blue', attrs=['bold', 'underline'])
        print("\nMÉTODO MIXTO DE CONGRUENCIAS")
        semilla = (int(input("Semilla: ")))
        p1 = (int(input("a:")))
        p2 = (int(input("c:")))
        modulo = (int(input("Módulo:")))
        print("")
        stock_ini = (int(input("STOCK INICIAL:")))
        metodo_mixto(p_dias, semilla, p1, p2, modulo, aleatorios)
        chicuadrado.test_chi(aleatorios)
        cont1, acum1 = 0, 0
        cont2, acum2 = 0, 0
        prov = []
        for i in range(0, dias - 1):
            dd = buscar_prob(demoraFx_prov_a, aleatorios[i])
            if dd is None:
                dd = buscar_prob(demoraFx_prov_b, aleatorios[i])
                cont2 = cont2 + 1
                prov.append('B')
            else:
                cont1 = cont1 + 1
                prov.append('A')
            diasdemo.append(dd)

        calcular_demanda(demanda, mu)
        iniciar_repo(reposicion, dias)
        iniciar_dia_rep(dia_rep, dias)

        # calculos
        total_perdidas = 0
        total_ventas = 0

        for i in range(0, dias - 1):
            stock.append(stock_ini)
            stock_fin.append(0)

            if demanda[i] <= stock_ini:
                ventas.append(demanda[i])
                dins.append(0)
            else:
                ventas.append(stock_ini)
                dins.append(demanda[i] - stock_ini)

            total_perdidas = total_perdidas + dins[i]
            total_ventas = total_ventas + ventas[i]

            if i + 1 < dias - 1:
                stock_ini = stock_ini - ventas[i] + reposicion[i + 1] + 3

            stock_fin[i] = (stock[i] - ventas[i])

            if stock_fin[i] <= stock[i]:
                pedido.append(ventas[i])
                if diasdemo[i] + 1 < dias - 1:
                    dia_rep[i] = diasdemo[i] + 1
                if i + dia_rep[i] < dias - 1:
                    reposicion[i + dia_rep[i]] = pedido[i]
            else:
                pedido.append(0)

            if prov[i] == 'A':
                acum1 = acum1 + pedido[i]
            elif prov[i] == 'B':
                acum2 = acum2 + pedido[i]

        crear_tabla()
        print("Total Pérdidas:", total_perdidas)
        print("Total Ventas:", total_ventas)
        print("\nMayor Venta:", max(ventas))
        print("Menor Venta:", min(ventas))

        prom_a = round(acum1 / sum(pedido), 2)
        prom_b = round(acum2 / sum(pedido), 2)
        print("\nPedidos Proveedor A:", acum1, '{:>13}'.format("Promedio:"),
              prom_a)
        print("Pedidos Proveedor B:", acum2, '{:>13}'.format("Promedio:"),
              prom_b)

        informe(total_perdidas, total_ventas)

        x = np.linspace(min(v_dias), max(v_dias), dias - 1)
        graficar(x, lw=2)

        v_total_per[corridas - 1] = total_perdidas
        v_total_vtas[corridas - 1] = sum(ventas)
        v_mayorVenta[corridas - 1] = max(ventas)
        v_menorVenta[corridas - 1] = min(ventas)

        v_total_prov_a[corridas - 1] = acum1
        v_total_prov_b[corridas - 1] = acum2

        eliminar_vectores()
        corridas = corridas + 1

    tabla_resumen()
    graficar_total_prov(corridas)
def inicio(p_dias):
    corridas = 1

    for i in range(0, sim):
        v_total_per.append(0)
        v_total_vtas.append(0)
        v_mayorVenta.append(0)
        v_menorVenta.append(0)

    calcular_demoraFx(demoraPx, demoraFx)

    print('\nTABLA DE DEMORA')
    imprimir_demora(demoraX, demoraPx, demoraFx)

    while corridas <= sim:
        print('{: ^34}'.format(""))
        cprint("ITERACIÓN NÚMERO:",
               'blue',
               attrs=['bold', 'underline'],
               end=""), cprint(corridas, 'blue', attrs=['bold', 'underline'])
        print("\nMÉTODO MIXTO DE CONGRUENCIAS")
        semilla = (int(input("Semilla: ")))
        p1 = (int(input("a:")))
        p2 = (int(input("c:")))
        modulo = (int(input("Módulo:")))
        print("")
        stock_ini = (int(input("STOCK INICIAL:")))
        metodo_mixto(p_dias, semilla, p1, p2, modulo, aleatorios)
        chicuadrado.test_chi(aleatorios)
        for item in aleatorios:
            dd = buscar_prob(demoraFx, item)
            diasdemo.append(dd)

        calcular_demanda(demanda, mu)
        iniciar_repo(reposicion, dias)
        iniciar_dia_rep(dia_rep, dias)

        # calculos
        total_perdidas = 0
        total_ventas = 0

        for i in range(0, dias - 1):
            stock.append(stock_ini)
            stock_fin.append(0)

            if demanda[i] <= stock_ini:
                ventas.append(demanda[i])
                dins.append(0)
            else:
                ventas.append(stock_ini)
                dins.append(demanda[i] - stock_ini)

            total_perdidas = total_perdidas + dins[i]
            total_ventas = total_ventas + ventas[i]

            if i + 1 < dias - 1:
                stock_ini = stock_ini - ventas[i] + reposicion[i + 1]
                stock_fin[i] = (stock[i] - ventas[i])
            if stock_fin[i] <= stock[i]:
                pedido.append(ventas[i])
                if diasdemo[i] + 1 < dias - 1:
                    dia_rep[i] = diasdemo[i] + 1
                if i + dia_rep[i] < dias - 1:
                    reposicion[i + dia_rep[i]] = pedido[i]
            else:
                pedido.append(0)

        crear_tabla()
        print("Total Pérdidas:", total_perdidas)
        print("Total Ventas:", total_ventas)
        print("Mayor Venta:", max(ventas))
        print("Menor Venta:", min(ventas))

        v_total_per[corridas - 1] = total_perdidas
        v_total_vtas[corridas - 1] = sum(ventas)
        v_mayorVenta[corridas - 1] = max(ventas)
        v_menorVenta[corridas - 1] = min(ventas)
        eliminar_vectores()
        corridas = corridas + 1

    tabla_resumen()