Um dos algoritmos de programação de aulas. Algoritmo de agendamento de Heuristics College

O horário das aulas regula o ritmo da vida escolar, trabalho e lazer de alunos e professores.
A eficácia de todo o processo educacional depende em grande parte de sua qualidade.

Aceitabilidade das aulas e horário escolar

O currículo da escola deve corresponder à funcionalidade dos alunos. O volume, o conteúdo e a organização do processo educacional devem garantir um estado do organismo em que a fadiga desapareça completamente durante o período de descanso.

Os principais critérios para avaliar as aulas em termos de funcionalidade do aluno são a dificuldade e o tédio. A fadiga é caracterizada por uma mudança na capacidade de trabalho, e a dificuldade da disciplina é caracterizada pelo nível de desempenho acadêmico, ou seja, o grau de domínio do material didático. Portanto, ao programar, ambos os fatores devem ser considerados igualmente.

No aspecto legal, o problema da programação de horários escolares se reflete nas novas exigências higiênicas de programação, que se baseiam nos dados das pesquisas científicas modernas sobre a bioritmologia do desempenho mental e na tabela de dificuldade das disciplinas I.G. Sivkov. No entanto, é importante para o vice-diretor, que elabora o horário, não só saber o quão difícil é a disciplina, mas também compreender o efeito cansativo das aulas de uma determinada disciplina na saúde dos alunos. Infelizmente, a tabela de dificuldade de I.G. Sivkova não leva em consideração um componente da aprendizagem como a fadiga das disciplinas, que afeta principalmente a saúde do aluno.

A pesquisa moderna dá uma idéia da dependência do cansaço de um sujeito em sua dificuldade, embora em alguns sujeitos esses indicadores difiram significativamente. Essas visões tornam possível combinar dois indicadores em um - a aceitabilidade do assunto. Portanto, a tabela I.G. Sivkov, pode ser proposta uma alternativa - uma escala de aceitabilidade das disciplinas, que levasse em consideração os componentes da dificuldade e do tédio da aprendizagem, bem como as características de cada instituição de ensino e o currículo de cada turma.

A escala de aceitabilidade consiste em uma coluna "Itens por classificação", onde são inseridos os itens, cujas classificações foram obtidas com base nos resultados do diagnóstico do grau de sua dificuldade e enfadonho pelo método de avaliações de especialistas - seu algoritmo é apresentado no Apêndice 1. A escala proposta é constante na estrutura e variável no conteúdo (ver tabela 1).

tabela 1

Escala aproximada de aceitabilidade do item

Como pode ser visto na Tabela 1, a escala é composta por cinco grupos de dificuldade. Cada grupo tem uma pontuação - este é um componente permanente da escala, não sujeito a quaisquer alterações. O conteúdo (ou seja, o conjunto de assuntos) de cada grupo pode variar dependendo dos resultados do diagnóstico. Representa a parte variável da escala.

Na escola secundária nº 618 em São Petersburgo, recebemos a seguinte escala de aceitabilidade de disciplinas (ver tabela 2).

mesa 2

Escala de aceitabilidade do item

Algoritmo de escalonamento

Uma vez que cada instituição de ensino terá sua própria aceitabilidade de disciplinas, os leitores não devem copiar a escala "um a um" dada. É aconselhável diagnosticar o grau de dificuldade e enfadonho das disciplinas em sua escola usando o método de avaliações de especialistas.

Além disso, ao agendá-lo, faz sentido orientar-se pela tabela de classificação do nível de desempenho dos alunos em diferentes séries em diferentes aulas durante a semana letiva (ver Anexo 2).

Criamos um algoritmo para a elaboração de um cronograma com base fisiológica que leva em consideração os requisitos de higiene factíveis de forma realista. Esse algoritmo pode ser usado para elaborar um currículo em uma escola com um grande número de séries de segundo e terceiro ano e em uma instituição educacional relativamente pequena. O algoritmo é destinado a especialistas que criam uma programação sem usar um programa de computador.

Ao usar programas automatizados, é aconselhável realizar a colocação de objetos por meio de um programa automatizado em etapas com base no algoritmo proposto. Como mostra a prática, esses programas só podem ser usados ​​como uma ferramenta auxiliar para:

  • o arranjo inicial de objetos com seu ajuste manual subsequente;
  • salvar informações e imprimi-las.

Após a distribuição automatizada dos objetos (o programa, via de regra, dispõe de 40 a 70%), é quase impossível levar em conta os requisitos higiênicos do horário das aulas, pois é necessário não só entregar os demais objetos não colocados. , mas também altera significativamente (até 60%) a disposição automatizada de objetos de acordo com o princípio "Just toorder".

Portanto, ao se utilizar um programa de computador para traçar um cronograma racional, levando em consideração os requisitos higiênicos e pedagógicos realmente viáveis, as especificidades de uma instituição de ensino, é necessário organizar os objetos em etapas utilizando o algoritmo proposto acima. Além disso, cada etapa da disposição de um grupo de objetos deve terminar com ajuste manual com uma orientação para os requisitos acima. Isso permitirá que você elabore um cronograma de forma mais racional e, se possível, leve em consideração todas as condições necessárias.

Como mudar a programação

Algoritmo para ajustar o horário escolar

Se precisar alterar a programação durante o ano letivo, o que ocorre com bastante frequência, é preciso trabalhar com o layout da mesa. Para alterar a programação nele, você deve realizar os seguintes cálculos e permutações.

O método de programação proposto não leva mais tempo do que o normal, mas permite que você elabore um cronograma com competência, ou seja:

  • fazer a sua própria escala de aceitabilidade das disciplinas (dificuldade e enfadonho) para traçar um horário escolar mais racional;
  • manter uma quantidade suficientemente grande de informações necessárias no campo de visão do vice-diretor;
  • distribuir as aulas uniformemente para cada dia (evite o número excessivo de sétimas aulas);
  • colocar todas as aulas desde a primeira aula, o que permite garantir o aprendizado no mesmo ritmo, já que todos os dias os alunos começarão o dia letivo no mesmo horário;
  • regular o grau de dificuldade da jornada escolar, em função da dinâmica da capacidade de trabalho semanal dos escolares;
  • organizar aulas praticamente sem “janelas” ou com um número mínimo delas, o que permite manter o ritmo de trabalho do professor e criar um regime de trabalho favorável;
  • objetos alternativos racionalmente de orientações diferentes;
  • organizar racionalmente as lições duplas necessárias;
  • mudar e ajustar rapidamente a programação de acordo com as necessidades de produção.

Além disso, este método não requer um número significativo de espaços em branco (tabelas adicionais, especialmente se a escola tiver muitas séries de segundo e terceiro anos (a partir de 30 ou mais).

Para elaborar um cronograma de alta qualidade que corresponda às capacidades de uma determinada instituição de ensino, é necessário realizar seu próprio diagnóstico do grau de dificuldade e enfadonho das disciplinas em cada paralelo. Nesse caso, os alunos devem se tornar especialistas, pois ninguém pode dizer melhor do que eles qual matéria é difícil e tediosa.

Critérios para a avaliação higiênica do horário escolar

1. O número de turmas da escola primária é ______.

2. O número de turmas nas escolas primárias e secundárias - ___________.

3. Total de salas de aula usadas para as aulas - ___________.

4. Disponibilidade de uma escala de aceitabilidade para sua instituição educacional:

5. Consideração da escala de aceitabilidade das disciplinas no horário escolar:

6. Distribuição de aulas por dia para os alunos:

7. Todas as aulas começam com a primeira lição:

8. Alternância racional de objetos de diferente orientação e complexidade:

9. Cumprimento do cronograma de contabilização da capacidade de trabalho dos alunos (em dinâmica semanal):

10. Organização racional de aulas para professores:

11. O número máximo de aulas de professores por dia:

a) até 4 aulas - para ____ professores - ______ (%);

b) 5 e 6 aulas - para ____ professores - _____ (%);

c) 7 aulas ou mais - para ____ professores - ___ (%).

12. Há um dia metódico (indique o número de professores):

a) com carga de até 24 horas semanais - de ____ professores;

b) com carga horária de 25 a 30 horas semanais - com ___ professores;

c) com carga horária superior a 30 horas semanais - com ___ professores.

  1. Prepare conjuntos com os nomes das disciplinas do 5º ao 11º ano.
  2. Dê aos alunos um conjunto de cartões de assuntos e folhas de respostas.
  3. Ofereça-se para escolher cartões com os nomes dos assuntos que são estudados nesta aula (de acordo com o diário).
  4. Esclareça o conceito de "dificuldade" dos objetos.
  5. Ofereça-se para determinar de forma independente a dificuldade de cada assunto por classificação, ou seja, dispor as cartas em ordem decrescente de dificuldade do assunto (as cartas devem ser dispostas de cima para baixo, ou seja, em primeiro lugar de cima - a carta com o assunto mais difícil, abaixo - o menos difícil, etc.) .
  6. Registre o alinhamento resultante dos objetos na folha de respostas.
  7. Depois disso, analise e esclareça o conceito de “fadiga” dos objetos.
  8. Execute um procedimento de classificação semelhante e registre o alinhamento resultante na folha de respostas.
  9. Colete e processe as folhas de respostas (veja o formulário da tabela dinâmica abaixo).

- onde: mk - pontuação média em uma matéria de uma classe;

n é o número de classes no paralelo estudado;

ou pela fórmula:

- onde: Mk - a soma dos pontos na disciplina de uma aula;

n é o número de alunos de um paralelo participando do estudo.

Por exemplo, no paralelo da 7ª série, são cinco turmas, 130 pessoas participaram do diagnóstico. O total de pontos no idioma russo em paralelo foi 469. Substitua os números na fórmula:

qua b. pr. = (469/130) = 3,61 - a pontuação média na língua russa no paralelo da 7ª série foi 3,61, as crianças percebem este assunto como bastante difícil.

Da mesma forma, a pontuação média de fadiga para cada sujeito é calculada separadamente.

Em seguida, é encontrada a pontuação média de aceitabilidade para cada assunto. Para isso, são somados dois indicadores: a pontuação média para dificuldade e a pontuação média para fadiga e, a seguir, o resultado é dividido por 2. Assim, obtém-se a pontuação média para a aceitabilidade do assunto.

Com base nos dados obtidos, uma tabela individual de aceitabilidade das disciplinas de uma determinada instituição de ensino é compilada para cada paralelo.

Formulário de tabela dinâmica para processamento de respostas

Apêndice 2

Classificação das horas de ensino ao longo da semana
dependendo do nível de desempenho dos alunos nas diferentes classes

1 - as horas mais favoráveis; 10 - o mais desfavorável.

6–7 - um nível reduzido de eficiência (horas desagradáveis ​​para as aulas).

8 a 10 - baixo nível de eficiência (horários desfavoráveis ​​às aulas).

Tabela de distribuição de carga semanal do professor

Apêndice 3

Tecnologia para realizar o layout da tabela de horários de aulas

Para completar o layout, você precisa preparar:

  • 4 folhas de papelão (espessura de 1–2 mm, altura - 42 cm, largura - 22 cm; altura da linha - 0,8 cm, largura da coluna - 1 cm) *;
  • 4 folhas de papel colorido (de preferência tons claros) com densidade de 200 g / cm e dimensões semelhantes às das folhas de papelão;
  • fita larga transparente;
  • lederin (bumvinil) para colar papelão em uma pasta (fitas de 4–5 cm de largura; 49–50 cm de comprimento);
  • Cola PVA (forte o suficiente, tipo "silacra").

Algoritmo para executar o layout

1. Cole as folhas de papelão em uma "concha":

2. Sobre uma folha de papel colorido, coloque todas as informações necessárias para o agendamento (coloque sobre uma folha de papelão nº 1); exemplo: tabela na pág. 27

3. Nas próximas duas folhas de papel colorido, desenhe uma grade, três dias em cada folha, 7 células para cada dia (coloque na 2ª e 3ª folhas de papelão).

4. Desenhe uma grade sólida na 4ª folha sem dividir em dias (células do mesmo tamanho).

5. Cubra as folhas forradas acabadas com fita para que não haja quebras quando as células forem cortadas.

6. Faça ranhuras nas células medindo de 0,5–0,6 cm.

7. Cole as folhas de papel ao longo das partes laterais das folhas de papelão na "cama dobrável" acabada. O layout está pronto.

8. Separadamente, faça etiquetas multicoloridas com a letra da classe (5º "A", 7º "G", etc.), o número - com base na carga de uma semana de 5 ou 6 dias + adicionalmente para aulas onde as classes são divididas em subgrupos. Tamanho da etiqueta: largura - 8 mm; altura - 15 mm.

