示例#1
0
    def test_guardar_iteracion(self):
        sim = Simulador()
        sim.guardar_iteracion()

        self.assertEqual(1, len(sim.iteraciones))
        sim.guardar_iteracion()
        self.assertEqual(2, len(sim.iteraciones))
示例#2
0
    def test_set_proximo_evento(self):
        sim = Simulador()
        sim.proxima_llegada_int = 1
        sim.proxima_llegada_ext = 2
        sim.fin_llamada_interna = {1: 5, 2: 2.5}
        sim.fin_llamada_externa = {1: 3, 2: 6}

        sim.set_proximo_evento()
        self.assertEqual('llegada_llamada_interna', sim.evento)
        self.assertEqual(1, sim.reloj)

        sim.proxima_llegada_int = 10
        sim.set_proximo_evento()
        self.assertEqual('llegada_llamada_externa', sim.evento)
        self.assertEqual(2, sim.reloj)

        sim.proxima_llegada_ext = 15
        sim.set_proximo_evento()
        self.assertEqual('fin_llamada_interna', sim.evento)
        self.assertEqual(2.5, sim.reloj)

        sim.fin_llamada_interna = {1: 15, 2: 20}
        sim.set_proximo_evento()
        self.assertEqual('fin_llamada_externa', sim.evento)
        self.assertEqual(3, sim.reloj)
示例#3
0
    def test_set_proxima_llegada_ext(self):
        sim = Simulador()
        sim.set_rnd(tiempo_llegada_ext=[0.527674118744456])
        sim.set_proxima_llegada_ext()

        self.assertEqual(0.527674118744456, sim.rnd_tiempo_llegada_ext)
        self.assertAlmostEqual(3.750430526, sim.tiempo_llegada_ext, delta=0.000001)
        self.assertAlmostEqual(3.750430526, sim.proxima_llegada_ext, delta=0.000001)
示例#4
0
    def test_set_proxima_llegada_int(self):
        sim = Simulador()
        sim.set_rnd(tiempo_llegada_int=[0.0463538119218031])
        sim.set_proxima_llegada_int()

        self.assertEqual(0.0463538119218031, sim.rnd_tiempo_llegada_int)
        self.assertAlmostEqual(0.09492509672, sim.tiempo_llegada_int, delta=0.000001)
        self.assertAlmostEqual(0.09492509672, sim.proxima_llegada_int, delta=0.000001)
示例#5
0
    def test_simular(self):
        sim = Simulador(cant_iteraciones=100)
        sim.simular()
        # self.assertEqual(21, len(sim.iteraciones))

        # sim = Simulador(cant_iteraciones=100)
        # sim.simular(1000000)
        # # self.assertEqual(41, len(sim.iteraciones))

        sim = Simulador()
        sim.set_rnd(tiempo_llegada_int=[0.0463538119218031, 0.857985064561771],
                    tiempo_llegada_ext=[0.527674118744456, 0.847304643698668],
                    duracion_int=[0.949147020851263, 0.482405844102685],
                    duracion_ext=[0.554989281341822, 0.583440963508874],
                    interno_origen=[0.881222963703666, 0.777759066106611],
                    interno_destino=[0.536524711262778, 0.015272640056872],
                    linea_externa=[0.711000714835721, 0.445582430452375]
                    )
示例#6
0
    def test_set_interno_destino(self):
        sim = Simulador()
        sim.set_rnd(interno_destino=[0.536524711262778, 0.199421975971938])

        sim.set_interno_destino()
        self.assertEqual(0.536524711262778, sim.rnd_interno_destino)
        self.assertAlmostEqual(6, sim.interno_destino, delta=0.000001)

        sim.set_interno_destino()
        self.assertAlmostEqual(2, sim.interno_destino, delta=0.000001)
示例#7
0
    def test_set_interno_origen(self):
        sim = Simulador()
        sim.set_rnd(interno_origen=[0.881222963703666, 0.777759066106611])

        sim.set_interno_origen()
        self.assertEqual(0.881222963703666, sim.rnd_interno_origen)
        self.assertAlmostEqual(9, sim.interno_origen, delta=0.000001)

        sim.set_interno_origen()
        self.assertAlmostEqual(8, sim.interno_origen, delta=0.000001)
