Segundo Checkpoint 2020

Na terça-feira, dia 08/09, ocorreu o segundo Checkpoint do Desafio UniSoma 2020! Neste, Jessica Moia e Hugo Moraes apresentaram sobre integrações, consistências, banco de dados e responderam as perguntas enviadas durante a última semana. Abaixo segue o vídeo da Live do Youtube:


Seguem todas as perguntas e as respectivas respostas de todos os grupos:

1) Analisando os dados na parte dos alunos já matriculados, notamos que nenhum aluno repete de ano e que existem alunos do terceiro ano que vão continuar na ONG. Entretanto o planejamento de alocação pedido na planilha é para o ano de 2021. Concluímos que estes dados parecem ser de um replanejamento ao longo de 2020 ainda. Esta análise está correta ? Caso esteja, como devemos proceder para o planejamento do ano de 2021, em relação aos alunos que possam repetir e os que continuarão na ONG ?

Esse tipo de situação foi colocada de propósito. Se os alunos estão no terceiro ano e estamos planejando de um ano para o outro, mesmo que esteja indicado que continuam na ONG, eles não entram no planejamento se não forem reprovados (essa poderia ser uma consistência de alerta, por exemplo!). Como não há alunos que repetem de ano no cenário que enviamos, vocês podem mexer livremente nos dados para criar esse tipo de situação. Inclusive, esse tipo de alteração nos dados de entrada é recomendada para testar situações diferentes, especialmente se tratando dos parâmetros.

2) A nomeação das turmas abertas segue o padrão da região em que a escola está localizada ,o ano correspondente da turma e uma ordem alfabética caso haja mais de uma turma do mesmo ano na escola. Contudo, existem duas escolas na região-ZO, mas somente uma tem turmas abertas. Caso seja necessário abrir turmas na segunda escola, como devemos nomeá-las ?

Vocês podem nomear as turmas da maneira que acharem mais adequada, só tomando o cuidado de não dar o mesmo nome para turmas de escolas distintas. Sugerimos que usem algo próximo ao padrão que existe nos dados de entrada, porque é o que a ONG já está acostumada.

3)  Nos dados fornecidos, na planilha “parametro”, o valor do “limite_custo” seria o limite custo total da ONG, ou o limite custo de cada turma?

Esse é o limite de custo total (ou orçamento) da ONG.

4) Conforme a descrição completa do desafio no site da UniSoma, “Já os candidatos de formulário, durante sua inscrição, selecionam qual escola desejam ter aula. Sua série deve ser calculada a partir do ano de referência que consta no próprio formulário.” Nossa dúvida é, por exemplo, João, um aluno inscrito, apresenta ano de referência igual a 2019 e a série é igual a Primeiro Ano. Ele foi escolhido no ano de 2020, a priori, para a turma de Segundo Ano na ONG. Ele “Vai participar”, mas na verdade ele reprovou, ou seja, ele deveria cursar novamente o Primeiro Ano no ano de 2020. Então na seção “status”, não deveria ter a opção de “Vai participar e foi aprovado” e “Vai participar e foi reprovado”? Ou João não pode ser reprovado?

A ONG não possui a informação se o candidato de formulário foi reprovado ou não, então vocês devem assumir que eles não reprovam. Caso o exemplo que você descreveu aconteça, o usuário pode fazer uma alteração manual nos dados e fazer uma nova rodada de otimização.

5) Gostaríamos de confirmar o que seria “ativa” e “ordem” na seção “serie”. “Ativa” quer dizer que, por exemplo, há turmas de Primeiro ano do  Ensino Médio, certo?  E “Ordem” seria o ordem de preferência para o critério de desempate? Sendo que quanto menor for o número, mais preferência essa série vai ter? (No caso Nono ano do Ensino Fundamental seria a que tem mais preferência).

Seu entendimento está correto. A ordem também permite saber a sequência das séries (nono ano precede o 1o ano, etc).