9. Prepare etiquetas de qualquer cor sem letras de classe para calcular a carga de trabalho semanal para cada professor. Dimensões: largura 5 mm; altura 12-14 mm.

Este layout é fácil de usar, já que todas as informações necessárias estão sempre diante dos olhos do vice-diretor. Ele pode ser dobrado em uma pasta tornando-o fácil de transportar. Isso manterá as tags nos slots.

Informações necessárias para agendamento

___________ * As dimensões de uma folha de papelão são individuais, porque cada escola tem um número diferente de professores, horários de trabalho diferentes (semana escolar de 5 e 6 dias). Sugerimos tamanhos de horários com base em uma semana escolar de 6 dias e uma escola com 50-55 professores.

O horário das aulas regula o ritmo da vida escolar, trabalho e lazer de alunos e professores.
A eficácia de todo o processo educacional depende em grande parte de sua qualidade.

Aceitabilidade das aulas e horário escolar

O currículo da escola deve corresponder à funcionalidade dos alunos. O volume, o conteúdo e a organização do processo educacional devem garantir um estado do organismo em que a fadiga desapareça completamente durante o período de descanso.

Os principais critérios para avaliar as aulas em termos de funcionalidade do aluno são a dificuldade e o tédio. A fadiga é caracterizada por uma mudança na capacidade de trabalho, e a dificuldade da disciplina é caracterizada pelo nível de desempenho acadêmico, ou seja, o grau de domínio do material didático. Portanto, ao programar, ambos os fatores devem ser considerados igualmente.

No aspecto legal, o problema da programação de horários escolares se reflete nas novas exigências higiênicas de programação, que se baseiam nos dados das pesquisas científicas modernas sobre a bioritmologia do desempenho mental e na tabela de dificuldade das disciplinas I.G. Sivkov. No entanto, é importante para o vice-diretor, que elabora o horário, não só saber o quão difícil é a disciplina, mas também compreender o efeito cansativo das aulas de uma determinada disciplina na saúde dos alunos. Infelizmente, a tabela de dificuldade de I.G. Sivkova não leva em consideração um componente da aprendizagem como a fadiga das disciplinas, que afeta principalmente a saúde do aluno.

A pesquisa moderna dá uma idéia da dependência do cansaço de um sujeito em sua dificuldade, embora em alguns sujeitos esses indicadores difiram significativamente. Essas visões tornam possível combinar dois indicadores em um - a aceitabilidade do assunto. Portanto, a tabela I.G. Sivkov, pode ser proposta uma alternativa - uma escala de aceitabilidade das disciplinas, que levasse em consideração os componentes da dificuldade e do tédio da aprendizagem, bem como as características de cada instituição de ensino e o currículo de cada turma.

A escala de aceitabilidade consiste em uma coluna "Itens por classificação", onde são inseridos os itens, cujas classificações foram obtidas com base nos resultados do diagnóstico do grau de sua dificuldade e enfadonho pelo método de avaliações de especialistas - seu algoritmo é apresentado no Apêndice 1. A escala proposta é constante na estrutura e variável no conteúdo (ver tabela 1).

tabela 1

Escala aproximada de aceitabilidade do item

Como pode ser visto na Tabela 1, a escala é composta por cinco grupos de dificuldade. Cada grupo tem uma pontuação - este é um componente permanente da escala, não sujeito a quaisquer alterações. O conteúdo (ou seja, o conjunto de assuntos) de cada grupo pode variar dependendo dos resultados do diagnóstico. Representa a parte variável da escala.

Na escola secundária nº 618 em São Petersburgo, recebemos a seguinte escala de aceitabilidade de disciplinas (ver tabela 2).

mesa 2

Escala de aceitabilidade do item

Algoritmo de escalonamento

Uma vez que cada instituição de ensino terá sua própria aceitabilidade de disciplinas, os leitores não devem copiar a escala "um a um" dada. É aconselhável diagnosticar o grau de dificuldade e enfadonho das disciplinas em sua escola usando o método de avaliações de especialistas.

Além disso, ao agendá-lo, faz sentido orientar-se pela tabela de classificação do nível de desempenho dos alunos em diferentes séries em diferentes aulas durante a semana letiva (ver Anexo 2).

Criamos um algoritmo para a elaboração de um cronograma com base fisiológica que leva em consideração os requisitos de higiene factíveis de forma realista. Esse algoritmo pode ser usado para elaborar um currículo em uma escola com um grande número de séries de segundo e terceiro ano e em uma instituição educacional relativamente pequena. O algoritmo é destinado a especialistas que criam uma programação sem usar um programa de computador.

Ao usar programas automatizados, é aconselhável realizar a colocação de objetos por meio de um programa automatizado em etapas com base no algoritmo proposto. Como mostra a prática, esses programas só podem ser usados ​​como uma ferramenta auxiliar para:

  • o arranjo inicial de objetos com seu ajuste manual subsequente;
  • salvar informações e imprimi-las.

Após a distribuição automatizada dos objetos (o programa, via de regra, dispõe de 40 a 70%), é quase impossível levar em conta os requisitos higiênicos do horário das aulas, pois é necessário não só entregar os demais objetos não colocados. , mas também altera significativamente (até 60%) a disposição automatizada de objetos de acordo com o princípio "Just toorder".

Portanto, ao se utilizar um programa de computador para traçar um cronograma racional, levando em consideração os requisitos higiênicos e pedagógicos realmente viáveis, as especificidades de uma instituição de ensino, é necessário organizar os objetos em etapas utilizando o algoritmo proposto acima. Além disso, cada etapa da disposição de um grupo de objetos deve terminar com ajuste manual com uma orientação para os requisitos acima. Isso permitirá que você elabore um cronograma de forma mais racional e, se possível, leve em consideração todas as condições necessárias.

Como mudar a programação

Algoritmo para ajustar o horário escolar

Se precisar alterar a programação durante o ano letivo, o que ocorre com bastante frequência, é preciso trabalhar com o layout da mesa. Para alterar a programação nele, você deve realizar os seguintes cálculos e permutações.

O método de programação proposto não leva mais tempo do que o normal, mas permite que você elabore um cronograma com competência, ou seja:

  • fazer a sua própria escala de aceitabilidade das disciplinas (dificuldade e enfadonho) para traçar um horário escolar mais racional;
  • manter uma quantidade suficientemente grande de informações necessárias no campo de visão do vice-diretor;
  • distribuir as aulas uniformemente para cada dia (evite o número excessivo de sétimas aulas);
  • colocar todas as aulas desde a primeira aula, o que permite garantir o aprendizado no mesmo ritmo, já que todos os dias os alunos começarão o dia letivo no mesmo horário;
  • regular o grau de dificuldade da jornada escolar, em função da dinâmica da capacidade de trabalho semanal dos escolares;
  • organizar aulas praticamente sem “janelas” ou com um número mínimo delas, o que permite manter o ritmo de trabalho do professor e criar um regime de trabalho favorável;
  • objetos alternativos racionalmente de orientações diferentes;
  • organizar racionalmente as lições duplas necessárias;
  • mudar e ajustar rapidamente a programação de acordo com as necessidades de produção.

Além disso, este método não requer um número significativo de espaços em branco (tabelas adicionais, especialmente se a escola tiver muitas séries de segundo e terceiro anos (a partir de 30 ou mais).

Para elaborar um cronograma de alta qualidade que corresponda às capacidades de uma determinada instituição de ensino, é necessário realizar seu próprio diagnóstico do grau de dificuldade e enfadonho das disciplinas em cada paralelo. Nesse caso, os alunos devem se tornar especialistas, pois ninguém pode dizer melhor do que eles qual matéria é difícil e tediosa.

Critérios para a avaliação higiênica do horário escolar

1. O número de turmas da escola primária é ______.

2. O número de turmas nas escolas primárias e secundárias - ___________.

3. Total de salas de aula usadas para as aulas - ___________.

4. Disponibilidade de uma escala de aceitabilidade para sua instituição educacional:

5. Consideração da escala de aceitabilidade das disciplinas no horário escolar:

6. Distribuição de aulas por dia para os alunos:

7. Todas as aulas começam com a primeira lição:

8. Alternância racional de objetos de diferente orientação e complexidade:

9. Cumprimento do cronograma de contabilização da capacidade de trabalho dos alunos (em dinâmica semanal):

10. Organização racional de aulas para professores:

11. O número máximo de aulas de professores por dia:

a) até 4 aulas - para ____ professores - ______ (%);

b) 5 e 6 aulas - para ____ professores - _____ (%);

c) 7 aulas ou mais - para ____ professores - ___ (%).

12. Há um dia metódico (indique o número de professores):

a) com carga de até 24 horas semanais - de ____ professores;

b) com carga horária de 25 a 30 horas semanais - com ___ professores;

c) com carga horária superior a 30 horas semanais - com ___ professores.

  1. Prepare conjuntos com os nomes das disciplinas do 5º ao 11º ano.
  2. Dê aos alunos um conjunto de cartões de assuntos e folhas de respostas.
  3. Ofereça-se para escolher cartões com os nomes dos assuntos que são estudados nesta aula (de acordo com o diário).
  4. Esclareça o conceito de "dificuldade" dos objetos.
  5. Ofereça-se para determinar de forma independente a dificuldade de cada assunto por classificação, ou seja, dispor as cartas em ordem decrescente de dificuldade do assunto (as cartas devem ser dispostas de cima para baixo, ou seja, em primeiro lugar de cima - a carta com o assunto mais difícil, abaixo - o menos difícil, etc.) .
  6. Registre o alinhamento resultante dos objetos na folha de respostas.
  7. Depois disso, analise e esclareça o conceito de “fadiga” dos objetos.
  8. Execute um procedimento de classificação semelhante e registre o alinhamento resultante na folha de respostas.
  9. Colete e processe as folhas de respostas (veja o formulário da tabela dinâmica abaixo).

- onde: mk - pontuação média em uma matéria de uma classe;

n é o número de classes no paralelo estudado;

ou pela fórmula:

- onde: Mk - a soma dos pontos na disciplina de uma aula;

n é o número de alunos de um paralelo participando do estudo.

Por exemplo, no paralelo da 7ª série, são cinco turmas, 130 pessoas participaram do diagnóstico. O total de pontos no idioma russo em paralelo foi 469. Substitua os números na fórmula:

qua b. pr. = (469/130) = 3,61 - a pontuação média na língua russa no paralelo da 7ª série foi 3,61, as crianças percebem este assunto como bastante difícil.

Da mesma forma, a pontuação média de fadiga para cada sujeito é calculada separadamente.

Em seguida, é encontrada a pontuação média de aceitabilidade para cada assunto. Para isso, são somados dois indicadores: a pontuação média para dificuldade e a pontuação média para fadiga e, a seguir, o resultado é dividido por 2. Assim, obtém-se a pontuação média para a aceitabilidade do assunto.

Com base nos dados obtidos, uma tabela individual de aceitabilidade das disciplinas de uma determinada instituição de ensino é compilada para cada paralelo.

Formulário de tabela dinâmica para processamento de respostas

Apêndice 2

Classificação das horas de ensino ao longo da semana
dependendo do nível de desempenho dos alunos nas diferentes classes

1 - as horas mais favoráveis; 10 - o mais desfavorável.

6–7 - um nível reduzido de eficiência (horas desagradáveis ​​para as aulas).

8 a 10 - baixo nível de eficiência (horários desfavoráveis ​​às aulas).

Tabela de distribuição de carga semanal do professor

Apêndice 3

Tecnologia para realizar o layout da tabela de horários de aulas

Para completar o layout, você precisa preparar:

  • 4 folhas de papelão (espessura de 1–2 mm, altura - 42 cm, largura - 22 cm; altura da linha - 0,8 cm, largura da coluna - 1 cm) *;
  • 4 folhas de papel colorido (de preferência tons claros) com densidade de 200 g / cm e dimensões semelhantes às das folhas de papelão;
  • fita larga transparente;
  • lederin (bumvinil) para colar papelão em uma pasta (fitas de 4–5 cm de largura; 49–50 cm de comprimento);
  • Cola PVA (forte o suficiente, tipo "silacra").

Algoritmo para executar o layout

1. Cole as folhas de papelão em uma "concha":

2. Sobre uma folha de papel colorido, coloque todas as informações necessárias para o agendamento (coloque sobre uma folha de papelão nº 1); exemplo: tabela na pág. 27

3. Nas próximas duas folhas de papel colorido, desenhe uma grade, três dias em cada folha, 7 células para cada dia (coloque na 2ª e 3ª folhas de papelão).

4. Desenhe uma grade sólida na 4ª folha sem dividir em dias (células do mesmo tamanho).

5. Cubra as folhas forradas acabadas com fita para que não haja quebras quando as células forem cortadas.