示例#8
0
    def test_set_linea_externa(self):
        sim = Simulador()
        sim.set_rnd(linea_externa=[0.711000714835721, 0.445582430452375, 0.1, 0.1])

        sim.set_linea_externa()
        self.assertEqual(0.711000714835721, sim.rnd_linea_externa)
        self.assertAlmostEqual(3, sim.linea_externa, delta=0.0001)

        sim.set_linea_externa()
        self.assertAlmostEqual(2, sim.linea_externa, delta=0.0001)


        #con 1 ocupado
        sim.set_rnd(linea_externa=[0.1, 0.1, 0.1])

        sim.llamada_linea_externa = [True, False, False]
        sim.set_linea_externa()
        self.assertEqual(2, sim.linea_externa)

        sim.llamada_linea_externa = [False, True, False]
        sim.set_linea_externa()
        self.assertEqual(1, sim.linea_externa)

        sim.llamada_linea_externa = [False, False, True]
        sim.set_linea_externa()
        self.assertEqual(1, sim.linea_externa)

        # Con 1 libre
        sim.set_rnd(linea_externa=[0.9, 0.9, 0.9])

        sim.llamada_linea_externa = [True, True, False]
        sim.set_linea_externa()
        self.assertEqual(3, sim.linea_externa)

        sim.llamada_linea_externa = [True, False, True]
        sim.set_linea_externa()
        self.assertEqual(2, sim.linea_externa)

        sim.llamada_linea_externa = [False, True, True]
        sim.set_linea_externa()
        self.assertEqual(1, sim.linea_externa)

        # Cuando no hay disponibles
        sim.set_rnd(linea_externa=[0.9, .5, .1])

        sim.llamada_linea_externa = [True, True, True]
        sim.set_linea_externa()
        self.assertEqual(3, sim.linea_externa)

        sim.set_linea_externa()
        self.assertEqual(2, sim.linea_externa)

        sim.set_linea_externa()
        self.assertEqual(1, sim.linea_externa)
示例#9
0
    def test_estado_linea_externa(self):
        sim = Simulador()

        sim.llamada_linea_externa = [False] * 3
        sim.set_estado_linea_externa()
        self.assertEqual(["Libre"] * 3, sim.estado_ext)

        sim.num_llamada_a_ext = [5] * 3
        sim.llamada_linea_externa = [True] * 3

        sim.set_estado_linea_externa()
        self.assertEqual(["Atendiendo 5"] * 3, sim.estado_ext)
