Corrige acentuacao dos textos
This commit is contained in:
@@ -16,7 +16,7 @@ def resolver_milp(colunas: pd.DataFrame, rotas: pd.DataFrame, aeronaves: pd.Data
|
||||
bounds = Bounds(np.zeros(n), np.ones(n))
|
||||
restricoes = []
|
||||
|
||||
# R1 - Cada tripulante aparece no maximo uma vez.
|
||||
# R1 - Cada tripulante aparece no máximo uma vez.
|
||||
for trip in sorted(set(colunas["trip1"]).union(set(colunas["trip2"]))):
|
||||
linha = np.zeros(n)
|
||||
linha[(colunas["trip1"] == trip) | (colunas["trip2"] == trip)] = 1
|
||||
@@ -28,7 +28,7 @@ def resolver_milp(colunas: pd.DataFrame, rotas: pd.DataFrame, aeronaves: pd.Data
|
||||
idx_local = (colunas["aeronave"] == av) & (colunas["tipo_escala"] == "MISSAO_LOCAL")
|
||||
idx_sbv = (colunas["aeronave"] == av) & (colunas["tipo_escala"] == "SBV")
|
||||
if not (idx_rota | idx_sbv).any():
|
||||
raise RuntimeError(f"Modelo inviavel: nao ha rota nem SBV candidato para a aeronave {av}.")
|
||||
raise RuntimeError(f"Modelo inviável: não há rota nem SBV candidato para a aeronave {av}.")
|
||||
linha = np.zeros(n)
|
||||
linha[idx_rota | idx_sbv] = 1
|
||||
restricoes.append(LinearConstraint(linha, 1, 1))
|
||||
@@ -48,13 +48,13 @@ def resolver_milp(colunas: pd.DataFrame, rotas: pd.DataFrame, aeronaves: pd.Data
|
||||
for rota_id in range(1, len(rotas) + 1):
|
||||
idx = (colunas["tipo_escala"] == "ROTA_ACIONADA") & (colunas["rota_id"] == rota_id)
|
||||
if not idx.any():
|
||||
raise RuntimeError(f"Modelo inviavel: nao ha coluna candidata para a rota acionada {rota_id}.")
|
||||
raise RuntimeError(f"Modelo inviável: não há coluna candidata para a rota acionada {rota_id}.")
|
||||
linha = np.zeros(n)
|
||||
linha[idx] = 1
|
||||
restricoes.append(LinearConstraint(linha, 1, 1))
|
||||
|
||||
resultado = milp(c=-colunas["score_milp"].to_numpy(dtype=float), integrality=integrality, bounds=bounds, constraints=restricoes)
|
||||
if not resultado.success:
|
||||
raise RuntimeError(f"MILP nao encontrou solucao viavel: {resultado.message}")
|
||||
raise RuntimeError(f"MILP não encontrou solução viável: {resultado.message}")
|
||||
selecionadas = resultado.x > 0.5
|
||||
return colunas.loc[selecionadas].reset_index(drop=True)
|
||||
|
||||
Reference in New Issue
Block a user