6. Faça ranhuras nas células medindo de 0,5–0,6 cm.

7. Cole as folhas de papel ao longo das partes laterais das folhas de papelão na "cama dobrável" acabada. O layout está pronto.

8. Separadamente, faça etiquetas multicoloridas com a letra da classe (5º "A", 7º "G", etc.), o número - com base na carga de uma semana de 5 ou 6 dias + adicionalmente para aulas onde as classes são divididas em subgrupos. Tamanho da etiqueta: largura - 8 mm; altura - 15 mm.

9. Prepare etiquetas de qualquer cor sem letras de classe para calcular a carga de trabalho semanal para cada professor. Dimensões: largura 5 mm; altura 12-14 mm.

Este layout é fácil de usar, já que todas as informações necessárias estão sempre diante dos olhos do vice-diretor. Ele pode ser dobrado em uma pasta tornando-o fácil de transportar. Isso manterá as tags nos slots.

Informações necessárias para agendamento

___________ * As dimensões de uma folha de papelão são individuais, porque cada escola tem um número diferente de professores, horários de trabalho diferentes (semana escolar de 5 e 6 dias). Sugerimos tamanhos de horários com base em uma semana escolar de 6 dias e uma escola com 50-55 professores.

Recentemente, o tópico do cronograma de aulas caiu aqui, e eu queria contar a vocês sobre minha experiência na construção de um algoritmo para o agendamento de um cronograma para uma universidade, ou melhor, mais sobre as heurísticas que apliquei.

Em 2002, ao se formar em uma universidade (ramo Yaroslavl do MESI), especialidade "Informática Aplicada em Economia", a tarefa era escolher uma tese. A lista de tópicos proposta era deprimente, principalmente desenvolvimentos de banco de dados enfadonhos. Em princípio, eu poderia ter tomado alguns dos meus desenvolvimentos existentes como base, conforme sugerido pelo chefe. púlpito, mas o sangue estava fervendo, eu queria fazer algo interessante e novo para mim. Ofereci para a chefia o tema agendamento, principalmente porque trabalhava no serviço de informática da universidade, e era responsável pelo sistema KIS UZ (Sistema Integrado de Informação para Gestão de Instituição de Ensino), produto de uma empresa Yaroslavl. KIS UZ era bom, mas não conseguia fazer um cronograma por conta própria. Além disso, com isso busquei o objetivo de fazer algo útil, mas descobri que não houve tentativas de implementá-lo na vida, talvez pelo menos a publicação sobre Habré vá beneficiar alguém.

Para isso, foi necessário ensinar o computador a traçar uma programação semanal de aulas, e da melhor forma possível. Percebendo a escala do espaço de busca, não estabeleci o objetivo de encontrar a melhor opção. Primeiro você precisa determinar quais são as classes, o que é bom e o que é ruim. O seguinte modelo foi escolhido com as seguintes entradas:
- número de dias em uma semana
- o número de aulas por dia
- lista de professores
- lista de grupos, subgrupos e fluxos
- o número de públicos para um determinado tipo
- um conjunto de grupos de tarefas (aulas):

  • classe
  • professor
  • stream ou grupo
  • tipo de público
  • número de aulas neste grupo de aulas
  • tempo, se o diretor quiser estabelecer "rigidamente" essa lição em um determinado momento
O processo deve organizar as atividades em uma grade de tempo - a programação. 4 parâmetros estão envolvidos na avaliação do cronograma - o número de "janelas" no cronograma para o grupo e professores, a distribuição uniforme das aulas por dia para o grupo e professores. A importância desses parâmetros é definida pelo diretor. A princípio, eu queria aplicar o método de análise de hierarquias na função objetivo, mas teria de introduzir uma comparação par a par desses parâmetros, então resolvi usar uma função linear.

Quanto aos públicos, optei por uma simplificação, retirei do cronograma, tornando-se uma limitação, ao considerar a busca pelo número de públicos gratuitos em um determinado horário. Após a geração da programação no tempo, o público foi colocado. Em geral, esbocei um modelo tão simples. Experimentei um pouco o algoritmo genético, com base na biblioteca desenhei um programa durante o dia, mas não gostei do resultado e, sem pensar duas vezes, mudei para outros algoritmos. Acho que o resultado ruim saiu por causa da minha abordagem frágil, provavelmente, eu codifiquei mal o modelo em termos de GA. Comecei a pensar sobre o método branch and bound. O espaço de busca é uma árvore, onde nível significa ocupação e ramo é um elemento da grade de tempo. O horário é considerado o caminho da raiz da árvore até um dos vértices pendentes. No caminho, no processo de ramificação, verifica-se a possibilidade e conveniência de contornar por diferentes motivos: o emprego do professor, o grupo, a avaliação. Andando em volta da árvore, naturalmente, mais fundo. Cada nível contém células de grade livres para a tarefa atual. Se o diretor fixou "rigidamente" a tarefa dada por um certo tempo, então um ramo é construído correspondendo a um certo tempo. Além disso, passando ao longo do ramo, uma estimativa do limite superior é encontrada (além disso, o controle é realizado para a presença de públicos-alvo deste tipo), e se a estimativa do limite superior for maior do que a estimativa do atual encontrarmos o melhor cronograma (e se houver um público livre desse tipo), então passamos por ramos, caso contrário, vamos para o próximo ramo. No método de ramificação e limite, o ponto chave e importante é o algoritmo para encontrar a estimativa do limite superior. Sem mais delongas, estimei o cronograma incompleto atual e o comparei com o melhor cronograma encontrado. Visto que, mergulhando ainda mais, a estimativa do cronograma incompleto se tornará pior, se já for pior do que a estimativa do melhor cronograma, então o ramal é rejeitado. E assim, tendo programado tudo, preparei os dados (tirei do sistema com base em dados reais), lancei à noite e fui para casa. De manhã, quando vim para o trabalho, carreguei o melhor de um bilhão de programações encontradas no KIS UZ, mas era impossível olhar para ele sem lágrimas. Fiquei desapontado, deprimido e não sabia o que fazer a seguir. À noite fui com meus amigos beber cerveja, e agora estou parado na parada sob o pulo e espero pelo último bonde, e na minha cabeça só há árvores, galhos, bordas, avaliações ... e aí amanhece para mim que é necessário de alguma forma em cada nível, ao definir ramos, classificá-los, certifique-se de que as opções que são mais prováveis ​​de serem incluídas no melhor cronograma vão primeiro. Mas como fazer isso? O pensamento veio quando eu já estava terminando o segundo cigarro. É necessário, com antecedência, construir para cada disciplina do cronograma seus próprios cronogramas ideais, e para cada ramo calcular o grau de enquadramento nesses cronogramas e ordenar por ele. De manhã fui trabalhar mais rápido que de costume, no caminho desenhando detalhes técnicos na minha cabeça, na hora do almoço a heurística estava embutida, o resultado parecia bastante decente no KIS UZ, e no restante meio dia sorri.

PS. Mais tarde, quando ouvi sobre o PageRank, pensei que tinha algo semelhante a esta heurística.

Suponha que haja um conjunto n processadores idênticos, denotados e trabalhos independentes
completar. Os processadores podem ser executados simultaneamente e qualquer trabalho pode ser feito em qualquer processador. Se um trabalho for carregado no processador, ele permanecerá lá até o final do processamento. Tempo de processamento do trabalho conhecido e igual
Organize o processamento de trabalhos de forma que todo o conjunto de trabalhos seja concluído o mais rápido possível.

O sistema funciona da seguinte maneira: o primeiro processador livre pega o próximo trabalho da lista. Se dois ou mais processadores forem lançados ao mesmo tempo, a próxima tarefa da lista será executada pelo processador com o número mais baixo.

Exemplo... Deixe que haja três processadores e seis tarefas, o tempo de execução de cada uma delas é igual a:

Considere a programação no momento inicial T = 0, processador começa a processar o trabalho , processador - tarefas e o processador - tarefas ... CPU termina a tarefa no momento
enquanto os processadores e ainda estão trabalhando em suas atribuições originais. No T = 3 CPU termina a tarefa novamente e começa a processar o trabalho que termina no momento T = 4... Então ele começa a realizar a última tarefa ... Processadores e terminar as tarefas quando T = 5 mas desde a lista eu vazio, eles param. CPU completa a tarefa no T = 12... O cronograma considerado é ilustrado na Fig. 1. um gráfico de tempo conhecido como gráfico de Gantt... Obviamente, o cronograma não é o ideal. Você pode "pegar", por exemplo, uma programação que permite que você conclua todas as tarefas em T * = 8 unidades de tempo (Fig. 2.).

Agora, vamos examinar outro tipo de tarefa de agendamento para sistemas multiprocessadores. Em vez da pergunta sobre a conclusão mais rápida de um conjunto de tarefas com um número fixo de processadores, agora perguntamos sobre o número mínimo de processadores necessários para concluir um determinado conjunto de tarefas em um tempo fixo. ... Claro o tempo não haverá menos tempo para completar a tarefa mais trabalhosa.

Nesta configuração, o problema de programação é equivalente ao seguinte problema de embalagem. Deixe cada processador gaveta combinando Tamanho ... Deixe cada tarefa corresponde ao tamanho do item igual ao tempo de execução da tarefa , Onde
Agora, para resolver a tarefa de agendamento, você precisa construir um algoritmo que permita colocar todos os itens no número mínimo de caixas. Obviamente, as caixas não podem ser preenchidas além do seu volume. , e os itens não podem ser divididos em pedaços.

Literatura

1. T. Cormen, C. Leiserson, R. Rivest

Algoritmos: construção e análise. Moscou: MTsNMO, 2000.

2. D. Knut A arte da programação, volume 1. Algoritmos básicos. Uch. pos. M: Ed. Casa "Williams", 2000.

3. Wirth N. Algoritmos e estruturas de dados.: Por. Do inglês. - M: Mir, 2001.

4. Khusainov B.S. Estruturas de dados e algoritmos. Exemplos em

Linguagem C. Livro didático. mesada. M: Finanças e Estatísticas, 2004.

5. A. Aho, J. Hopcroft, J. Ullman, Estruturas de dados e algoritmos M: SPb: Kiev: Williams, 2001.

O que você lê aqui é basicamente um disparate. No entanto, em alguns lugares, na minha opinião, existem pensamentos sensatos, infelizmente não existiram tantos desses lugares.Não tente entregá-lo onde os problemas da teoria de escalonamento são seriamente tratados. Para aqueles que desejam escrever algo melhor do que isso, recomendo fortemente a leitura do livro de Hu. T. "Programação inteira e fluxos em redes", além disso, talvez valha a pena ler as aulas de VM & C sobre teoria de otimização de N.М. Novikova (não me lembro onde fica na internet). Agora estou ativamente envolvido nos problemas da teoria de otimização, então, quem também estiver interessado neste tópico, fico sempre feliz em conversar. Escrever [email protegido]

Introdução. oito

1. Descrição da área de tecnologia. dez

1.1. Formulação da tarefa de agendamento. dez

1.1.1. Formulação geral do problema de escalonamento. dez

1.1.2. Formulação da tarefa de elaboração de um cronograma aplicado ao cronograma de sessões de treinamento. onze

1.2. Análise de software existente. 12

1.3. Formulação do problema. 15

2. Desenvolvimento de um modelo matemático e implementação prática de um sistema de escalonamento automático. 16

2.1. Modelo matemático de horários na universidade. 16

2.1.1. Notação. 16

2.1.2. Variáveis. dezoito

2.1.3. Restrições. 19

2.1.4. Função objetiva. 21

2.2. Métodos para resolver o problema. 22

2.2.1. Algoritmo totalmente inteiro. 23

2.2.2 Algoritmo de programação inteira direta. 28

2.2.3. A técnica de obtenção da base inicial admissível. 32

2.3. Características da implementação prática do sistema. 36

2.3.1. Seleção de modelo. 36

2.3.2. Descrição das informações de entrada. 39

2.3.3. Desenvolvimento de suporte de informação para a tarefa. 41

2.3.4. Características da formação de restrições do modelo matemático do problema de escalonamento. 44

2.4. Resultados do programa. 45

2,5. Análise dos resultados obtidos. 49

Conclusões .. 50

Literatura. 51

Apêndice 1. Possibilidades de produtos de software para sistemas de agendamento. 52

Apêndice 2. Lista do módulo do programa de métodos para resolver o problema de escalonamento automático. 61

Introdução

A qualidade da formação de especialistas nas universidades e, sobretudo, a eficácia do aproveitamento do potencial científico e pedagógico dependem, em certa medida, do nível de organização do processo educativo.

