Solver para o problema de alocação de alunos na ONG Matemática em Movimento
Project description
matmov - educaMat
Projeto back-end do Desafio Unisoma - 2020
Gabriel Passos - IMECC - UNICAMP
Flávia C. Gachet - FCA - UNICAMP
Instalação
Oferecemos 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 do ortools.
O pacote desenvolvido também foi disponibilizado no PyPI para fácil instalação e execução. Nesse caso, se você possuir o pip instalado, basta executar:
$ pip install matmov
Algumas outras possibilidades para instalação através do pip:
$ phyton -m pip install matmov
$ pip3 install matmov
$ python3 -m pip install matmov
Obs: a opção a ser usada pode depender de como o Python 3 está instalado no seu computador.
Com a instalação executada pelo PyPI, basta descompactar o arquivo instalacaoPip.zip
e executar o arquivo main.py
como sera indicado posteriormente.
Caso seja preferível não usar o PyPI, mas sim rodar diretamente com os arquivos .py desenvolvidos, 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 pelo PyPI, basta descompactar o arquivo instalacaoLocal.zip
e executar o arquivo main.py
como sera indicado posteriormente.
Executando o programa
O 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 no repositório do GitHub
No local de sua preferência para executar nosso código deve existir a pasta data
. Deve haver também um arquivo main.py
com um conteúdo apropriado (arquivo que executa os metodos do pacote desenvolvido). A pasta data
possui os arquivos SQLite database com os casos de teste.
Se a instalação for feita pelo PyPI, basta editar a main da forma que for desejável e então executar o arquivo main.py
. Caso seja preferível rodar com os arquivos diretamente, sem instalar pelo PyPI, deve haver uma terceira pasta, com nome matmov
que 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 arquivo main.py
.
Estrutura da main.py
import matmov as mm
#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
# ativas
database = 'data/' + arquivo
MatMov = 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ável arquivo
, seleciona-se
qual conjunto de dados será executado e resolvido.
Removendo as linhas com MatMov.estatisticaSolver()
, MatMov.estatisticaProblema()
e
MatMov.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ção
-
Instalação pelo PyPI: instalar pelo pip e então extrair os arquivos de
instalacaoPip.zip
e executarmain.py
. -
Instalação pelo local: extrair os arquivos de
instalacaoLocal.zip
e executarmain.py
.
Um pouco sobre os cenários testados
Os 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.db
corrigem 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 o original.db
) tratam da inconsistência do ano de referência.
Pacotes e versões
O 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:
Pacote | Versão |
---|---|
numpy | 1.19.2 |
pandas | 1.1.2 |
matplotlib | 3.3.2 |
ortools | 8.0.8283 |
Foram utilizados alguns pacotes da biblioteca standard do Python 3: math, sqlite3, time, datetime, string, os e statistics. 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 biblioteca os são independentes de sistema operacional.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file matmov-1.1.0.tar.gz
.
File metadata
- Download URL: matmov-1.1.0.tar.gz
- Upload date:
- Size: 24.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 31449c5c527f7a60342c8239e860f8e7e77f4102d4b2f5894e64ab053742c389 |
|
MD5 | 1b2fe5a00bb2ddf16c909e4699d3a2f3 |
|
BLAKE2b-256 | 14018cf8407976de675e7172937f8c57359b4e96dc0ee215ac726586db032128 |
File details
Details for the file matmov-1.1.0-py3-none-any.whl
.
File metadata
- Download URL: matmov-1.1.0-py3-none-any.whl
- Upload date:
- Size: 24.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4c8c2cfd86453b274d4098284354a1962a506f52d6b3f1ae0e449468a110cecf |
|
MD5 | 90550be88b5f965b0601766f1d3a3a20 |
|
BLAKE2b-256 | 3a779f9691c14dea51106d50ce0e2eaafa19ee9e9e5f6722dd042094ff9bb576 |