6) O balanceamento da quantidade de alunos na turma é um problema? Ou apenas a maximização do número total de alunos? Em outras palavras, fazer uma turma de 20 alunos e outra de 1 alunos é sempre melhor do que 2 turmas de 10 alunos?

O foco é a maximização de alunos em uma turma. Quando são formadas turmas muito pequenas, a ONG faz ações de divulgação para trazer mais interessados e completar essas turmas.

7) Os limites de custos por aluno e custo por voluntário (métricas mencionadas no enunciado) estão disponíveis? Devemos levar em conta?

Estão e devem ser levados em conta sim. Essas informações estão na tabela “parametro” (“custo_aluno” e “custo_professor”).

8) Quando um aluno repete de ano, ele pode ser realocado a qualquer turma do ano anterior ou há algum critério/restrição para isso?

Sim, o aluno reprovado pode ser realocado a qualquer turma do ano anterior.

9) Conforme a descrição completa no site da Unisoma, “Além disso, devem se manter na mesma turma que seus colegas da turma anterior, exceto quando são reprovados.” Então, por exemplo, João, Maria, Pedro e Nicole são estudantes da turma ZO_1A. João e Maria foram aprovados e querem continuar, logo, eles podem ser alocados em qualquer turma do 2 ano na ZO (na mesma escola) e eles devem estar obrigatoriamente na mesma turma, certo? No caso do Pedro e Nicole, eles foram reprovados e querem também continuar, logo, eles precisam estar necessariamente na mesma turma do primeiro ano (na mesma escola) da ZO? Ou Pedro pode estar em uma turma e o Nicole na outra? Eles precisam estar necessariamente na turma ZO_1A ou podem ser alocados em outras turmas da mesma escola, série e região?

No caso dos aprovados, alocação na mesma turma é obrigatória, então, sim, João e Maria devem ser alocados na mesma turma de 2o ano. Quando reprovados, não há nenhuma obrigatoriedade, ou seja, Pedro e Nicole podem ser alocados em qualquer turma da mesma escola, série e região e podem, também, estar em turmas diferentes.

10) Conforme a descrição completa no site da Unisoma, “Esse planejamento pode ser realizado de um ano para o outro ou dentro do mesmo ano. Caso seja dentro do mesmo ano, a turma dos alunos já matriculados não muda, exceto quando há necessidade de juntar duas turmas.” No caso que seja planejamento dentro do mesmo ano, “a turma dos alunos já matriculados não muda”, e na situação na qual apenas uma turma (turma X), por algum motivo, perdeu a metade dos seus alunos, e as outras turmas estão quase cheias, não poderíamos adicionar alunos inscritos nessa turma X?

A ideia do planejamento dentro do mesmo ano é justamente trazer novos alunos para turmas que tenham vaga. Quando se diz que “a turma dos alunos já matriculados não muda”, significa que os alunos já matriculados não podem mudar de turma (a não ser em caso de turmas pequenas que serão agrupadas). Não é que a lista de alunos de uma turma não possa mudar (ela pode, sim, aumentar com a matrícula de novos alunos).

11)  Devemos fazer apenas um modelo matemático para o problema ou poderíamos fazer dois modelos, um para planejamento de um ano para o outro e outro modelo para planejamento dentro do mesmo ano?

Podem ser feitos dois modelos, desde que, para o usuário, seja uma visão única, isto é, o modelo de dados de entrada (e de saída) é o mesmo. Também deve-se pensar na integração com a ferramenta da Web: o script deve aceitar os dados no formato de entrada determinado e devolver os resultados no formato de saída determinado.

12) Podemos fazer um tratamento dos dados (usando Python) antes de inserir os mesmos no nosso modelo matemático? Por exemplo, na tabela “formulario_inscricao”, queremos criar uma outra coluna chamada de “série que irá participar no momento do planejamento” a partir dos dados da “serie_id” e “ano_referencia” do aluno inscrito e “ano_planejamento”. Outro exemplo seria criar, a partir dos mesmos dados, uma outra coluna que elimine os alunos não aptos a participar da ONG no ano de planejamento, porque eles apresentam na coluna “série que irá participar no momento do planejamento” 7 ano ou 8 ano do Ensino Fundamental.