Um dos principais componentes desse processo - o horário das aulas - regula o ritmo de trabalho, afeta a produção criativa dos professores, portanto pode ser considerado um fator de otimização do uso de recursos limitados de mão de obra - o corpo docente. A tecnologia de desenvolvimento do cronograma deve ser percebida não apenas como um processo técnico intensivo em mão de obra, objeto de mecanização e automação por meio de computadores, mas também como uma ação de controle ótimo. Portanto, este é um problema de desenvolver horários ideais para as aulas nas universidades com um óbvio efeito econômico. Uma vez que os interesses dos participantes no processo educacional são diversos, a tarefa de agendamento é multicritério.

A tarefa de agendamento não deve ser considerada apenas como uma espécie de programa que implementa a função de distribuição mecânica das aulas no início do semestre, altura em que termina a sua (programa) utilização. O efeito econômico de um uso mais eficiente dos recursos de trabalho só pode ser alcançado como resultado de um trabalho árduo na gestão desses recursos de trabalho. O cronograma aqui é apenas uma ferramenta para tal gestão, e para seu aproveitamento máximo é necessário que o programa combine não só os meios para traçar o cronograma ótimo, mas também os meios para manter sua otimalidade em caso de alteração em algum insumo dados, que no momento da elaboração do cronograma foram considerados constantes ... Além disso, o controle ideal de um sistema tão complexo é impossível sem o acúmulo de algumas informações estatísticas sobre os processos que ocorrem no sistema. Portanto, a própria tarefa de traçar um cronograma ideal é apenas parte de um complexo sistema de gerenciamento de processo educacional.

A natureza multicritério deste problema e a complexidade do objeto para o qual o modelo matemático está sendo construído exige um estudo matemático sério do objeto para aumentar a funcionalidade dos algoritmos de escalonamento sem complicar significativamente o modelo e, como resultado, aumentar a quantidade de memória usada e o tempo para resolver o problema.


1. DESCRIÇÃO DA ÁREA TECNOLÓGICA 1.1. Formulação do problema de agendamento

O problema da teoria do escalonamento em sua formulação geral é considerado muito atraente, embora o alcance de pequenos avanços no caminho para uma solução esteja associado, via de regra, a enormes dificuldades. Apesar do fato de que muitos especialistas altamente qualificados lidaram com problemas de teoria de escalonamento, até agora ninguém conseguiu obter resultados significativos. As tentativas malsucedidas de obter tais resultados, via de regra, não são publicadas, e isso se deve em parte ao fato de que o problema continua a atrair a atenção de muitos pesquisadores por sua aparente simplicidade de formulação.

1.1.1. Formulação geral do problema de programação

Em sua formulação mais geral, a tarefa de agendamento é a seguinte. Com a ajuda de um conjunto de recursos ou dispositivos de serviço, algum sistema fixo de tarefas deve ser executado. O objetivo é encontrar um algoritmo de ordenação de trabalhos eficiente que otimize ou tenda a otimizar a medida de eficiência necessária, dadas as propriedades dos trabalhos e recursos e as restrições que lhes são impostas. As principais medidas de eficiência são a duração da programação e o tempo médio de permanência das tarefas no sistema. Os modelos desses problemas são determinísticos no sentido de que todas as informações com base nas quais as decisões sobre o pedido são tomadas são conhecidas com antecedência.

1.1.2. Formulação da tarefa de elaboração de um cronograma aplicado ao cronograma de sessões de treinamento.

A teoria geral de agendamento assume que todos os dispositivos de serviço (ou processadores) não podem realizar mais de uma tarefa em um determinado momento, o que não é suficiente para o agendamento de sessões de treinamento se a sala de aula for tomada como um processador na distribuição de tarefas. Assim, em alguns casos, as aulas com mais de um grupo ao mesmo tempo podem ser ministradas em uma sala de aula, por exemplo, palestras gerais para vários fluxos.

Portanto, ao transferir a teoria geral dos horários para os horários das sessões de treinamento, foram feitas as seguintes premissas:

Todos os processadores (ou seja, no caso de um cronograma de treinamento - salas de aula) têm uma capacidade - algum número C ≥ 1. A capacidade do processador determina o número de tarefas que pode "processar" simultaneamente em um determinado momento quando o processador não é o público, mas o professor, mas a tarefa é um fluxo de um ou mais grupos de estudo com os quais ele trabalha);

Como conjunto de atribuições para distribuição estão as sessões de formação do professor com os grupos de estudo;

O modelo de tempo no sistema é discreto; toda a distribuição é considerada periodicamente repetida ao longo de um certo intervalo de tempo;

Todas as tarefas são executadas ao mesmo tempo, que é considerada a unidade de amostragem do intervalo de tempo;

As tarefas pertencem a objetos, que são grupos de estudo e professores.

Como resultado, a formulação da tarefa de agendar sessões de treinamento soa como segue: "Para um determinado conjunto de salas de aula (neste caso, uma sala de aula significa uma ampla gama de instalações nas quais as sessões de treinamento são realizadas (de uma sala de informática a uma ginásio)) e um determinado conjunto de intervalos de tempo (ou seja, de fato, aulas ou pares de estudos) para construir tal distribuição de atividades de estudo para todos os objetos (professores e grupos de estudo), para os quais o critério de otimização selecionado é o melhor. "

1.2. Análise de software existente

Atualmente, o setor de mercado de softwares para sistemas de escalonamento é representado por um grande número de diferentes produtos de software. A Tabela 1. apresenta apenas alguns dos que conheço.

Por razões objetivas, o sistema de horários em uma universidade (ou seja, uma grande universidade estadual) deve necessariamente implementar uma série de funções básicas:

Levando em consideração os desejos dos professores;

Fixar públicos-alvo necessários;

Especificando os públicos desejados;

Contabilização da transição entre edifícios;

Combinar grupos em fluxos para qualquer conjunto de disciplinas;

Divisão em subgrupos;

Após o agendamento, se necessário, substitua os professores ou altere o horário da aula.

Além disso, também existem requisitos específicos para cada universidade para a funcionalidade do produto de software.

As capacidades, em minha opinião, dos produtos de software mais populares no mercado russo são fornecidas no Apêndice 1.

Da lista acima, talvez apenas o programa "Metodista" corresponda mais ou menos à funcionalidade necessária do software para agendamento na universidade. Esse estado de coisas é facilmente explicado pelo fato de que a educação escolar hoje é mais "padronizada" (no sentido de organizar o processo educacional) do que a educação universitária. Essa padronização leva a um grande mercado potencial para vendas de software e ROI de desenvolvimento com a venda de um grande número de cópias de um produto a um custo relativamente baixo.

No caso das universidades, a demanda por sistemas de horários é talvez ainda maior do que nas escolas, mas a questão é complicada pelas grandes especificidades da organização do processo educacional em cada universidade individualmente. Não é possível criar software unificado, e o custo de criar um produto especializado de desenvolvedores terceirizados acaba sendo excessivamente alto. Além disso, é pré-requisito a presença de um horário "bem estabelecido", o que implica a disponibilidade da possibilidade de substituição de professores ou o horário das aulas. Até agora, nenhum produto de software permite que você faça isso de forma simples (embora haja algumas possibilidades em "Metodista").

1.3. Formulação do problema.

O objetivo deste trabalho foi criar tal modelo matemático de horários na universidade, que permitisse de forma eficiente (dentro de um determinado período de tempo e com um determinado grau de otimalidade) resolver o problema do agendamento automático e teria flexibilidade (menor mudanças em caso de mudanças nas informações de entrada) para adaptar o sistema dentro de uma tarefa prática específica. Para simplificar um pouco a tarefa no estágio inicial de design, algumas suposições foram feitas:

O cronograma é compilado com base em não mais do que dois pares por dia (o que é bastante adequado para o caso de um estudo noturno);

Todos os pares são mantidos em um prédio;

O problema é colocado em termos de programação linear;

Nenhuma decomposição adicional do modelo é executada;

Todos os coeficientes do modelo e as variáveis ​​desejadas são inteiros;

O problema deve ser resolvido por um dos métodos universais (independentes de valores inteiros dos coeficientes) de programação linear inteira.


2. Desenvolvimento de um modelo matemático e implementação prática de um sistema de escalonamento automático 2.1. Modelo matemático de horário na universidade

Vamos construir um modelo matemático do cronograma da universidade em termos de programação linear. Vamos introduzir algumas notações e definir variáveis ​​e restrições.

2.1.1. Designações

A universidade possui N grupos de estudo, unidos em R streams; r é o número do riacho, r = 1, ..., R, k r é o número do grupo de estudo no riacho r, k r = 1,…, G r.

A divisão em grupos em threads é realizada com base nos princípios:

1. O uso por dois grupos do mesmo fundo de sala de aula para suas aulas implica automaticamente colocá-los em um único fluxo (presume-se que todas as aulas dos grupos de estudo são realizadas em conjunto).

2. Um grupo (ou parte dele), como unidade do processo educacional de uma universidade, pode ingressar em diferentes correntes, mas apenas uma vez em cada uma delas.

3. O número de streams não é limitado.

As aulas são ministradas durante a semana em intervalos de uma hora e meia, que chamaremos aos pares.

Vamos denotar:

t é o número do dia útil da semana, t Є T kr, onde

T kr - o conjunto de números de dias úteis para o grupo k r;

j é o número do par, j = 1,…, J;

J é o número total de pares.

Com cada grupo de treinamento k r flow r durante a semana, de acordo com o currículo, são realizadas aulas de W kr, das quais S r são teóricas e Q kr são práticas. Vamos denotar:

s r - o número da disciplina na lista de aulas da vertente r, s r = 1,…, S r;

q kr - número da disciplina na lista de aulas práticas do grupo k r, q kr = 1,…, Q kr.

Pressupõe-se que as palestras sejam ministradas a todos os grupos do riacho ao mesmo tempo e no mesmo auditório. Então, se mais de uma aula for ministrada em uma disciplina durante a semana, esta disciplina é mencionada na lista de aulas expositivas ou práticas tantas vezes quantas forem previstas no currículo de cada fluxo ou grupo.

PROFESSORES

Seja p o número (nome) do professor, p = 1,…, P. Apresente os valores booleanos e:

A carga horária pedagógica dos professores é planeada antes de se traçar o agendamento das aulas, pelo que nesta fase os valores e podem ser considerados dados. Para cada professor p, p = 1,…, P, sua carga horária também é dada - N p horas por semana.

FUNDO DE AUDITORIA

As aulas em cada fluxo só podem ser ministradas em salas de aula específicas (por exemplo, aulas práticas de ciência da computação só podem ser ministradas em salas de exibição). Deixe ser:

(A 1 r) - conjunto de salas de aula na linha r;

(A 2 r) - muitas salas de aula para exercícios práticos na linha r;

A 1 r - o número de elementos do conjunto (A 1 r);

A 2 r - o número de elementos do conjunto (A 2 r);

A 1 r + A 2 r - o número de públicos da união dos conjuntos (A 1 r) ∩ (A 2 r).

O fundo da sala de aula é determinado antes do início da programação, portanto os conjuntos podem ser considerados definidos.

2.1.2. Variáveis

A tarefa de agendamento é determinar para cada aula teórica (em curso) e aula prática (em grupo) um dia da semana e um par nesse dia, tendo em conta o cumprimento dos constrangimentos construídos abaixo e a minimização de um determinado objetivo função.

Apresentamos as seguintes variáveis ​​booleanas obrigatórias:

=

No caso de agendamento para turmas do período noturno de estudo J = 2. Generalização do modelo para todas as formas de aprendizagem, ver página 669.

2.1.3. Restrições

Para cada grupo k r, todos os tipos de trabalho em sala de aula devem ser realizados durante a semana:

Cada aula s r e aula prática q kr, respectivamente, para todos os fluxos r e todos os grupos k r podem ser realizadas no máximo uma vez em qualquer dia t:

Se as variáveis ​​e ligam todos os tipos de atividades com o tempo de sua realização, então o trabalho e associar a hora ao nome do professor.

Em cada dia t e em cada par j, o professor p não pode ensinar mais do que uma aula em uma disciplina em um fluxo ou em um grupo:

Por fim, a cada dia, para cada dupla, o número de aulas teóricas e práticas não deve ultrapassar o fundo presencial disponível na universidade:

Além disso, para todas as coleções de conjuntos de interseção (A 1 r) e (A 2 r), as seguintes condições devem ser satisfeitas:

Os rácios apresentados esgotam as restrições incondicionais, que são sempre tidas em consideração no momento do agendamento. No entanto, pode haver condições específicas, em primeiro lugar, a realização de certos tipos de trabalho na semana “superior” ou “inferior” (ou seja, uma hora acadêmica por semana). Outras condições especiais não são excluídas, mas não foram consideradas para simplificar o modelo.

