Package: matmov
matmov - educaMatProjeto back-end do Desafio Unisoma - 2020Gabriel Passos - IMECC - UNICAMPFlávia C. Gachet - FCA - UNICAMPInstalaçãoOferecemos duas maneiras para instalar o program. A primeira delas é manual e requer uma pasta com os arquivos do pacote desenvolvido no local em que o programa será executado, além de instalação ou atualização manual de pacotes de terceiros (descritos na seção Pacotes e Versões). Observamos que houve uma
atualização da versão doortools.O pacote desenvolvido também foi disponibilizado noPyPIpara fácil instalação e execução. Nesse caso, se você possuir opipinstalado, basta executar:$pipinstallmatmovAlgumas outras possibilidades para instalação através dopip:$phyton-mpipinstallmatmov
$pip3installmatmov
$python3-mpipinstallmatmovObs: a opção a ser usada pode depender de como o Python 3 está instalado no seu computador.Com a instalação executada peloPyPI, basta descompactar o arquivoinstalacaoPip.zipe executar o arquivomain.pycomo sera indicado posteriormente.Caso seja preferível não usar oPyPI, mas sim rodar diretamente com os arquivos.pydesenvolvidos, os arquivos necessários foram encaminhados por e-mail e estão disponíveis no repositório:https://github.com/gabpassos/matmov.Para rodar com os arquivos do pacote na pasta, sem instalar peloPyPI, basta descompactar o arquivoinstalacaoLocal.zipe executar o arquivomain.pycomo sera indicado posteriormente.Executando o programaO conteúdo da pasta em que o programa será executado depende do método de instalação utilizado, entretanto, os anexos enviados contemplam as duas possibilidades de forma que facilite o processo de execução e avaliação. Destacamos que tudo o que esta descrito aqui sera enviado em anexo e está também disponível norepositório do GitHubNo local de sua preferência para executar nosso código deve existir a pastadata. Deve haver também um arquivomain.pycom um conteúdo apropriado (arquivo que executa os metodos do pacote desenvolvido). A pastadatapossui os arquivosSQLite databasecom os casos de teste.Se a instalação for feita peloPyPI, basta editar a main da forma que for desejável e então executar o arquivomain.py. Caso seja preferível rodar com os arquivos diretamente, sem instalar peloPyPI, deve haver uma terceira pasta, com nomematmovque contém os arquivos do pacote (enviada em anexo). Em seguida, basta editar a main da forma que for desejável e então executar o arquivomain.py.Estrutura damain.pyimportmatmovasmm#Para selecionar o arquivo, basta comentar as linhas de forma adequada:#arquivo = 'cenario_2.db'#arquivo = 'cenario_5.db'arquivo='original.db'#arquivo = 'original2020.db'#arquivo = 'otimizaNoAno.db'#arquivo = 'reduzirVerba.db'#arquivo = 'juntaTurmaCont.db'#arquivo = 'addQuartoAnoEM.db'############################################# - Solver padrao: CP-SAT (CBC tambem pode ser utilizado)# - somenteTurmasObrig: variavel binaria que exibe ou nao os dados de turmas nao#   ativasdatabase='data/'+arquivoMatMov=mm.modelo(databasePath=database,somenteTurmasObrig=True)MatMov.leituraDadosParametros()MatMov.Solve()MatMov.exportaSolucaoSQLite()##############################################  Opcional  ##MatMov.estatisticaSolver()MatMov.estatisticaProblema()MatMov.analiseGrafica()Ao comentar ou "descomentar" as linhas que definem a variávelarquivo, seleciona-se
qual conjunto de dados será executado e resolvido.Removendo as linhas comMatMov.estatisticaSolver(),MatMov.estatisticaProblema()eMatMov.analiseGrafica(), as suas respectivas informações irão para de ser exibidas na
tela e as figuras não serão mais geradas ou atualizadas. Os demais metodos devem ser
executados.Resumo de instalação e execuçãoInstalação peloPyPI: instalar pelopipe então extrair os arquivos deinstalacaoPip.zipe executarmain.py.Instalação pelo local: extrair os arquivos deinstalacaoLocal.zipe executarmain.py.Um pouco sobre os cenários testadosOs cenários testados:cenario_2.db: cenario enviado pela UniSoma em preparação para fase final.cenario_5.db: cenario enviado pela UniSoma em preparação para fase final.original.db: arquivo original.original2020.db: encontramos uma inconsistência no ano de referência em alguns alunos de formulário. O aluno se inscreveu em 2020 mas o ano de referência é 2019. Os dados emoriginal2020.dbcorrigem essa inconsistência.otimizaNoAno.db: considera resolucao do problema no ano de 2020reduzirVerba.db: verba reduzida para 15000juntaTurmaCont.db: remoção de alguns alunos de continuidade para ver se o método realmente junta turmas de continuidade quando possível.addQuartoAnoEM.db: adição do 4º ano do ensino médio.Obs: todos os cenários consideram a remoção dos CPF's repetidos e todos (exceto ooriginal.db) tratam da inconsistência do ano de referência.Pacotes e versõesO pacote foi desenvolvido em Python 3 e testado nas versões Python 3.7.2 64-bit e Python 3.8.2 64-bit. Assim, espera-se que o pacote não encontre problemas em versões maiores que 3.7 do Python 3. Seguem os principais pacotes externos do Python utilizados nessa primeira versão do programa:PacoteVersãonumpy1.19.2pandas1.1.2matplotlib3.3.2ortools8.0.8283Foram utilizados alguns pacotes da bibliotecastandarddo Python 3:math, sqlite3, time, datetime, string, osestatistics. Esses pacotes não necessitam de instalação pois acompanham diretamente a instalação do Python 3.Obs 1: o ortools requer que a versão do Python 3 instalada seja de 64-bit.Obs 2: as funções utilizadas da bibliotecaossão independentes de sistema operacional.