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++; }
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); }
public void fallo(Problema problema) { incremento -= _aNegativa * Math.Exp(-1 * _aNegativa * _fallos); _fallos++; }
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(); }