2.1.4. Função objetiva

Para realizar integralmente o trabalho científico, pedagógico e metodológico, para se preparar para as aulas, um professor universitário deve ter tempo livre. Essa condição não é suficiente, mas necessária. Obviamente, ele não deve ter tempo livre em modo “irregular”, que, por exemplo, são “janelas” entre as aulas com os alunos, mas, se possível, em dias de trabalho totalmente livres. Isso equivale a maximizar a carga horária dos professores nos dias em que a possuem (ver (5)). No entanto, ao mesmo tempo, as reivindicações dos professores sobre o tempo livre são desiguais, uma vez que têm diferentes potenciais criativos. Para tanto, é necessário introduzir fatores de ponderação, por meio dos quais se leve em consideração o status correspondente do professor - seus graus acadêmicos e título, cargo que ocupa, atividade científica e social, etc. Em alguns casos, é possível, com base na opinião de especialistas, usar pesos individuais que levam em consideração outros fatores.

Então, vamos escolher um critério de qualidade para o agendamento das aulas na forma de maximizar o número ponderado de dias livres de aulas para todos os professores, que, dada uma duração fixa da semana de trabalho, é equivalente à compactação cumulativa máxima da carga de sala de aula .

Considere a expressão para o valor da carga horária no dia t do professor p:


onde M é um número positivo arbitrário suficientemente grande; é a variável booleana necessária.

Segue de (10) que se, então = 1, e se, então = 0.

Levando em consideração o significado significativo acima do critério de otimização em restrições adicionais (10), bem como introduzindo os coeficientes de peso do status do professor, obtemos o critério de otimalidade exigido:


A função objetivo introduzida não é a única possível. A introdução de outras funções objetivo não altera as limitações do modelo matemático e dos métodos de resolução do problema, mas pode afetar significativamente os resultados dos cálculos.

2.2. MÉTODOS PARA RESOLVER O PROBLEMA DECLARADO

O problema de maximizar uma função objetivo linear para um dado sistema de restrições apresentado no parágrafo anterior é um problema de programação Booleana inteira linear, uma vez que todos os coeficientes de restrição são inteiros devido à discretude dos dados iniciais do problema; além disso, as variáveis ​​buscadas do modelo matemático podem assumir apenas dois valores. Neste momento, existem vários métodos possíveis para resolver esses problemas.

C - métodos de indexação ordenada e anotações modificadas são descritos, com base na decomposição Lagrangiana do modelo original em uma série de problemas de uma linha, que são resolvidos, respectivamente, pelos métodos de indexação sequencial ou anotações modificadas. Infelizmente, o número de operações para cada um dos métodos não permite a estimativa polinomial; além disso, a dimensão da tabela de conjuntos (valores intermediários) de métodos aumenta acentuadamente com o aumento da dimensão do problema a ser resolvido, o que é inaceitável em nosso caso. Talvez a alteração do algoritmo de decomposição para um modelo matemático específico reduza a dimensão das tabelas, mas até agora esse algoritmo não existe.

Nesse sentido, foram escolhidos os métodos de solução descritos na modificação do método simplex para o caso de um problema de programação linear inteira. No caso geral, o número de operações do método simplex não admite uma estimativa polinomial (uma classe de problemas para a qual o número de operações é O (en) foi mostrado), mas para o caso do nosso problema o número médio de operações admite uma estimativa polinomial: O (n 3 m 1 / (n-1)) (n é o número de variáveis; m é o número de restrições).

2.2.1. ALGORITMO TOTALMENTE INTEGRAL

Esse algoritmo é chamado de inteiro inteiro, porque se a tabela original consistir em elementos inteiros, todas as tabelas resultantes da operação do algoritmo conterão apenas elementos inteiros. Como o método dual simplex, o algoritmo começa com uma tabela dupla válida. Se a i 0 (i = 1,…, n + m; a i 0 são os coeficientes da função objetivo) são inteiros não negativos, então o problema está resolvido. Se para alguma linha um i 0

Seja dado um problema de programação linear inteira:

maximizar

sob condições

As condições (12) podem ser escritas como


Suponha que para t = 0 (isto é, para a tabela original) todos a ij são inteiros e as colunas (j = 1,…, n) são lexicograficamente positivas. Então, todas as colunas permanecem lexicograficamente positivas durante os cálculos.

Antes de descrever uma maneira de obter uma restrição adicional de uma string em produção, apresentamos uma nova representação de números. Seja [x] o maior número inteiro não excedendo x. Para qualquer número y (positivo ou negativo) e positivo, você pode escrever:

onde (r y é o resto não negativo da divisão de y por). Em particular, ... Portanto, se, então, r = 1. Se, então, r = 0.

A desigualdade adicional introduzida deve ser satisfeita para qualquer solução inteira para o problema (12). Considere alguma equação em uma tabela t (omitindo o índice da linha) com um 0


onde x é o componente correspondente do vetor e são as variáveis ​​não básicas atuais. Você pode expressar x, a 0 e a j usando a representação acima (14):

Substituindo as expressões (16) e (17) em (15) e reorganizando os termos, obtemos:

Uma vez que, e sobre as variáveis ​​xe o requisito de não negatividade é imposto, o lado esquerdo da equação (18) é sempre não negativo. Considere a expressão à direita, entre chaves. Os coeficientes nesta expressão são inteiros e as variáveis ​​estão sujeitas ao requisito de inteiros. Portanto, toda a expressão entre parênteses deve ser um número inteiro. Vamos denotá-lo por s, ou seja:

.

A variável de número inteiro fraco s não é negativa. Na verdade, se s fosse negativo, ou seja, tomaria os valores -1, -2, ..., então a multiplicação por tornaria todo o lado direito da equação (18) negativo, enquanto o lado esquerdo é não negativo.

Considere dois casos e. Para e . Substituindo a expressão de x de (15) na equação (19), obtemos:

A equação (21) deve ser satisfeita para qualquer solução inteira para o problema (12). Observe que se um 0 na equação (21). Portanto, a equação (21) pode ser usada como a linha principal no método simplex. Em particular, você sempre pode escolher grande o suficiente para que o pivô na linha (21) se torne –1, o que preservará o valor inteiro da tabela. A escolha do apropriado afetará a taxa de convergência do algoritmo. Em primeiro lugar, descreveremos o próprio algoritmo. Inicialmente, é necessário tomar uma solução duplamente admissível, que pode ser obtida adicionando a restrição xn + m + 1 = M - x 1 - - ... - xn 0, onde M é uma constante suficientemente grande, e realizar uma iteração com a linha adicionada e com a coluna lexicograficamente mínima tomada como líder. O algoritmo consiste nas seguintes etapas:

Etapa 0. Comece com a matriz duplamente admissível A 0 na equação (13), cujos elementos são inteiros (a matriz A 0 também pode conter elementos não inteiros, consulte a página 306 para isso).

Etapa 1. Entre as linhas com a i 0 0 (i = 1, ..., n + m), então o problema está resolvido.)

Etapa 2. Selecione (a regra de seleção será descrita mais adiante) e escreva uma linha adicional na parte inferior da tabela

Esta linha é selecionada como a linha principal.

Etapa 3. Execute a etapa do método dual simplex, risque a linha extra e volte para a etapa 1.

Para a prova da finitude do algoritmo, consulte as páginas 303-304.

A regra de seleção é formulada da seguinte forma.

Passo 0. Deixe a linha com o número v ser gerada.

Etapa 1. Seja a coluna lexicograficamente mínima entre as colunas com um vj

Etapa 2. Para cada a vj é o maior inteiro tal que (lexicograficamente menos).

Etapa 3. Let, e (a linha v está gerando). Então

.

Etapa 4. Coloque para um vj

A regra de seleção descrita acima permite tornar o elemento pivô igual a -1, mantendo a validade dupla da tabela e ao mesmo tempo a coluna zero será reduzida ao máximo lexicograficamente.

2.2.2 Algoritmo de programação inteira direta

O termo “linha reta” aplicado a um algoritmo de programação inteira denota um método que leva a uma solução ótima pela obtenção de soluções “melhoradas” sucessivamente. Cada uma dessas soluções é admissível no sentido de que satisfaz tanto as restrições lineares quanto a condição de número inteiro. Uma das prováveis ​​vantagens do algoritmo é a capacidade de interromper cálculos antes que uma solução ótima seja obtida, e usar a melhor das soluções obtidas como uma solução aproximada. Além disso, um algoritmo direto pode ser usado em conjunto com algoritmos duais para obter vários algoritmos compostos que podem fazer a transição de uma fase que fornece soluções viáveis ​​duplas para uma fase que fornece soluções viáveis ​​diretamente.

Um precedente natural para o algoritmo direto é o algoritmo de Gomori totalmente inteiro, uma vez que no processo desse algoritmo uma sequência de soluções inteiras duplamente admissíveis é obtida. Deve ser lembrado que o algoritmo de Gomori totalmente inteiro é uma modificação do método dual simplex. A principal diferença desse algoritmo é que o recorte Gomori com o elemento líder igual a –1 é usado como linha principal. Esse recorte é obtido da string de produção, que é definida como uma das possíveis strings principais no método dual simplex. Usar esse recorte como a linha principal preservará a validade dupla e os valores inteiros da tabela após a iteração.

Acontece que você pode modificar de forma semelhante o método simplex de forma a obter um algoritmo que preserva a validade direta e os valores inteiros das tabelas. Para descrever o procedimento computacional, considere o seguinte problema de programação de inteiros:

maximizar

Suponha que a coluna seja selecionada como o pivô e a linha v é a linha do pivô na iteração do método simplex, ou seja, para todas as linhas I em que a é> 0. Antes de realizar o procedimento de eliminação gaussiana no método simplex, adicione o corte Gomori obtido da linha v à tabela:

onde J é o conjunto de índices de variáveis ​​não básicas em (22), s k é uma nova variável fraca (básica) e é uma constante positiva indefinida (temporariamente).

Observe que se definirmos = a vs, cutoff (23) terá duas propriedades importantes. Inicialmente,

Isso significa que a admissibilidade direta da tabela é preservada usando o ponto de corte (23) como a linha principal. Em segundo lugar, ou seja, pivô é 1 (se o recorte for usado como pivô). É fácil verificar (examinando as fórmulas para alterar as variáveis ​​de base) que a transformação de uma tabela simplex com um único pivô preserva o inteiro dos elementos da tabela simplex.

Essas ideias serviram como base para um algoritmo direto na programação de inteiros:

Etapa 0. Comece com uma tabela colunar em que a i 0 0 (i 1) e todos os elementos a 0 j, a ij e a i 0 sejam inteiros.

Passo 1. Verifique o cumprimento das condições a 0 j 0 (j 1); se eles estão satisfeitos, então o fim, a solução básica atual é ótima; caso contrário, vá para a etapa 2.

Etapa 2. Selecione a coluna principal s com 0 s 0. Esta linha serve como uma linha geradora para cortar Gomori.

Etapa 3. Pegue o corte de Gomori da corda de produção e adicione-o ao fundo da mesa, ou seja. adicione a equação (23) às restrições do problema, onde.

Etapa 4. Realize a transformação da mesa usando o corte (23) como a linha principal. A variável fraca s k em (23) torna-se não básica. Volte para a etapa 1.

Para a prova da finitude do algoritmo, consulte as pp. 346-353.

Visto que a escolha da linha de produção é uma tarefa nada trivial, parece que deve haver várias linhas que podem servir como produtores. No raciocínio preliminar, a linha principal do método simplex foi usada como a linha geradora. Esta linha sempre fornece o recorte, que é a linha principal com o elemento principal igual a um. Aparentemente, existem outras linhas na tabela a partir das quais o recorte com as mesmas propriedades pode ser obtido. Vamos supor que o recorte seja obtido pela fórmula:

onde é determinado a partir da condição

Vamos definir o conjunto V (s) como uma coleção de linhas que satisfazem a condição (25).

As duas regras a seguir são exemplos de regras válidas para selecionar uma linha de produção:

Regra 1.

1. Construa uma lista sequencial finita de índices de linha de forma que o índice de cada linha apareça pelo menos uma vez. Vá para 2.

2. Se a lista estiver vazia ou não contiver nenhum índice de V (s), volte a 1.; caso contrário, encontre o primeiro índice v V (s) na lista. Selecione a linha v como produtora. Lista o índice v e todos os índices anteriores. Vá para 3.

3. Selecione sequencialmente a linha v, tomada em 2., como geradora, até v V (s). Depois de v V (s), volte para 2.

Regra 2.

