Fórum Algoritmo de Geração de Horário #372767
25/07/2009
0
Gostaria de saber se alguém pode me ajudar no desenvolvimento de um algoritmo para um programa escolar. Seguinte: Tenho um banco de dados em SQL Server com as respectivas tabelas feitas e já desenvolvido no Delphi as telas de cadstro (Turmas, Cursos, Professores). Como eu faço para que uma função/rotina pegue estas informações cadastradas e gere um horário para cada sala? Agradeço qualquer ajuda.
Feliperm
Curtir tópico
+ 0Posts
27/07/2009
.lg.
Se o sistema for 24/7, então pode-se deixar um timer ou até melhor... uma threat rodando que verifica o horário. No horário/data certa, ele executaria o procedimento para gerar o horário para a sala.
Não sei o que seu sistema irá fazer, pois já me veio várias ideias.
Qualquer coisa, postae que damos o help.
Abraços.
Gostei + 0
27/07/2009
Emerson Nascimento
- quais professores dão quais matérias e pra quais séries;
- quantas aulas/matérias por dia;
- quantas aulas por semana, de cada matéria, uma série deve ter;
- quais/quantas salas recebem cada série e em qual horário;
- quais os dias que o professor pode dar aula e em que horário;
isso tudo precisa estar informado para que se possa fazer um algoritmo para gerar o horário das aulas.
Gostei + 0
01/08/2009
Feliperm
Gostei + 0
03/08/2009
Rm
http://forum.devmedia.com.br/viewforum.php?f=1&topicdays=0&start=15800
Nunca precisei desenvolver algo assim. Mas se hoje precisasse creio que utilizaria os algoritmos genéticos. Estes utilizam um processo tipo seleção natural e cruzamento de melhores dados para gerar melhores até obter o resultado, começando com dados aleatórios. No decorrer inclui mutações.
Exemplo básico
Produtos
A
B
C
Preço
A=150
B=200
C=300
Qual é a quantidade de cada produto ,não maior que 9, que soma 3450 no total?
Primeiro passo
Gerar dados aleatórios
A=2;5;9;
B=3;9;6
C=7;6;3
A primeira geração soma (2x150;3x200;7x300) =3000 o que da um “fitness” de 3000/3450=0,87. Pode estabelecer os limites para o fitness (1 por exemplo)
A segunda geração (5;9;6) soma 4350 com um fitness de 1,26
A terceira (7;6;3) soma 3150 com um fitness de 0,913
A lógica do algoritmo envolve considerar cada geração como indivíduos e seus genes e cruzar os melhores. Os melhores são definidos por seu fitness
Exemplo
Cruzar os gens da primeira (fitness 0,89) e da segunda geração (0,913) ou
2;5;9 com 7;6;3. Cruzamento (ex) ´ 7´ ;5;9 =3750 fitness 1,25.No caso 0 ´7´ é o gen do segundo individuo.Não atingiu fitness de 1.Prossegue geração e cruzamento até fitness bater.Parece técnica da força bruta mas não.Veja conceitos em
http://www.obitko.com/tutorials/genetic-algorithms/portuguese/index.php
Espero que seja de alguma utilidade
Gostei + 0
03/08/2009
Rm
http://forum.devmedia.com.br/viewtopic.php?t=75300
Gostei + 0
04/08/2009
Feliperm
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)