Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/EjercitarServer/ejbModule/beans/EjercitarWSBean.java
diff options
context:
space:
mode:
Diffstat (limited to 'EjercitarServer/ejbModule/beans/EjercitarWSBean.java')
-rw-r--r--EjercitarServer/ejbModule/beans/EjercitarWSBean.java72
1 files changed, 46 insertions, 26 deletions
diff --git a/EjercitarServer/ejbModule/beans/EjercitarWSBean.java b/EjercitarServer/ejbModule/beans/EjercitarWSBean.java
index 7530cf4..8467ca7 100644
--- a/EjercitarServer/ejbModule/beans/EjercitarWSBean.java
+++ b/EjercitarServer/ejbModule/beans/EjercitarWSBean.java
@@ -1,5 +1,6 @@
package beans;
+import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
@@ -216,9 +217,11 @@ public class EjercitarWSBean implements EjercitarWSRemote {
List<Concepto> conceptoList = em.createQuery("Select c from Concepto c inner join c.tareaList t where t = :tarea").setParameter("tarea", tarea).getResultList();
// inicializacion
- double utilidadMax = 0;
- Map<Double, List> hUtilidades= new HashMap<Double, List>();
+ Double utilidadMax = 0.0;
+ Map<BigDecimal, List> hUtilidades= new HashMap<BigDecimal, List>();
Ejercicio ejercicio = null;
+
+
// System.out.println("cantidad concepto: " + conceptoList.size() + " de la tarea: " + tarea.getDescripcion());
for (Concepto concepto : conceptoList) {
//System.out.println("concepto " + concepto.getNombre());
@@ -229,16 +232,19 @@ public class EjercitarWSBean implements EjercitarWSRemote {
net1.readFile("/home/redes/" + nombreRed);
net1.updateBeliefs();
String nombreConcepto = concepto.getNombre();
- double [] values = net1.getNodeValue(nombreConcepto);
+ //double [] values = net1.getNodeValue(nombreConcepto);
+
+ double [] values = net1.getNodeValue(tarea.getAsignatura().getNombre());
+
//System.out.println("values");
//System.out.println(" pC0: " + values[0]);
//System.out.println(" pC1: " + values[1]);
- double pC1 = values[1]; // P(C=1)
+ BigDecimal pC1 = new BigDecimal(String.valueOf(values[1])); // P(C=1)
- double pC0 = values[0]; // P(C=0)
+ BigDecimal pC0 = new BigDecimal(String.valueOf(values[0])); // P(C=0)
int cont = 0;
@@ -248,8 +254,8 @@ public class EjercitarWSBean implements EjercitarWSRemote {
String nombreEjercicio = "E" + ejercicioConcepto.getIdEjercicio();
values = net1.getNodeValue(nombreEjercicio);
- double pE1 = values[1]; // P(E=1)
- double pE0 = values[0]; // P(E=0)
+ Double pE1 = values[1]; // P(E=1)
+ Double pE0 = values[0]; // P(E=0)
//System.out.println("nombreEjercicio: " + nombreEjercicio);
@@ -257,10 +263,10 @@ public class EjercitarWSBean implements EjercitarWSRemote {
net1.updateBeliefs();
values = net1.getNodeValue(nombreEjercicio);
//System.out.println("values " + values);
- double pE1C1 = values[1]; // P(E=1/C=1)
+ BigDecimal pE1C1 = new BigDecimal(String.valueOf(values[1])); // P(E=1/C=1)
//System.out.println("pE1C1: " + pE1C1);
- double pAuxi1 = pE1C1-pE1; //P(E=1/C=1) - P(E=1)
- double utilidadParcial1 = pAuxi1 * pC1;
+ BigDecimal pAuxi1 = new BigDecimal(pE1C1.toString());//-pE1; //P(E=1/C=1) - P(E=1)
+ BigDecimal utilidadParcial1 = pAuxi1.multiply(pC1);
//System.out.println("utilidadParcial1: " + utilidadParcial1);
net1.clearEvidence(nombreConcepto);
net1.updateBeliefs();
@@ -269,12 +275,13 @@ public class EjercitarWSBean implements EjercitarWSRemote {
values = net1.getNodeValue(nombreEjercicio);
//System.out.println("values_ " + values);
- double pE0C0 = values[0]; // P(E=0/C=0)
- //System.out.println("pE0C0: " + pE0C0);
- double pAuxi0 = pE0C0-pE0; //P(E=0/C=0) - P(E=0)
- double utilidadParcial2 = pAuxi0 * pC0;
+ Double pE0C0 = values[0]; // P(E=0/C=0)
+ //System.out.println("pE0C0: " + pE0C0.toString());
+
+ BigDecimal pAuxi0 = new BigDecimal(pE0C0.toString());//-pE0; //P(E=0/C=0) - P(E=0)
+ BigDecimal utilidadParcial2 = pAuxi0.multiply(pC0) ;
//System.out.println("utilidadParcial2: " + utilidadParcial2);
- double utilidadMaxParcial = utilidadParcial1 + utilidadParcial2;
+ BigDecimal utilidadMaxParcial = utilidadParcial1.add(utilidadParcial2);
/*
if(utilidadMaxParcial > utilidadMax) {
@@ -288,39 +295,51 @@ public class EjercitarWSBean implements EjercitarWSRemote {
}
}
*/
-
+ utilidadMaxParcial = utilidadMaxParcial.setScale(10, utilidadMaxParcial.ROUND_HALF_UP);
+ //System.out.println("utilidadMaxParcial: " + utilidadMaxParcial);
List utilidades = hUtilidades.get(utilidadMaxParcial);
+ // System.out.println("utilidades" + hUtilidades);
if (utilidades == null )
utilidades = new ArrayList();
- if (!sesionAnterior.getEjercicioList().contains(ejercicioConcepto))
+ if (sesionAnterior.getEjercicioList()== null || !sesionAnterior.getEjercicioList().contains(ejercicioConcepto))
utilidades.add(ejercicioConcepto);
-
+ // System.out.println("sesion" + ejercicioConcepto.toString());
if (utilidades.size() > 0)
hUtilidades.put(utilidadMaxParcial, utilidades);
//System.out.println("utilidadMax: " + utilidadMax);
- //System.out.println("cont" + cont++);
+ // System.out.println("utilidades.size()" + utilidades.size());
}
}
//System.out.println("obtener la sesion anterior ");
- TreeMap<Double, List> tUtilidades = new TreeMap<Double, List>(hUtilidades);
- ///System.out.println(tUtilidades);
-
+ TreeMap<BigDecimal, List> tUtilidades = new TreeMap<BigDecimal, List>(hUtilidades);
+ // System.out.println("treeMap");
+ TreeMap<BigDecimal, List> tree = (TreeMap<BigDecimal, List>) tUtilidades.clone();
-
+ for (int i=0; i< tUtilidades.size(); i++){
+
+ Map.Entry<BigDecimal, List> valor = tree.pollLastEntry();
+ System.out.println("utilidad: " + valor.getKey().toString());
+ List <Ejercicio> ejercicioLista = valor.getValue();
+ /*for( Ejercicio ejer : ejercicioLista){
+ System.out.println(ejer.getIdEjercicio() + " - " + ejer.getEnunciado() );
+ }
+ */
+ }
//int i = tUtilidades.size();
- Map.Entry<Double, List> valor;
- Map.Entry<Double, List> primerValor;
+ Map.Entry<BigDecimal, List> valor;
+ Map.Entry<BigDecimal, List> primerValor;
valor = tUtilidades.pollLastEntry();
//primerValor = valor;
- //System.out.println("primerValor: " + primerValor);
+ // System.out.println("valor " + valor);
List lista = valor.getValue();
Random rnd = new Random();
int eleccion = rnd.nextInt(lista.size());
+ //System.out.println("radom");
return (Ejercicio) lista.get(eleccion);
@@ -366,6 +385,7 @@ public class EjercitarWSBean implements EjercitarWSRemote {
sesion.setTarea(tarea);
em.persist(sesion);
+ em.flush();
return sesion.getIdSesion();
}