1. Seja V t (s) o conjunto V (s) correspondente à t-ésima tabela. Se V t (s) contém mais de um elemento: V t (s) = (v 1, v 2, ..., vk +2), então, como a linha geradora, escolha uma linha tal que na sequência dos conjuntos V 1 (s 1), V 2 (s 2),…, V t (s) a linha apareceu antes (não depois) que as outras e então foi salva até V t (s); vá para 2.

2. Selecione sequencialmente a linha v tomada em 1. até. Uma vez, volte para 1.

2.2.3. TÉCNICA PARA OBTER A BASE INICIAL ACEITÁVEL

Cada um dos métodos acima pode ser resolvido apenas se o problema de programação linear for direta ou duplamente admissível. Tal admissibilidade significa a presença de uma base inicial admissível no problema original. Se o problema é admissível tanto direta quanto dual, então a solução obtida é ótima. Na maioria dos casos, depois de definir o problema, verifica-se que não é direta nem duplamente admissível. Portanto, apresentamos um algoritmo para a obtenção da base inicial admissível.

Deixe o problema de programação linear ser escrito na forma canônica:

minimizar

sob condições

Todo b i pode se tornar não negativo multiplicando, se necessário, a equação correspondente por –1. Em seguida, você pode adicionar uma variável artificial a cada equação (as variáveis ​​artificiais devem ser não negativas) de forma a formar uma base inicial a partir das variáveis ​​artificiais:

Variáveis ​​artificiais podem ser derivadas de variáveis ​​fracas usadas para transformar desigualdades em equações. Na verdade, se as restrições iniciais do problema de programação linear são dadas na forma de desigualdades:

então, adicionando uma variável fraca a cada desigualdade, obtemos:

Se b i 0, então s i pode ser usado como variáveis ​​de base iniciais.

A diferença entre variáveis ​​artificiais e variáveis ​​fracas s i é a seguinte. Na solução ótima do problema, todas as variáveis ​​artificiais devem ser iguais a zero, uma vez que não existem tais variáveis ​​no problema original. Por outro lado, é bem possível que as variáveis ​​fracas tenham valores positivos na solução ótima. Para que as variáveis ​​artificiais se tornem iguais a zero, a função objetivo pode ser representada da seguinte forma:

onde M i são números positivos suficientemente grandes. A ideia do método corresponde ao fato de que variáveis ​​artificiais recebem preços deliberadamente altos. Este método leva a valores zero das variáveis ​​dummy na solução ótima.

Existe outra maneira de obter a base inicial admissível. Neste método, como no primeiro, as variáveis ​​artificiais são utilizadas como variáveis ​​de base iniciais. Uma nova função objetivo é considerada, que é a soma das variáveis ​​artificiais. É necessário minimizar usando a equação z como uma das restrições. Se o sistema original de equações tem uma solução viável, todas as variáveis ​​artificiais devem se tornar iguais a zero. Portanto, o valor mínimo deve se tornar zero. Se, então o sistema original de equações não tem soluções viáveis. Se, então, você pode omitir a função objetivo e usar a base ótima da forma como a base viável inicial para minimizar z. Na literatura, este método é denominado método simplex de duas fases. Na primeira fase do método, uma base admissível é encontrada minimizando, na segunda, z é minimizado e uma base ótima é obtida.

Considere o seguinte problema de programação linear como exemplo:

minimizar

sob condições

onde todos b i são não negativos.

Se introduzirmos variáveis ​​artificiais e uma nova função objetivo, obteremos a tarefa:

minimizar

,

sob condições

Se subtrairmos todas as equações contendo b i da forma-, obteremos:

-z

onde Sistema (26) é diagonal em relação a A primeira fase do método simplex é a minimização sob as condições (26). Nenhuma restrição é imposta ao sinal z. No decorrer dos cálculos, assim que a variável artificial se torna não básica e seu coeficiente na forma é positivo, a própria variável e o vetor de coluna correspondente são excluídos de cálculos posteriores.

2.3. CARACTERÍSTICAS DE IMPLEMENTAÇÃO PRÁTICA DO SISTEMA

Na prática, não é muito conveniente trabalhar com informações na forma em que são definidas em um modelo matemático. Portanto, antes de tudo, vamos decidir sobre uma forma de organizar os dados ou um modelo de dados.

2.3.1. SELEÇÃO DE MODELO

Um modelo de dados é um conjunto de acordos sobre os métodos e meios de uma descrição formalizada de objetos e seus relacionamentos relacionados à automação de processos do sistema. O tipo de modelo e os tipos de estruturas de dados usados ​​nele refletem o conceito de organização e processamento de dados usado no SGBD de suporte ao modelo ou na linguagem do sistema de programação em que o aplicativo de processamento de dados é criado.

Como parte da solução do problema, é necessário criar um modelo de dados em que a quantidade de informações auxiliares seja mínima, haja uma possibilidade fundamental de acesso multiusuário aos dados e um alto nível de proteção de dados seja garantido .

Atualmente, existem três abordagens principais para a formação de um modelo de dados: hierárquica, em rede e relacional.

ORGANIZAÇÃO HIERARQUICA

Um banco de dados hierárquico consiste em um conjunto ordenado de árvores; mais precisamente, de um conjunto ordenado de várias instâncias do mesmo tipo de árvore. Um tipo de árvore consiste em um tipo de registro "raiz" e um conjunto ordenado de zero ou mais tipos de subárvore (cada um dos quais é algum tipo de árvore). Um tipo de árvore como um todo é um conjunto de tipos de registro organizado hierarquicamente.

A integridade dos vínculos entre ancestrais e descendentes é mantida automaticamente. Regra básica: nenhum descendente pode existir sem seu pai. Observe que a manutenção semelhante de integridade referencial entre registros que não estão na mesma hierarquia não é suportada.

FORMA DE ORGANIZAÇÃO DA REDE

A abordagem em rede para organizar os dados é uma extensão da abordagem hierárquica. Em estruturas hierárquicas, um registro filho deve ter exatamente um pai; em uma estrutura de dados de rede, um descendente pode ter qualquer número de ancestrais.

Um banco de dados de rede consiste em um conjunto de registros e um conjunto de links entre esses registros, ou mais precisamente, um conjunto de instâncias de cada tipo de um conjunto de tipos de registro especificados no esquema de banco de dados e um conjunto de instâncias de cada tipo de um determinado conjunto de tipos de link.

O tipo de link é definido para dois tipos de registros: ancestral e descendente. Uma instância de um tipo de relacionamento consiste em uma instância de um tipo de registro ancestral e um conjunto ordenado de instâncias de um tipo de registro descendente. Para um determinado tipo de link L com um tipo de registro ancestral P e um tipo de registro descendente C, as duas condições a seguir devem ser atendidas:

1. Cada instância do tipo P é um ancestral de apenas uma instância de L;

2. Cada instância de C é descendente de no máximo uma instância de L.

ORGANIZAÇÃO RELATIVA

As principais desvantagens dos modelos de dados hierárquicos e de rede são:

1. Muito difícil de usar;

2. Conhecimento de organização física é realmente necessário;

3. Os sistemas de aplicativos dependem desta organização;

4. Sua lógica está sobrecarregada com detalhes de organização do acesso ao banco de dados.

A interpretação mais comum do modelo de dados relacional parece ser a de Date, que o reproduz (com vários refinamentos) em praticamente todos os seus livros. De acordo com Date, o modelo relacional consiste em três partes que descrevem diferentes aspectos da abordagem relacional: a parte estrutural, a parte de manipulação e a parte integral.

Na parte estrutural do modelo, é fixado que a única estrutura de dados usada em bancos de dados relacionais é uma relação n-ária normalizada.

A parte de manipulação do modelo afirma dois mecanismos fundamentais para manipular bancos de dados relacionais - álgebra relacional e cálculo relacional. O primeiro mecanismo é baseado principalmente na teoria clássica dos conjuntos (com alguns refinamentos), e o segundo - no aparato lógico clássico do cálculo de predicados de primeira ordem. A principal função da parte de manipulação do modelo relacional é fornecer uma medida da relatividade de qualquer linguagem particular de bancos de dados relacionais: uma linguagem é chamada de relacional se não tiver menos expressividade e poder do que a álgebra relacional ou cálculo relacional.

Finalmente, na parte integrante do modelo de dados relacional, dois requisitos básicos de integridade são fixados e devem ser suportados em qualquer SGBD relacional. O primeiro requisito é chamado de requisito de integridade da entidade. O segundo requisito é chamado de requisito de integridade referencial.

Após uma análise preliminar do modelo matemático do sistema e métodos de organização de dados, bem como do software disponível no mercado (métodos hierárquicos e de rede de organização assumem uma abordagem orientada a objetos para organizar dados, e hoje existem tais SGBDs ( por exemplo, Jasmin ou Informix Dynamic Server), mas em No momento do desenvolvimento, não havia possibilidade de usá-los, ao mesmo tempo que existem SGBDs relacionais muito “poderosos” (por exemplo, Oracle 8i)) a escolha foi feita em favor de uma forma relacional de organizar o armazenamento de dados.

2.3.2. DESCRIÇÃO DAS INFORMAÇÕES DE ENTRADA

Todas as informações necessárias para a resolução do problema são definidas antes do início das iterações dos métodos de resolução do problema de escalonamento. Para simplificar, assume-se que as informações fornecidas são constantes ao longo do período para o qual o cronograma está sendo elaborado.

Sem perder um certo grau de generalidade da tarefa, é possível definir um certo conjunto de dados de entrada necessários para formar restrições e resolver o problema e, ao mesmo tempo, comum a todas as variedades de implementações práticas de sistemas. Devido às especificidades da tarefa (a possibilidade de uma adaptação relativamente fácil do modelo matemático para o caso de implementação prática dentro de uma determinada universidade), as formas de documentos de informações de entrada não foram desenvolvidas. Os requisitos das informações de entrada são descritos na Tabela 2.

Tabela 2. Descrição dos atributos das informações de entrada

Nome dos requisitos Características dos requisitos

documentos de entrada

Tipo de Máx. comprimento Precisão

Sobrenome, nome, patronímico do professor;

Número de telefone de contato do professor;

Grau acadêmico;

Título acadêmico;

Nome do grupo;

O tamanho do grupo;

O título do curso ministrado;

Número de horas de aula;

Números de público;

Informações do público;

Nome da matéria lida pelo professor;

O número do grupo onde o assunto é lido;

Informações sobre os públicos onde o assunto é lido.

Além desses dados, o modelo matemático requer alguns dados adicionais que podem ser obtidos após a análise das informações de entrada de forma programática.

2.3.3. DESENVOLVIMENTO DE SUPORTE DE INFORMAÇÃO DO PROBLEMA

Vamos analisar as informações iniciais a fim de determinar a composição e estrutura das informações para a posterior formalização e construção de um modelo de dados lógico da informação (ILM). O modelo matemático acima, bem como informações adicionais da descrição da área de assunto, permitem determinar o papel dos atributos nas informações inter-relacionadas contidas no documento. Com base nesta análise, estabeleceremos as dependências funcionais dos detalhes de acordo com as recomendações e requisitos de normalização de dados, após o que faremos a própria normalização. O objetivo da normalização é reduzir (mas não necessariamente eliminar) a redundância de dados. No entanto, às vezes, alguma redundância de dados é criada propositalmente para melhorar a eficiência do programa. Vamos definir três formas de normalização de banco de dados.

Uma tabela está na primeira forma normal (1NF) se tiver uma chave primária, todos os atributos são tipos de dados simples e não há atributos duplicados. Para estar em conformidade com 1NF, os domínios de atributo devem ser valores atômicos e não deve haver grupos de atributos duplicados. Todos os grupos de atributos duplicados devem ser migrados para a nova tabela.

Uma tabela está na segunda forma normal (2NF) quando está na primeira forma normal e cada atributo não chave é totalmente funcional e dependente da chave primária (ou seja, em 2NF, cada atributo não chave deve ser completamente dependente da chave primária Campos).

Uma tabela está na terceira forma normal (3NF) se estiver em 2NF e não contiver dependências transitivas. Dependências transitivas são dependências funcionais entre atributos não-chave. Qualquer atributo não chave que funcionalmente dependa de outro atributo não chave na mesma tabela cria uma dependência transitiva e deve ser movido para outra tabela.

As dependências funcionais resultantes são bastante triviais e obviamente decorrem do modelo matemático; portanto, não são fornecidas na descrição posterior. Também no que se segue, graus intermediários de normalização são omitidos. Portanto, apresentamos apenas o modelo infológico final do banco de dados (ver Fig. 1.).


Figura 1. Modelo infológico do banco de dados da tarefa de escalonamento de classes




2.3.4. CARACTERÍSTICAS DA FORMAÇÃO DAS LIMITAÇÕES DO MODELO MATEMÁTICO DO PROBLEMA DE PROGRAMAÇÃO