示例#10
0
    def test_get_rnd(self):
        sim = Simulador()
        # Probar que genere numeros aleatoreos
        self.assertGreaterEqual(1, sim.get_rnd('tiempo_llegada_int'))
        self.assertLessEqual(0, sim.get_rnd('tiempo_llegada_int'))

        # Marcandolo como activo
        sim.set_rnd(activo=True)
        self.assertGreaterEqual(1, sim.get_rnd('tiempo_llegada_int'))
        self.assertLessEqual(0, sim.get_rnd('tiempo_llegada_int'))

        sim.set_rnd(
            tiempo_llegada_int=[1, 2],
            tiempo_llegada_ext=[3, 4],
            duracion_int=[5, 6],
            duracion_ext=[7, 8],
            interno_origen=[9, 10],
            interno_destino=[11, 12],
            activo=True
        )
        self.assertEqual(1, sim.get_rnd('tiempo_llegada_int'))
        self.assertEqual(2, sim.get_rnd('tiempo_llegada_int'))
        self.assertGreaterEqual(1, sim.get_rnd('tiempo_llegada_int'))
        self.assertLessEqual(0, sim.get_rnd('tiempo_llegada_int'))

        self.assertEqual(3, sim.get_rnd('tiempo_llegada_ext'))
        self.assertEqual(4, sim.get_rnd('tiempo_llegada_ext'))
        self.assertGreaterEqual(1, sim.get_rnd('tiempo_llegada_ext'))
        self.assertLessEqual(0, sim.get_rnd('tiempo_llegada_ext'))

        self.assertEqual(5, sim.get_rnd('duracion_int'))
        self.assertEqual(6, sim.get_rnd('duracion_int'))
        self.assertGreaterEqual(1, sim.get_rnd('duracion_int'))
        self.assertLessEqual(0, sim.get_rnd('duracion_int'))

        self.assertEqual(7, sim.get_rnd('duracion_ext'))
        self.assertEqual(8, sim.get_rnd('duracion_ext'))
        self.assertGreaterEqual(1, sim.get_rnd('duracion_ext'))
        self.assertLessEqual(0, sim.get_rnd('duracion_ext'))

        self.assertEqual(9, sim.get_rnd('interno_origen'))
        self.assertEqual(10, sim.get_rnd('interno_origen'))
        self.assertGreaterEqual(1, sim.get_rnd('interno_origen'))
        self.assertLessEqual(0, sim.get_rnd('interno_origen'))

        self.assertEqual(11, sim.get_rnd('interno_destino'))
        self.assertEqual(12, sim.get_rnd('interno_destino'))
        self.assertGreaterEqual(1, sim.get_rnd('interno_destino'))
        self.assertLessEqual(0, sim.get_rnd('interno_destino'))

        with self.assertRaises(ValueError):
            sim.get_rnd('otro_valor')
示例#11
0
    def test_inicializacion(self):
        sim = Simulador()
        sim.set_rnd(tiempo_llegada_int=[0.0463538119218031], tiempo_llegada_ext=[0.527674118744456])

        sim.inicializacion()
        self.assertAlmostEqual(0.09492509672, sim.proxima_llegada_int, delta=0.000001)
        self.assertAlmostEqual(3.750430526, sim.proxima_llegada_ext, delta=0.000001)

        self.assertEqual(['Libre'] * 10, sim.estado_int)
        self.assertEqual(['Libre'] * 3, sim.estado_ext)

        # Estado
        self.assertEqual('Inicialización', sim.as_dict()['evento'])
示例#12
0
    def test_get_rnd_integer(self):
        sim = Simulador()
        self.assertEqual(1, sim.get_rnd_integer(0, 10))
        self.assertEqual(1, sim.get_rnd_integer(0.09999, 10))
        self.assertEqual(2, sim.get_rnd_integer(0.1, 10))
        self.assertEqual(2, sim.get_rnd_integer(0.19999, 10))
        self.assertEqual(10, sim.get_rnd_integer(0.9999, 10))
        # Nunca llega a 1
        self.assertEqual(11, sim.get_rnd_integer(1, 10))

        self.assertEqual(1, sim.get_rnd_integer(0.33333333, 3))
        self.assertEqual(2, sim.get_rnd_integer(0.33333334, 3))
        self.assertEqual(3, sim.get_rnd_integer(0.66666667, 3))
示例#13
0
    def test_set_fin_llamada_ext(self):
        sim = Simulador()
        sim.set_rnd(duracion_ext=[0.554989281341822, 0.583440963508874])
        sim.num_llamada_ext_total = 5

        sim.set_fin_llamada_ext()
        self.assertEqual(0.554989281341822, sim.rnd_duracion_ext)
        self.assertAlmostEqual(6.43991425073458, sim.duracion_ext, delta=0.000001)
        self.assertAlmostEqual(6.43991425073458, sim.fin_llamada, delta=0.000001)
        self.assertEqual({5: 6.439914250734576}, sim.fin_llamada_externa)

        sim.num_llamada_ext_total = 2
        sim.set_fin_llamada_ext()
        self.assertEqual({5: 6.439914250734576, 2: 6.667527708070992}, sim.fin_llamada_externa)
