package sisaloc; public ruleBase SisAloc { private int solucao=1; rule encontraSolucao { declarations Horario h1,h2,h3,h4,h5,h6; conditions // regra_1: disciplinas tem dois dias por semana h1.getDisc().equals(h2.getDisc()); h3.getDisc().equals(h4.getDisc()); h5.getDisc().equals(h6.getDisc()); // regra_1.1: todas as disciplinas devem aparecer !h1.getDisc().equals(h3.getDisc()); !h1.getDisc().equals(h5.getDisc()); !h3.getDisc().equals(h5.getDisc()); // regra 2: para podar a árvore de busca h1.getDisc().equals("D1"); h3.getDisc().equals("D2"); h5.getDisc().equals("D3"); // regra 3: a mesma disciplina não pode ter duas aulas na mesma noite !h1.getDiaDaSemana().equals(h2.getDiaDaSemana()); !h3.getDiaDaSemana().equals(h4.getDiaDaSemana()); !h5.getDiaDaSemana().equals(h6.getDiaDaSemana()); // regra 4: evitar duplicações (h1.getDiaDaSemana().compareTo(h2.getDiaDaSemana())<0); (h3.getDiaDaSemana().compareTo(h4.getDiaDaSemana())<0); (h5.getDiaDaSemana().compareTo(h6.getDiaDaSemana())<0); actions System.out.println("Solucao nº "+ solucao); System.out.println("Horários da Disciplina "+h1.getDisc()+" : "+h1.getDiaDaSemana()+ " no "+ h1.getHorarioDoDia()+ "º e "+ h2.getDiaDaSemana()+ " no "+ h2.getHorarioDoDia()+"º"); System.out.println("Horários da Disciplina "+h3.getDisc()+" : "+h3.getDiaDaSemana()+ " no "+ h3.getHorarioDoDia()+ "º e " + h4.getDiaDaSemana()+ " no "+ h4.getHorarioDoDia()+"º"); System.out.println("Horários da Disciplina "+h5.getDisc()+" : "+h5.getDiaDaSemana()+ " no "+ h5.getHorarioDoDia()+ "º e " + h6.getDiaDaSemana()+ " no "+ h6.getHorarioDoDia()+"º"); solucao++; } }