A composição das restrições (1) - (7) do modelo matemático do problema de escalonamento é uma tarefa bastante trivial que pode ser resolvida usando consultas SQL simples e não requer análise preliminar das informações de entrada. Portanto, iremos apenas nos deter em mais detalhes sobre as restrições do formulário (8).

Observe que no modelo matemático do sistema, o assunto que está sendo lido está “amarrado” não a um público específico da performance, mas a um determinado conjunto de públicos. O arranjo de números específicos de públicos é realizado após a solução da tarefa. As restrições da forma (8) só fazem sentido quando os conjuntos de públicos se cruzam. No modelo matemático do sistema, propõe-se levar em consideração todos os pares únicos que se cruzam na forma de restrições. O número dessas interseções pode ser grande, o que pode levar a um grande número de restrições adicionais que afetam negativamente a velocidade dos algoritmos de otimização. No entanto, você pode reduzir significativamente o número de restrições adicionais.

Considere o caso de um arranjo linear de conjuntos que se cruzam (ver Fig. 2.).

Figura 2. Conjuntos que se cruzam linearmente

No caso de tal arranjo de conjuntos de audiências para a condução das aulas, o número total de restrições da forma (8) será n-1, onde n é o número de conjuntos. O arranjo de conjuntos de interseção descrito acima pode ser chamado de linear, uma vez que, neste caso, n conjuntos de interseção estão localizados, por assim dizer, em uma linha. Podemos considerar o caso em que os conjuntos se cruzam de maneira arbitrária (ver Fig. 3.).

Fig. 3. Conjuntos que se cruzam arbitrariamente

Neste caso, o número de restrições da forma (8) pode ser reduzido pela formação dessas restrições por analogia com o caso de arranjo linear de conjuntos. Para fazer isso, é necessário assumir que, por exemplo, os conjuntos B e D que se cruzam com A são um conjunto, determinar a área de intersecção de tal conjunto com o conjunto A, e então realizar as mesmas ações com a área de interseção resultante.

Para obter detalhes, consulte a página 210.

2.4. Resultados do programa

Na implementação prática do sistema, atenção especial foi dada ao problema de escrever o “kernel” do sistema - métodos de resolução do problema e procedimentos para formar restrições. Como a tarefa não era escrever um produto comercial completo, a parte front-end foi escrita para testar o kernel e determinar os limites de aplicabilidade dos algoritmos, portanto inclui um mínimo de funcionalidade e não contém módulos de pré-processamento de dados de entrada.

O kernel do sistema e front-end foram escritos em Delphi 6.0. Os métodos de resolução e algoritmos de formação de restrições são escritos usando tecnologias orientadas a objetos, o que possibilitará no futuro encapsulá-los facilmente em modificações posteriores do sistema, sem violar a integridade da interação de vários algoritmos. O texto dos objetos dos métodos de solução do problema é apresentado no Apêndice 2. O banco de dados foi implementado no SGBD Oracle 8i, as consultas a ele são realizadas na linguagem PL / SQL.

Os dados iniciais da tarefa são inseridos nas tabelas do banco de dados usando formulários de consulta. Uma dessas formas é mostrada na Fig. 3

Fig. 3. Formulário para inserir os dados iniciais

Os dados obtidos com a resolução do problema não são suficientes para mostrar a programação das aulas imediatamente após a resolução do problema, então foi escrito um módulo de pós-processamento. O cronograma final da aula é exibido na forma de uma tabela, um exemplo da qual veja a Fig. 4

Arroz. 4. Um exemplo de um horário de aula

Os algoritmos para resolver o problema foram testados em várias amostras de dados iniciais. Os testes foram realizados em um computador com processador Intel Pentium 350 MHz, o Oracle 8i DBMS foi instalado em um servidor de dois processadores: 2 CPUs Intel Pentium II 350 MHz, 384 MB de RAM; LAN com uma largura de banda de até 100 Mbit / s foi usada como um canal de comunicação. Como dados iniciais de teste, usamos dados reais sobre os grupos, professores e assuntos lidos na forma noturna de educação em ChSU para os anos acadêmicos de 1999/2000, bem como dados iniciais gerados aleatoriamente (os assuntos legíveis foram atribuídos aleatoriamente ao público para as aulas). Em média, de 5 a 10 testes foram realizados para cada dimensão testada dos dados iniciais. Como resultado, obtivemos os dados apresentados na Tabela 2. A Figura 5 mostra um gráfico da dependência do tempo médio de resolução do problema com o número de itens lidos e o número de grupos.

2,5. Análise dos resultados obtidos

Analisando os dados obtidos, é possível tirar algumas conclusões sobre a funcionalidade dos algoritmos de solução e do modelo matemático, suas deficiências e áreas de aplicação.

Em primeiro lugar, o modelo matemático utilizado contém restrições "extras", cuja existência se deve ao modelo linear inteiro, além disso, cada objeto legível no fluxo (o fluxo também pode consistir em um grupo) é atribuído 12 (para o caso de festas noturnas), cada uma das quais é uma variável booleana. Em segundo lugar, o tempo para resolver o problema aumenta drasticamente com o aumento dos dados de entrada. Isso se deve a um aumento acentuado do número de variáveis ​​e limitações do modelo, com o que aumenta a dimensão dos arrays e, consequentemente, o tempo de resolução do problema. Em terceiro lugar, o problema matemático formalizado cobre apenas o problema de agendamento para alunos noturnos, sem levar em conta as transições entre os edifícios. Levar em consideração requisitos adicionais aumentará o número de restrições do problema, o que afetará negativamente a velocidade dos algoritmos de solução.

Vamos prestar atenção à diferença crescente entre o tempo mínimo e médio para resolver o problema à medida que a dimensão do problema aumenta. Esta diferença corresponde ao quão “com sucesso” (o mais próximo do ótimo) foi encontrada a solução básica viável inicial do problema. Portanto, o tempo para resolver o problema pode ser significativamente reduzido encontrando-se “com sucesso” a solução básica inicial viável. Para encontrar essa solução, é melhor usar algoritmos heurísticos e de decomposição.


Conclusões No decorrer do trabalho, foi construído um modelo matemático do cronograma da universidade para o caso de uma forma de estudo noturno sem transições entre edifícios, foram selecionados métodos para a resolução do problema e um modelo para armazenamento dos dados iniciais do problema foi desenvolvido. O modelo inicial de armazenamento de dados, o algoritmo de formalização matemática do modelo e os métodos de solução foram implementados na forma de módulos de software. A velocidade dos algoritmos foi testada em conjuntos heterogêneos de dados iniciais, como resultado dos quais as possibilidades e áreas de aplicação dos algoritmos foram determinadas.

Com base nos resultados do teste, constatou-se que, em termos de velocidade de operação, os algoritmos de resolução do problema dependem fortemente da quantidade de informações de entrada e da solução básica inicial admissível, sendo, portanto, significativamente inferiores às heurísticas e decimais uns. Mas no caso de uma solução heurística para ele (solução), a otimalidade (ou o alcance do máximo global) só pode ser provada por uma enumeração completa de todas as opções possíveis (é claro que, neste caso, o tempo de execução do algoritmo será muito longo), portanto as iterações dos algoritmos heurísticos param quando um certo máximo (não posso dizer local ou global) significa. A solução para tal algoritmo pode ser próxima da ótima, mas não ótima. Neste caso, para atingir o máximo global, pode-se utilizar o método de solução considerado no trabalho, uma vez que o ótimo pode ser alcançado em várias iterações dos métodos de solução descritos.


LITERATURA

1. Lagosha B.A., Petropavlovskaya A.V. Complexo de modelos e métodos para otimizar o horário das aulas na universidade // Economia e Matemática. métodos. 1993. T. 29. Issue. 4

2. Hu T. Programação inteira e fluxos em redes. Moscou: Mir, 1979.

3. Lebedev S.S. Uma modificação do método de Benders de programação linear parcialmente inteira // Economia e Matemática. métodos. 1994. T. 30. 2

4. Lebedev S.S., Zaslavsky A.A. O uso de um método especial branch-and-bound para resolver um problema de transporte generalizado inteiro // Economia e Matemática. métodos. 1995. T. 31. Issue. 2

5. Zaslavsky A.A. Usando a estratégia de estratificação de variáveis ​​em problemas gerais de programação linear inteira // Economia e Matemática. métodos. 1997. T. 33. Issue. 2

6. Lebedev S.S. Sobre o método de indexação de ordenação da programação linear inteira // Economia e Matemática. métodos. 1997. T. 33. Issue. 2

7. Lebedev S.S., Zaslavsky A.A. Método modificado de anotações para problemas de programação booleana // Economia e Matemática. métodos. 1998. T. 34. Issue. 4

8. Zaslavsky A.A. Método combinado de resolução de problemas de mochila // Economia e Matemática. métodos. 1999. T. 35. Issue. 1

Apêndice 1. Possibilidades de produtos de software para sistemas de agendamento.

COM O sistema AUTOR-2 + foi projetado para agendar de forma rápida e fácil as aulas e acompanhá-las ao longo do ano letivo.
UMA VTOR-2 + é um sistema universal. Existem várias versões do programa projetadas para qualquer instituição de ensino:

Escolas secundárias e especializadas (matemática, línguas, etc.), liceus, ginásios;

Escolas técnicas, escolas e faculdades;

Universidades com um prédio acadêmico;

Universidades com vários edifícios de ensino (tendo em conta as transferências entre edifícios).

UMA VTOR-2 + permite que você facilite e automatize ao máximo o complexo trabalho de programação. O sistema ajuda a construir, editar e imprimir facilmente na forma de documentos convenientes e visuais:

Horários das aulas (grupos de estudo);

Horários dos professores;

Cronograma de audiências (escritórios);

Planos educacionais;

Tarifação.

UMA VTOR-2 + tem um design agradável e serviço amigável. O programa é bastante fácil de aprender. Existe um manual detalhado que descreve todos os recursos e métodos de trabalho com o programa.
NS O programa funciona em qualquer computador compatível com IBM, a partir de 486DX com 4 MB de RAM (e superior), ocupa cerca de 1 MB de espaço no disco rígido. Sistema operacional: MS DOS ou WINDOWS 95/98.
V O tempo de trabalho depende do tamanho da instituição educacional e da potência do computador. Um cálculo completo e otimização do horário para uma escola de médio porte (30 turmas, 60 professores, dois turnos) leva cerca de 15 minutos em um computador Celeron-400.

NS O programa possui um algoritmo único e muito poderoso para construir e otimizar o cronograma. A programação automática resultante praticamente não requer revisão manual, ou seja, mesmo com restrições muito complexas e severas, todas as atividades possíveis são colocadas automaticamente. Se houver contradições insolúveis nos dados iniciais, elas podem ser detectadas e eliminadas usando uma unidade de análise especial.

UMA VTOR-2 + permite que você:

Otimize "janelas" na programação;

Considere o intervalo necessário de dias / horas para aulas e professores;

Colocar as aulas de forma ideal nas salas de aula (audiências), levando em consideração as características das aulas, disciplinas, professores e a capacidade das salas;

Leve em consideração a natureza do trabalho e os desejos dos funcionários em tempo integral e parcial;

É fácil combinar ("soldar") várias classes (grupos de estudo) em fluxos para qualquer classe;

Divida as aulas de ensino de uma língua estrangeira, cultura física, trabalho, ciência da computação (e quaisquer outras disciplinas) em qualquer número de subgrupos (até dez!);

Introduzir (além das disciplinas básicas) cursos especiais e eletivas;

Otimize a uniformidade e complexidade do cronograma.

2. Sistema "Agenda" versão 4.0 Moscou - LinTech

Deve-se notar desde já que o programa “Horário” está focado na elaboração de um horário escolar, o uso em universidades e faculdades só é possível com algumas reservas. A programação é realizada no âmbito de um conjunto de condições que são determinadas nas etapas de entrada dos dados iniciais. Uma lista completa de possíveis condições é fornecida abaixo:

- O o número máximo da lição é limitado - ou seja, o número máximo de aulas por dia;

- R uniformidade da distribuição da carga de professores entre os dias do horário;

- R uniformidade de distribuição da carga de aulas entre os dias do horário;

- PARA controle de janelas na agenda dos professores;