示例#14
0
    def test_set_fin_llamada_int(self):
        sim = Simulador()
        sim.set_rnd(duracion_int=[0.949147020851263, 0.482405844102685])
        sim.num_llamada_int_total = 3

        sim.set_fin_llamada_int()
        self.assertEqual(0.949147020851263, sim.rnd_duracion_int)
        self.assertAlmostEqual(3.84744106255379, sim.duracion_int, delta=0.000001)
        self.assertAlmostEqual(3.84744106255379, sim.fin_llamada, delta=0.000001)
        self.assertEqual({3: 3.847441062553789}, sim.fin_llamada_interna)

        sim.num_llamada_int_total = 4
        sim.set_fin_llamada_int()
        self.assertEqual({3: 3.847441062553789, 4: 2.4472175323080547}, sim.fin_llamada_interna)
示例#15
0
    def test_estado_interno(self):
        sim = Simulador()
        sim.num_llamada_a_int = [1] * 10
        sim.tipo_llamada_interno = [True] * 10
        sim.set_estado_interno()
        self.assertEqual(["Atendiendo int. 1"] * 10, sim.estado_int)

        sim.num_llamada_a_int = [3] * 10
        sim.tipo_llamada_interno = [False] * 10
        sim.set_estado_interno()
        self.assertEqual(["Atendiendo ext. 3"] * 10, sim.estado_int)

        sim.tipo_llamada_interno = [None] * 10
        sim.set_estado_interno()
        self.assertEqual(["Libre"] * 10, sim.estado_int)
示例#16
0
    def test_get_evento(self):
        sim = Simulador()
        # Inicializacion
        self.assertEqual('Inicialización', sim.get_evento())

        # Interna
        sim.tipo_llamada_actual = True
        sim.num_llamada_int_actual = 3
        sim.evento = 'llegada_llamada_interna'
        self.assertEqual('llegada_llamada_interna (3)', sim.get_evento())

        # Externa
        sim.tipo_llamada_actual = False
        sim.num_llamada_ext_actual = 2
        sim.evento = 'llegada_llamada_externa'
        self.assertEqual('llegada_llamada_externa (2)', sim.get_evento())
示例#17
0
 def test_set_rnd(self):
     sim = Simulador()
     sim.set_rnd(
         tiempo_llegada_int=[1, 2],
         tiempo_llegada_ext=[3, 4],
         duracion_int=[5, 6],
         duracion_ext=[7, 8],
         interno_origen=[9, 10],
         interno_destino=[11, 12],
         activo=True
     )
     self.assertEqual([1, 2], sim.listas_rnd['tiempo_llegada_int'])
     self.assertEqual([3, 4], sim.listas_rnd['tiempo_llegada_ext'])
     self.assertEqual([5, 6], sim.listas_rnd['duracion_int'])
     self.assertEqual([7, 8], sim.listas_rnd['duracion_ext'])
     self.assertEqual([9, 10], sim.listas_rnd['interno_origen'])
     self.assertEqual([11, 12], sim.listas_rnd['interno_destino'])
示例#18
0
def simular():
    global _parameters
    global resultados
    
    sim = Simulador()
    resultados = sim.simular(_parameters)
    if(resultados != None):
        response = app.response_class(
            response = parseListToJSON(resultados), 
            status = 200, 
            mimetype = 'application/json'
        )
        return response
    response = app.response_class(
            response = "", 
            status = 406, 
            mimetype = 'application/json'
        )
    return response
