Esempio n. 1
0
        public void resolvio(Problema problema)
        {
            int difNivel = problema.dificultad - _habilidades[problema.idTema];

            if (difNivel > 0)
            {
                incremento += _aPositiva * Math.Exp(-1 * _aPositiva * _resueltos);
            }
            else
            {
                incremento += _aPositiva * Math.Exp(-1 * _aPositiva * _resueltos) * Math.Exp(difNivel * _fFacilida);
            }
            _resueltos++;
        }
Esempio n. 2
0
        public List <Problema> problemas()
        {
            List <Problema> problemas = new List <Problema>();

            SqlConnection sqlConnection = new SqlConnection(connectionString);
            SqlCommand    cmd           = new SqlCommand();
            SqlDataReader result;

            cmd.CommandText = @"SELECT  clave, 
	                                    nombre,
	                                    origen,
	                                    clasificacion,
	                                    (SELECT problemaDificultad.dificultad FROM SimulacionKarelotitlan.dbo.problemaDificultad WHERE problemaDificultad.problema = Problema.clave )  as DificultadN
	                                FROM Karelotitlan.dbo.Problema;"    ;
            cmd.CommandType = CommandType.Text;
            cmd.Connection  = sqlConnection;

            sqlConnection.Open();

            result = cmd.ExecuteReader();
            while (result.Read())
            {
                Problema nuevo = new Problema();
                nuevo.idProblema = (int)result["clave"];
                nuevo.nombre     = (string)result["nombre"];
                nuevo.origen     = (string)result["origen"];
                nuevo.idTema     = (int)result["clasificacion"];
                nuevo.dificultad = (int)result["DificultadN"];
                problemas.Add(nuevo);
            }

            sqlConnection.Close();


            return(problemas);
        }
Esempio n. 3
0
 public void fallo(Problema problema)
 {
     incremento -= _aNegativa * Math.Exp(-1 * _aNegativa * _fallos);
     _fallos++;
 }
Esempio n. 4
0
        public void iniciaModelo()
        {
            KarelotitlanDB karelotitlan = new KarelotitlanDB();

            if (incluyeCero)
            {
                historias = karelotitlan.historiasUsuariosIncluido0();
            }
            else
            {
                historias = karelotitlan.historiasUsuarios();
            }
            problemas = new Dictionary <int, Problema>();
            var problems = karelotitlan.problemas();

            foreach (var problem in problems)
            {
                problemas[problem.idProblema] = problem;
            }
            temas               = karelotitlan.temas();
            dificultades        = karelotitlan.dificultades();
            historiasDificultad = new Dictionary <int, Dictionary <int, List <int> > >();
            nivelUsuarios       = new Dictionary <int, Dictionary <int, List <int> > >();
            foreach (var tema in temas)
            {
                historiasDificultad[tema.idTema] = new Dictionary <int, List <int> >();
                nivelUsuarios[tema.idTema]       = new Dictionary <int, List <int> >();
            }
            foreach (KeyValuePair <int, List <int> > usuario in historias)
            {
                foreach (var tema in temas)
                {
                    historiasDificultad[tema.idTema][usuario.Key] = new List <int>();
                    nivelUsuarios[tema.idTema][usuario.Key]       = new List <int>();
                }
                foreach (var idProblema in usuario.Value)
                {
                    Problema problema = problemas[idProblema];
                    historiasDificultad[problema.idTema][usuario.Key].Add(problema.dificultad);
                    foreach (var tema in temas)
                    {
                        if (tema.idTema != problema.idTema)
                        {
                            historiasDificultad[tema.idTema][usuario.Key].Add(-1);
                        }
                    }
                }
            }
            foreach (var tema in temas)
            {
                foreach (KeyValuePair <int, List <int> > usuario in historiasDificultad[tema.idTema])
                {
                    int         nivelUsuario = 0;
                    Queue <int> ventana      = new Queue <int>();
                    foreach (int nivel in usuario.Value)
                    {
                        if (nivel > 0)
                        {
                            ventana.Enqueue(nivel);
                        }
                        if (ventana.Count > rango)
                        {
                            ventana.Dequeue();
                        }
                        nivelUsuario = Math.Max(nivelUsuario, calculaNivel(ventana));
                        nivelUsuarios[tema.idTema][usuario.Key].Add(nivelUsuario);
                    }
                }
            }
            iniciaProbabilidadNivel();
            iniciaProbabilidadResolverProblema();
            iniciaProbabilidadInterseccion();
            iniciaProbabilidaResolverProblema();
            iniciaProbabilidaNivel();
        }