Algoritmo de Geração de Horário

Delphi

25/07/2009

Boa Tarde à todos,
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

Feliperm

Curtidas 0

Respostas

.lg.

.lg.

25/07/2009

O ideal seria vc pre-definir os horários base. e então toda vez o programa pega as base e atribui às salas. Eu deixaria uma tela para alguem poder definir essas datas/horario. Podendo assim modificar o padrao do horario.

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
Emerson Nascimento

Emerson Nascimento

25/07/2009

não sei se você já fez, mas é preciso outras definções, tais como:

- 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
Feliperm

Feliperm

25/07/2009

Sim todas essas especificações estão nas regras de negócio. Razão pela qual seu desenvolvimento tornou-se tão complexo.


GOSTEI 0
Rm

Rm

25/07/2009

Este assunto é recorrente no fórum.Pesquise escala de horário ou veja este tópico.

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
Rm

Rm

25/07/2009

O primeiro link sugerido esta errado .é o que segue
http://forum.devmedia.com.br/viewtopic.php?t=75300


GOSTEI 0
Feliperm

Feliperm

25/07/2009

Obrigado, vou ler sobre os algoritmos genéticos e ver o que dá pra implmentar. Qualquer dúvida volto a postar.


GOSTEI 0
POSTAR