Aqui também vale: o script deve aceitar os dados no formato de entrada determinado e devolver os resultados no formato de saída determinado, para garantir a integração com a Web. Entre esses dois pontos, podem ser feitos quaisquer tratamentos que julgarem necessários.

13) No caso dos alunos inscritos que apresentam o ano_referencia igual a, por exemplo, 2019, e série_id igual a 4 (Segundo ano do Ensino Médio). Se eles foram selecionados no planejamento de 2021, eles seriam alocados para o Terceiro ano do Ensino Médio? Ou deveríamos desconsiderar essa pessoa? E no caso da série_id igual a 4 e o ano_referencia ser igual a 2017, para o planejamento de 2021, eles seriam alocados para o Terceiro ano do Ensino Médio? Ou deveríamos desconsiderar essa pessoa?

Se o aluno está no segundo ano do ensino médio em 2019, no ano de 2021 ele já terá se formado na escola. Logo, esses alunos devem ser desconsiderados do planejamento.

14) Temos alguma restrição com relação à quantidade de professores? Conforme a descrição, “Matemática em Movimento já ajudou mais de 200 alunos e conta com cerca de 100 voluntários.” Estamos pensando se esses 100 voluntários seriam os professores.  

Não há restrição ao número de professores. O número de professores é fixo por turma e, consequentemente, o custo atrelado também é. Assim, o número de professores só deve ser levado em conta para o cálculo do custo total.

15) Suponha que João apresente o turma_id=2 (ZO_1A) no ano de 2020. Ele foi aprovado e ao fazer o planejamento em 2021, ele obrigatoriamente tem que estar alocado em uma turma, nossa pergunta é se ele deve ser obrigatoriamente na mesma escola do ano 2020 ou apenas deve estar na mesma região.   

  Ele deve ser alocado na mesma escola.

16) Como informação de entrada, coloca-se, por exemplo, 2021, logo, ao cadastrar os alunos, o código da turma é referente ao ano de 2020, certo?

Correto, a turma no cadastro de alunos é a última cursada pelos mesmos.

17) Nos percebemos, pelos dados fornecidos, que tem alunos matriculados na turma_id igual a 10, ou seja, terceiro ano. Se ele quiser continuar, isso quer dizer que ele vai querer estudar de novo o terceiro ano? Aí seria então na mesma sala que ele tinha cursado ou pode ser outra sala? Ou ele deve ser desconsiderado do planejamento, já que terá se formado na escola?

Esse tipo de situação foi colocada de propósito. Se os alunos estão no terceiro ano e estamos planejando de um ano para o outro, mesmo que esteja indicado que continuam na ONG, eles não entram no planejamento se não forem reprovados (essa poderia ser uma consistência de alerta, por exemplo!). 

As consistências devem ser desenvolvidas pelos grupos da trilha da web, mas isso não impede que os grupos de modelagem tratem as situações de alerta no modelo (nesse caso, desconsiderando os alunos).

18) Imaginamos uma situação na qual no ano 2020 há apenas uma turma (turma X) da Nona série, e todo foram aprovados. Não há inscritos para a Nona série no ano de 2021, então a turma X pode ser fechada?

Sim, a turma é fechada. 

19) Pelo enunciado, “Como a ONG dá prioridade para os alunos que já estão matriculados, eles devem ser obrigatoriamente alocados em alguma turma.” Então, por exemplo, na situação na qual somente há 2 alunos matriculados (no ano de 2020) na turma Z0_1A (considere também que somente há essa turma na escola 1 que tenha alunos do Primeiro ano) e suponha que eles foram aprovados e querem continuar. No entanto, não há nenhum inscrito que vai estudar o Segundo ano na escola 1 em 2021 (ano de planejamento). Dessa forma, teríamos apenas dois alunos matriculados que vão estudar o Segundo ano em 2021, ou seja, teríamos que formar, obrigatoriamente, uma turma para acolher somente esses dois alunos, certo?