示例#19
0
def testAnalisador(errors):
    sim = Simulador()
    p = Parametros()
    p.nCliente = 1000
    j = 0
    while (j < 3):
        p.um_tiempo = j
        i = 0
        while (i < 100):
            p.dist = 0
            p.desv_standar = i / 100
            p.promedio = i
            resultados = sim.simular(p)
            est = Analisis().analizar(resultados)
            if(not testAnalisisEstadistico(est)):
                errors.append("[error]: Analisis Estadistico de Distribución Normal con Desv_std = " +
                              str(p.desv_standar) + " y Promedio = " + str(p.promedio))
            i = i + 1
        i = 0
        while (i < 100):
            p.dist = 1
            p.min = i
            p.max = i + 2 * i
            resultados = sim.simular(p)
            est = Analisis().analizar(resultados)
            if(not testAnalisisEstadistico(est)):
                errors.append("[error]: Analisis Estadistico de Distribución Uniforme con min = " +
                              str(p.min) + " y max = " + str(p.max))
            i = i + 1

        i = 0
        while (i < 100):
            p.dist = 2
            p.promedio = i
            resultados = sim.simular(p)
            est = Analisis().analizar(resultados)
            if(not testAnalisisEstadistico(est)):
                errors.append(
                    "[error]: Analisis Estadistico de Distribución Pisson con Promedio = " + str(p.promedio))
            i = i + 1
        j = j + 1
示例#20
0
from flask import Flask, request, jsonify, g
from flask_cors import CORS
import sqlite3
from simulador import Simulador
from coordenada import Coordenada
from aeropuerto import Aeropuerto

DATABASE = './airports.db'

sim = Simulador()

app = Flask(__name__)

CORS(app, resources={r"/*": {"origins": "*"}})


def get_db():
    db = getattr(g, '_database', None)
    if db is None:
        db = g._database = sqlite3.connect(DATABASE)
        db.row_factory = sqlite3.Row
    return db


def query_db(query, args=(), one=False):
    cur = get_db().cursor()
    cur.execute(query, args)
    rv = cur.fetchall()
    cur.close()
    return (rv[0] if rv else None) if one else rv
示例#21
0
 def setUp(self):
     self.sim = Simulador()
     self.origen = Coordenada(4.81267, -75.7395)
     self.destino = Coordenada(3.54322, -76.3816)
     self.maxDiff = None
示例#22
0
from simulador import Simulador
from jogo import Jogo
from jogos import Jogos

Aposta1 = Jogo(numeros=[1, 2, 3, 4, 5, 6])
Aposta2 = Jogo(numeros=[1, 2, 3, 4, 5, 6, 7])

Apostas = Jogos(listaJogos=[Aposta1, Aposta2])
simulacao = Simulador(apostas=Apostas)


def att():
    #Aqui entra os codigos para atualizar as apostas para simulacao
    simulacao.setApostas(Apostas)


print('Ultimo jogo da lista de jogos a serem "sorteados": ')
print(simulacao.getSorteios().getListaJogos()[-1])
print('Ultimo jogo da lista considerada como banco de dados - historico: ')
print(simulacao.getHistorico().getListaJogos()[-1])

print('Aposta 1: ')
print(simulacao.getVolantes()[0].getAposta().getNumeros())
print('Valor R$ {:.2f}'.format(simulacao.getVolantes()[0].getPreco()))

print('Aposta 2: ')
print(simulacao.getVolantes()[1].getAposta().getNumeros())
print('Valor R$ {:.2f}'.format(simulacao.getVolantes()[1].getPreco()))

simulacao.update(func=att)
示例#23
0
        cmd = input.upper()
        while not cmd in ['FIN', 'LISTO']:
            if cmd in ['EXIT']:
                return False
        self.log_consola('aca iria la consola de arriba pero solo una vez')


if __name__ == '__main__':
    #inicializacion
    app = App()

    test = 3

    if test in [1]:
        #TEST 1
        app.set_simulador(Simulador())
    elif test in [2, 3]:
        #TEST 2 y 3
        app.set_simulador(Simulador(cantidad_db=2, cantidad_recursos=500))

    #ingreso de procesos por comando o con ejemplo default
    if app.interactiva:
        output = app.consola_interactiva()

        #si devuelvo una lista es porque insertamos procesos
        if isinstance(output, list):
            app.agregar_procesos(output)
        elif isinstance(output, str):
            app.log_consola(f'Error en consola interactiva, razon: {output}')
        else:
            app.log_consola(f'')
示例#24
0
    def main(self):
        #seteo el simulador
        self.set_simulador(Simulador())

        #comienzo la simulacion
        self.simulador.iniciar()