- NS O programa leva em consideração o fato de que as classes podem ser arbitrariamente combinadas e divididas (as classes podem ser combinadas em fluxos ou divididas em subgrupos menores, e esses subgrupos, por sua vez, podem servir de base para a união em grupos maiores. Exemplo: na escola # 1859 há 2 turmas para idosos, mas cada uma dessas turmas tem dois subgrupos de especialização, as turmas de assuntos gerais são ministradas para toda a classe de uma vez e as disciplinas de especialização são ministradas separadamente. Mas, como os subgrupos de especialização são muito pequenos e não há professores suficientes, em algumas disciplinas os subgrupos 11a e 11b também podem ser combinados (por exemplo, em línguas estrangeiras) - isso dificulta a continuidade do cronograma de aulas (é necessário garantir a continuidade do cronograma para cada uma das subgrupos);

- H A presença de vários turnos - neste caso, as aulas individuais devem chegar mais tarde do que as turmas do primeiro turno, além disso, torna-se mais difícil controlar as janelas do horário dos professores, se houver professores atuando nos dois turnos - em neste caso, no horário desses professores, suas turmas devem ser “agrupadas” em torno do cruzamento de turnos;

- Tenho a palavra de vincular os professores à sala de aula - cada professor tem “sua” sala de aula, na qual conduzem todas as suas aulas;

- H A presença de uma mudança "flutuante" - quando a hora de início da primeira aula não é determinada com precisão, porque é formado dinamicamente, dependendo da liberação de turmas associadas, professores, públicos;

- PARA Controle da entrada da programação do objeto (aula, professor, público) na faixa de operação permitida (no mapa de restrições de tempo). Por exemplo, para um professor no mapa de limitações de tempo, costumam ser indicados dias metódicos, por vezes, números separados de aulas - enfim, são indicados os cargos para os quais é impossível instalar aulas com a participação deste objeto;

- H A disponibilidade de disciplinas combinadas - como “língua estrangeira / informática”, “informática / trabalho”, etc. - quando a turma é dividida em subgrupos;

- Tenho a palavra de vinculação de disciplinas a públicos - a realização de aulas em disciplinas individuais só é possível em um público estritamente definido ou em uma lista de públicos (educação física, trabalho, etc.);

- COM sair do horário, tendo em conta que em algumas disciplinas não chega toda a turma às aulas, mas sim o seu subgrupo. Para que o outro subgrupo não circule pela escola neste horário, essas aulas podem ser definidas estritamente apenas como a primeira ou a última aula do horário de aula;

- “V Manter paralelos "- para alguns professores, é necessário levar em consideração o fato de as aulas exigirem uma preparação demorada (por exemplo, aulas de química), neste caso, a programação diária do professor tenta colocar as aulas em blocos de paralelos, por exemplo , primeiro grau 5, depois 7º, etc., ou, ao distribuir entre os dias, coloque as classes em diferentes paralelos em dias diferentes;

- E Por vezes, na elaboração de um horário, é necessário levar em conta a nuance que para algumas disciplinas o horário é conhecido com antecedência - neste caso, tais aulas são apresentadas como imóveis (fixas);

- PARA controle de combinações proibidas de disciplinas abrangidas em um dia do horário de aula - por exemplo, é indesejável que “educação física” e “trabalho” sejam realizados no mesmo dia;

- V o cumprimento da condição das sequências de disciplinas exigidas - quando é necessário garantir a instalação de turmas em que as aulas deverão ocorrer em determinada sequência, por exemplo, física-astronomia, etc .;

- H O número de aulas associadas a públicos - a maior parte das aulas dessas aulas são ministradas nesta sala de aula particular, com exceção daquelas aulas para as quais é necessária uma sala de aula especializada;

- H A necessidade de organizar aulas em disciplinas individuais para duas aulas consecutivas ("pares", "faíscas"), e esta condição pode ser estrita (em nenhum caso interromper as "faíscas" das aulas), ou pode ser preferível (se é impossível mover-se ao longo de duas classes, "faísca" pode ser quebrada);

A circunstância é levada em consideração quando em algumas disciplinas o arranjo é permitido apenas em aulas individuais.

3. Sistema "Metodista"

Disponível em duas versões.

O virtual.

Produzido sem módulo de agendamento automático. Recursos da versão virtual:

Pesquisa rápida nas listas de professores, salas de aula, turmas (grupos), disciplinas, edifícios;

Obtenção de informações de referência para cada elemento da lista encontrada (lotação da sala de aula, todos os auditórios do prédio X, endereço e telefone do professor, relação do departamento, carga horária por disciplina, carga horária do professor, etc.);

Controle e capacidade de realocação de horas entre semanas para qualquer disciplina acadêmica. grupos;

Verificação automática de possíveis erros de entrada de dados (correspondência da quantidade total de horas e por tipo de ocupação, não alocação de professores por subgrupos, orçamento de tempo do grupo acadêmico e do professor, discrepância de horas nos grupos de fluxo, etc.);

A capacidade de armazenar sistematicamente (e pesquisar rapidamente) informações adicionais (não obrigatórias para agendamento): fotos de professores, curadores de grupos de estudo (professores de turma), dados sobre representantes de comitês de pais, cargos, títulos acadêmicos e títulos responsáveis ​​pelo público, ...

Recebimento rápido de informações completas sobre a combinação de fatores (todas as turmas do curso, todas as disciplinas do professor X, indicando a carga por semana e tipos de aulas, quais disciplinas podem ser realizadas na aula de informática, desejos pessoais de realização aulas de qualquer professor, uma lista de feriados do grupo sírio, etc. etc.);

A capacidade de visualizar, imprimir e editar a programação finalizada com verificação da exatidão das alterações (ocupação de auditório, professor, grupos / subgrupos, ...);

A qualquer momento, você pode solicitar um módulo para gerar uma programação para os dados preparados;

A programação é gerada em seu computador com a capacidade de alterar configurações, controlar, editar, etc. (sem possibilidade de mudança de horários, disciplinas, professores, ...);

Se for encontrada a necessidade de uma ligeira alteração (até 10%) nos dados iniciais (erros, acréscimos repentinos são encontrados), é possível reordenar o módulo de agendamento por uma pequena taxa;

Você pode mudar para a versão padrão a qualquer momento;

O Metodista é o padrão.

Além dos recursos da versão virtual, inclui:

Módulo de agendamento automático;

Distribuição e controle da carga didática;

Cumprimento rigoroso da sequência de aprovação na disciplina (aulas teóricas - 2 horas, práticas - 4 horas, laboratório ...);

Agendamento para qualquer tipo de instituição de ensino: semanal ou semestral (de 1 a 23 semanas);

Levar em consideração a união de grupos (classes) em riachos e / ou dividi-los em subgrupos;

Consolidação de salas de aula especiais (aulas de informática, laboratórios de línguas, piscina, ...);

Contabilização do emprego de professores e salas de aula (trabalho a tempo parcial, utilização de uma base de formação comum);

Contabilização do tempo de transição entre edifícios;

Dias de folga e feriados - gerais e para grupos de estudo individuais (nacionais, religiosos, feriados);

Indicação dos motivos do “insucesso” das aulas (o público está ocupado, o professor é nomeado num dia indesejável da semana) com possibilidade da sua correcção “manual”;

Possibilidade de múltiplas “melhorias” automáticas do cronograma;

A capacidade de alterar a importância dos fatores levados em consideração durante o agendamento;

A possibilidade de introduzir as prioridades dos professores - o grau em que seus desejos individuais são levados em consideração;

Limitações da funcionalidade "Metodista":

As programações de vários turnos são limitadas a um número máximo de aulas por dia - 7;

As aulas começam sempre com a primeira aula / par (se necessário, é possível atribuir uma "aula gratuita" à primeira dupla);

O tempo de mudança não é levado em consideração (por exemplo, para verificar a possibilidade de movimentação entre edifícios);

O "nível de dificuldade" das aulas não é levado em consideração para sua distribuição racional ao longo da semana (embora seja possível fazer isso indiretamente);

A duração das aulas é constante (é impossível traçar um horário para uma aula de 30 minutos nas classes iniciais e de 45 minutos nas classes superiores).

Apêndice 2. Lista do módulo do programa de métodos para resolver o problema de agendamento automático

tipo MyArray = array de array de real;

MyArray_X = array de inteiro longo;

procedimento Step_Dual_simplex (var a: MyArray; m, n, i1, j1: inteiro);

(produz uma etapa do método dual simplex,

elemento principal - a)

var i, j: inteiro;

b, b1: array de real;

SetLength (b, m); Setlength (b1, n);

para i: = 0 a m-1 do b [i]: = a;

para i: = 0 a n-1 faça b1 [i]: = a;

para i: = 0 a m-1 faça

para j: = 0 a n-1 começam

if (i = i1) e (j = j1) então a: = 1 / b

if (i = i1) então a: = b1 [j] / b

if (j = j1) então a: = - b [i] / b

senão a: = a-b [i] * b1 [j] / b;

para i: = 0 a n-1 faça a: = 0; a: = - 1;

Finalizar (b); Finalizar (b1);

função Lexikogr_few (a: MyArray; m, n: inteiro; i, i1: inteiro): booleano;

(a primeira coluna é lexicograficamente menor que a segunda)

Lexikogr_few: = false;

enquanto (a = a) e (j

função Find_nu (a: MyArray; m, n: inteiro; i, i1: inteiro): inteiro longo;

(i é o índice da coluna lexicograficamente mínima)

enquanto (a = a) e (j

if (j 0) then Find_nu: = Round (Int (a / a));

procedimento Full_Integer_Simplex (var x: MyArray_X; a: MyArray; m, n: inteiro);

(Algoritmo de problema de número inteiro linear totalmente inteiro

programação,

ver Hu T. "Integer Programming and Streams in Networks", pp. 300-309,

a é uma matriz de tamanho m + n + 2 * n + 1, por analogia:

É necessário encontrar o máximo

z = - 10x1 - 14x2 - 21x3

2x1 + 2x2 + 7x3> = 14

8x1 + 11x2 + 9x3> = 12

9x1 + 6x2 + 3x3> = 10,

o procedimento retorna um vetor X, os primeiros m componentes dos quais são a solução desejada,

se o último componente do vetor = 1, então a solução não existe ou é = infinito)

var i, i1: inteiro;

enquanto (i = 0) do Inc (i); (produzindo corda)

enquanto (j = 0) faça Inc (j);

para i1: = 1 a n-1 faça if (a

coluna mínima)

(seleção alfa)

(Writeln (i, "", j); readln;)

para i1: = 1 a n-1 faça se um

j1: = Find_nu (a, m, n, j, i1);

se (j1> 0) e (-a / j1> alfa) então alfa: = - a / j1;

(writeln (alfa, "", i, "", j); readln;)

(obtendo o recorte Gomori)

para i1: = 0 a n-1 faça se a> 0 então a: = redondo (Int (a / alfa))

a: = redondo (Int (a / alfa));

se Frac (a / alfa) 0 então a: = a-1;

Step_Dual_simplex (a, m, n, m-1, j);

até (i> = m-1) ou (j> = n);

para i: = 0 am-1 faça x [i]: = redondo (a);

se j> = n então x: = 1 senão x: = 0;

procedimento Step_One_Simplex (var a: MyArray; m, n, i: inteiro);

var i1, i2: inteiro;

(Método inteiro direto de uma etapa (a string de produção é a última

i é a coluna produtora))

para i1: = 0 a m-2 faça a: = a / (- a);

para i2: = 0 a n-1 faça

para i1: = 0 a m-2 faça

se i2i então a: = a + a * a;

procedimento Direct_Integer_Simplex (var x: MyArray_X; a: MyArray; m, n: inteiro);

(Algoritmo inteiro direto para um problema de programação linear inteira,

ver Hu T. "Integer Programming and Streams in Networks", pp. 344-370,

a - matriz de tamanho m + n + 3 * n + 1 por analogia:

precisa ser maximizado

z = x1 + x2 + x3

4x1 + 5x2 + 2x3

então a matriz a se parecerá com:

10 1 1 1 - o primeiro número nesta linha é o máximo aproximado da soma das variáveis ​​não básicas

0 0 0 0 - corda para cortar Gomori,

o algoritmo funciona apenas para a> = 0

retorna o vetor X - no lugar da matriz de identidade, a solução desejada,

se o último componente contiver um - um erro de cálculo)

var i, j, i1, j1: inteiro;

b, b1, b2: array de bytes;

SetLength (b, m); SetLength (b1, m);

para i: = 0 a m-1 faça b1 [i]: = 0;

(verificando a condição de otimalidade)

para j: = 1 a n-1 faça se a

enquanto o bool começa

(encontre a coluna de produção)

bool: = falso; j1: = 0;

para j: = 1 a n-1 começam

se a> 0 então

para i: = 0 a m-3 faça a: = a / a;

se não for bool, comece j1: = j; bool: = true; end else se Lexikogr_few (a, m, n, j, j1)

(procure por uma string em produção)

para j: = 1 a n-1 faça

se a> 0 então

para i: = 0 a m-3 faça a: = a * a;