Sim! A ONG procura sempre acolher os interessados, ainda que fiquem com turmas pequenas.

20)  Suponha a seguinte situação, no ano de 2020, há 15 alunos na turma ZS_2A e 14 alunos na turma ZS_2B. Após verificar os alunos que reprovaram e aqueles que não querem continuar, sabemos que no ano de 2021, somente há 8 alunos que eram da turma ZS_2A e 7 alunos que eram da turma ZS_2B vão cursar o Terceiro ano na ONG. Logo, ao fazer esse planejamento no ano de 2021, sabemos que, conforme o enunciado, esses 8 alunos devem ser alocados na mesma turma do Terceiro ano e esses 7 alunos também devem ser alocados na mesma turma do Terceiro ano. Nossa dúvida é se podemos alocar os 8 alunos e os 7 alunos na mesma turma, ou eles devem estar obrigatoriamente em turmas diferentes (da mesma série). 

Podem ser alocados na mesma turma, principalmente se não houver verba/candidatos de formulário suficientes para fechar duas turmas.

21)  Conforme o enunciado, “além da informação das turmas sugeridas pela solução e turmas pré-existentes (ambas somente nos casos em que há algum aluno alocado). As turmas pré-existentes devem ser marcadas como aprovadas por padrão.” Ficamos confusos com relação à afirmação “As turmas pré-existentes devem ser marcadas como aprovadas por padrão”. Considere que no ano de 2020, temos a turma Z0_9A, considere também que no ano de 2020, os alunos dessa turma não reprovaram e todos querem continuar. Então, no planejamento do ano 2021, todos os alunos da turma Z0_9A seriam formados por alunos do formulário de inscrição (e não alunos matriculados), então essa turma Z0_9A seria pré-existente e marcada como aprovada por padrão? Ou apenas as turmas que apresentam alunos matriculados e alunos do formulário de inscrição são aprovadas por padrão? Ou apenas as turmas que apresentam somente alunos matriculados são aprovadas por padrão? 

As turmas aprovadas por padrão são as que já existem no cadastro de entrada. No caso, como a turma ZO_9A já existia em 2020, se houver alunos nela no planejamento de 2021 ela já fica marcada como aprovada.

22) O modelo deve prever a junção de turmas? Se houver 2 turmas da mesma escola e da mesma série, ambas já com código, mas que podem ser unidas (não ultrapassam o limite máximo de alunos), podemos unir? (Nos dados atuais isso não é um problema, mas prevendo o crescimento da ONG, pode facilitar e otimizar o resultado.)

Sim! Satisfeita a condição de número de alunos, as turmas podem ser unidas.

23) Suponha a situação na qual temos todos os matriculados já alocados. Ainda temos verba sobrando e, consequentemente, alocamos os alunos inscritos. Na lista de inscritos, ordenamos eles conforme a ordem de inscrição, isto é, os primeiros alunos se inscreveram antes e possuem preferência. Percebemos que os primeiros 3 alunos vão cursar a Terceira série no ano de planejamento 2021, logo em seguida temos 15 alunos que vão cursar a Segunda série e por fim 10 alunos que vão cursar a Primeira série. Nesse instante, nota-se que há apenas uma turma com 20 pessoas de Terceiro ano composto por alunos já matriculados e os reprovados. Nossa dúvida é se deveríamos criar uma turma nova da Terceira série somente para esses 3 alunos inscritos que possuem preferência ou criamos uma turma nova da segunda série que terá 15 alunos inscritos.

A ONG sempre quer maximizar o número de alunos atendidos. Esse deve ser o primeiro critério a se considerar ao decidir qual turma abrir. Portanto, neste exemplo, deve ser aberta a turma do segundo ano.

