Hice una lista de posibles materias para cada dia-hora
Y califico asi mira
Cita: function Evalua_Bloque($idgrupos,$idhorarios,$dia,$pos_posi ble){
$posible=$_SESSION["Posibilidades"][$idgrupos][$idhorarios][$dia][$pos_posible];
$idmateria=$posible["idmateria"];
//PROMEDIO DE HORAS LABORALES
$horas_turno=$_SESSION["Horas_Turno"][$_SESSION["GruposID"][$idgrupos]["turno"]]*5;
$Sujeridas=$_SESSION["ProfesoresID"][$posible["idprofesores"]][$_SESSION["GruposID"][$idgrupos]["turno"]];
@$por_sujeridas=100/((100/$horas_turno)*$Sujeridas);
$por_sujeridas=($por_sujeridas=="")?0:$por_sujerid as;
$Horas_Asignadas=$_SESSION["ProfesoresID"][$posible["idprofesores"]]["Total"][$_SESSION["GruposID"][$idgrupos]["turno"]];
$Horas_Uso=($_SESSION["Horas_Uso_Profesor"][$posible["idprofesores"]]=="")?0:$_SESSION["Horas_Uso_Profesor"][$posible["idprofesores"]];
$Pendiente=$Horas_Asignadas-$Horas_Uso;
$Horas_Grupo=$_SESSION["Horas_Profesores"][$idgrupos][$posible["idprofesores"]];
@$Promedio=((100/$Pendiente*$Horas_Grupo)/$Horas_Grupo);
$Promedio=($Promedio=="")?0:$Promedio;
$calificacion=number_format($por_sujeridas+$Promed io,2);
//SI EL PROFESOR TIENE HORAS CRUZADAS
$HorasP=Cuenta_Horas_Profesor($idhorarios,$dia,$po sible["idprofesores"]);
if($HorasP>1) $calificacion-=5;
//SI ESE GRUPO TIENE MAS HORAS DE LAS REQUERIDAS
$Horas=Cuenta_Horas_Materia($idgrupos,$idmateria);
if($Horas>$posible["horas"]) $calificacion-=5;
//SI ESTA MAS DE DOS VECES POR DIA
$horas_dia=0;
for($hP=0;$hP<count($_SESSION['Horarios']);$hP++){
$idhorarios2=$_SESSION['Horarios'][$hP]["idhorarios"];
if($idhorarios2!=$idhorarios and $_SESSION['Horario_Grupo'][$idgrupos][$idhorarios2][$dia]["uso"]==$idmateria)$horas_dia++;
}
if($horas_dia>=2) $calificacion-=5;
return $calificacion;
}
La que esta marcada en azul es la mejor según la calificación y al asignarla me afecta a la variable
$Horas_Uso que es la que lleva el conteo de las horas que se le han asignado así si empezó con 0 horas y se asigno al siguiente bloque ya vale 1 y así, pero de todas maneras deja bloques en blanco que fueron los que no pudo rellenar porque anteriormente ya se habían seleccionado a esa hora
La estructura de la tablita es así
IDMaestro | IDProfesores | Calificacion