24) Os alunos matriculados podem ser alocados em turmas sugeridas, certo? Conforme os dados de entrada fornecidos, temos apenas uma turma ZO_2A para duas turmas ZO_1A e ZO_1B. Logo, no planejamento de um ano para o outro, se todos os alunos de ZO_1A e ZO_1B forem aprovados, e vamos supor que a quantidade total dessas duas turmas seja maior que 20, ou seja, não podemos juntar as turmas,. devemos obrigatoriamente sugerir uma turma nova na ZO para a Segunda série, certo? E o usuário tem a obrigação aceitar essa turma sugerida (composto por alunos matriculados)?

Sim, o usuário deve aceitar essas turmas.

25) Suponha a situação na qual temos 100 alunos inscritos para uma escola X. Ordenamos eles conforme a data de inscrição, ou seja, os primeiros da lista se inscreveram antes do que os últimos da lista. Os 24 primeiros da lista são do Nono ano, os 25 seguintes são do Terceiro ano, a seguir 25 do Segundo ano e, no final da lista, 26 alunos do Primeiro ano. Suponha que a verba nos permite criar apenas uma turma, criaria uma turma de 20 pessoas para o Nono ano (que tem maior preferência pela antecedência de inscrição) ou criaria uma turma de 20 pessoas para o Primeiro (que tem maior demanda, já que tem 26 alunos inscritos).

Entendemos que essa questão é resolvida com a mudança na regra de prioridade para abertura de turmas: havendo dinheiro para abrir uma turma nova, devem ser avaliadas as duas maiores demandas por série. Se a diferença entre essas demandas for maior que 25% do número de alunos atendidos em uma turma (considerar o número padrão por turma), deve ser priorizada a série de maior demanda. Se a diferença for menor ou igual a 25% da capacidade, deve ser considerado empate e, então, deve ser priorizada a série mais nova, ou seja 9o ano tem maior prioridade, seguido do 1o ano, 2o ano e, por fim, 3o ano com a menor prioridade. 

26) O limite de custo é o custo total da ONG ou é limite de custo por sala?

É o limite de custo total (ou orçamento) da ONG.

27) Existe número de professores pedagógicas/ACD por turma, ou todos eles lecionam nas 4 séries?

Não é necessário se preocupar com professores; somente garantir que o custo (fixo) dos mesmo seja considerado.

28) Só pra confirmar o que entendi no checkpoint: é possível que haja inscrição de mesmo aluno na lista de espera por mais de uma vez, certo?

Sim, isso acontece com certa frequência e deve ser levado em conta para evitar que um único aluno “ocupe” duas vagas. 

Conforme a descrição completa do desafio, os grupos da trilha da web devem criar uma consistência de alerta para identificar essas situações. Porém, é recomendado que os grupos de modelagem tratem os casos no modelo, justamente para evitar a situação descrita no parágrafo anterior.

29) A confirmação do aluno do formulário de inscrição, se vai matricular ou não, acontece após a saída dos dados ou antes?

Após a saída dos dados. A ONG precisa do resultado do modelo (ou seja, da sugestão de turmas e novos alunos) para entrar em contato com os candidatos e confirmar se irão se matricular ou não.

30) Poderia explicar um pouco sobre “A prioridade de convocação desses candidatos se dá pela ordem de inscrição” . ?

Quando a ONG precisa preencher uma turma já existente com candidatos do formulário, ela leva em conta a data de inscrição para decidir qual candidato tem prioridade (os que se inscreveram a mais tempo são convocados primeiro). Lembrando que isso não é necessariamente verdade para abertura de novas turmas, já que o foco é maximizar o número de alunos. Se, por exemplo, um grupo de candidatos que se inscreveu a menos tempo formar uma turma maior que um outro grupo mais antigo, a ONG dá preferência para abrir uma turma com a maior quantidade de alunos.

Estamos a disposição para responder as próximas dúvidas.