<jupyter_start><jupyter_text><jupyter_code>! pip install ortools
from ortools.linear_solver import pywraplp

pl = pywraplp.Solver("CI - PL", pywraplp.Solver.GLOP_LINEAR_PROGRAMMING)

# Dados do Problema
N_VAR = 6
N_REST = 9

# Problema de PL
# maximizar   z = Cx 
# sujeito a  Ax <= b
# [1 1 1 1 1 1]
# [1 0 0 0 0 0]
# [0 1 0 0 0 0]
# [0 0 1 0 0 0]
# [0 0 0 1 0 0]
# [0 0 0 0 1 0]
# [0 0 0 0 0 1]
# [0 0 1 0 1 1]
# [-1 -1 0 0 -1 0]
A = [[1, 1, 1, 1, 1, 1], [1, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0], 
     [0, 0, 1, 0, 0, 0], [0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 1, 0],
     [0, 0, 0, 0, 0, 1], [0, 0, 1, 0, 1, 1], [-1, -1, 0, 0, -1, 0]]
B = [100, 25, 25, 25, 25, 25, 25, 50, -50]  # termos indep. das restrições.
C = [0.087, 0.095, 0.12, 0.09, 0.13, 0.20]  # coeficientes da função objetivo.

# alocação de memória das variáveis e restrições
x = []
for j in range(N_VAR):
  x.append(0)

rest = []
for i in range(N_REST):
  rest.append(0)
    
# VARIÁVEIS DE DECISÃO
for j in range(N_VAR):   # N_VAR = 6  j = 0, 1
  x[j] = pl.IntVar(0, pl.infinity(), 'x'+str(j))  # min, max, nome

# RESTRIÇÕES
# define o lado direito das restrições <= 
for i in range(N_REST):  # N_REST = 9  i = 0, 1, 2
  rest[i] = pl.Constraint(-pl.infinity(), B[i])  # min, max

# define o coeficiente das variáveis no lado esquerdo das restrições 
for i in range(N_REST):  # linhas
  for j in range(N_VAR): # colunas
    rest[i].SetCoefficient(x[j], A[i][j])

# função objetivo: Maximizar C1*x1 +...
obj = pl.Objective()
for j in range(N_VAR):
  obj.SetCoefficient(x[j], C[j])
obj.SetMaximization()

# Resolve
pl.Solve()

# Imprime o valor de cada variável na solução ótima e da função-objetivo
print("Função-objetivo = ", pl.Objective().Value())
for j in range(N_VAR):  # j = 0, 1
  print("Qtde de P%d" %(j+1),"=", x[j].solution_value())
# Inicializa o solver de Programação Linear Inteira Mista
pl = pywraplp.Solver('Modificação Carteira de Investimentos - PL', pywraplp.Solver.GLOP_LINEAR_PROGRAMMING)

# Dados do Problema
N_VAR = 6
N_REST = 9

# Problema de PL
# maximizar   z = Cx 
# sujeito a  Ax <= b
# [1 1 1 1 1 1]
# [1 0 0 0 0 0]
# [0 1 0 0 0 0]
# [0 0 1 0 0 0]
# [0 0 0 1 0 0]
# [0 0 0 0 1 0]
# [0 0 0 0 0 1]
# [0 0 1 0 1 1]
# [-1 -1 0 0 -1 0]
# [0 -1 0 0 0 0]  -> p2 >= 0.05*100 = 5 -> -p2 <= -5
# [0  0 0 0 0 -1] -> p6 >= 0.05*100 = 5 -> -p6 <= -5
# [-1 -1 0 -1 0 0] -> p1 + p2 + p4 >= 15 -> -p1-p2-p4 <= -15
A = [[1, 1, 1, 1, 1, 1], [1, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0], 
     [0, 0, 1, 0, 0, 0], [0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 1, 0],
     [0, 0, 0, 0, 0, 1], [0, 0, 1, 0, 1, 1], [-1, -1, 0, 0, -1, 0],
     [0, -1, 0, 0, 0, 0], [0, 0, 0, 0, 0, -1], [-1, -1, 0, -1, 0, 0]]
B = [100, 25, 25, 25, 25, 25, 25, 50, -50, -5, -5, -15]  # termos indep. das restrições.
C = [0.087, 0.095, 0.12, 0.09, 0.13, 0.20]  # coeficientes da função objetivo.

# alocação de memória das variáveis e restrições
x = []
for j in range(N_VAR):
  x.append(0)

rest = []
for i in range(N_REST):
  rest.append(0)
    
# VARIÁVEIS DE DECISÃO
for j in range(N_VAR):   # N_VAR = 6  j = 0, 1
  x[j] = pl.IntVar(0, pl.infinity(), 'x'+str(j))  # min, max, nome

# RESTRIÇÕES
# define o lado direito das restrições <= 
for i in range(N_REST):  # N_REST = 9  i = 0, 1, 2
  rest[i] = pl.Constraint(-pl.infinity(), B[i])  # min, max

# define o coeficiente das variáveis no lado esquerdo das restrições 
for i in range(N_REST):  # linhas
  for j in range(N_VAR): # colunas
    rest[i].SetCoefficient(x[j], A[i][j])

# função objetivo: Maximizar C1*x1 +...
obj = pl.Objective()
for j in range(N_VAR):
  obj.SetCoefficient(x[j], C[j])
obj.SetMaximization()

# Resolve
pl.Solve()

# Imprime o valor de cada variável na solução ótima e da função-objetivo
print("Função-objetivo = ", pl.Objective().Value())
for j in range(N_VAR):  # j = 0, 1
  print("Qtde de P%d" %(j+1),"=", x[j].solution_value())
# Inicializa o solver de Programação Linear Inteira Mista
pl = pywraplp.Solver('Escala de funcionários - PL', pywraplp.Solver.GLOP_LINEAR_PROGRAMMING) # Solver errado... Dá números reais!

# Dados do Problema
N_VAR = 7
N_REST = 7

# Problema de PL
# maximizar   z = Cx 
# sujeito a  Ax <= b
# [-1  0  0 -1 -1 -1 -1] Dom
# [-1 -1  0  0 -1 -1 -1] Seg
# [-1 -1 -1  0  0 -1 -1] Ter
# [-1 -1 -1 -1  0  0 -1] Qua
# [-1 -1 -1 -1 -1  0  0] Qui
# [ 0 -1 -1 -1 -1 -1  0] Sex
# [ 0  0 -1 -1 -1 -1 -1] Sab
A = [[-1,  0,  0, -1, -1, -1, -1], [-1, -1,  0,  0, -1, -1, -1],
     [-1, -1, -1,  0,  0, -1, -1], [-1, -1, -1, -1,  0,  0, -1],
     [-1, -1, -1, -1, -1,  0,  0], [ 0, -1, -1, -1, -1, -1,  0],
     [ 0,  0, -1, -1, -1, -1, -1]]
B = [-11, -18, -12, -15, -19, -14, -16]  # termos indep. das restrições.
C = [1, 1, 1, 1, 1, 1, 1]  # coeficientes da função objetivo.

# alocação de memória das variáveis e restrições
x = []
for j in range(N_VAR):
  x.append(0)

rest = []
for i in range(N_REST):
  rest.append(0)
    
# VARIÁVEIS DE DECISÃO
for j in range(N_VAR):   # N_VAR = 6  j = 0, 1
  x[j] = pl.IntVar(0, pl.infinity(), 'x'+str(j))  # min, max, nome

# RESTRIÇÕES
# define o lado direito das restrições <= 
for i in range(N_REST):  # N_REST = 9  i = 0, 1, 2
  rest[i] = pl.Constraint(-pl.infinity(), B[i])  # min, max

# define o coeficiente das variáveis no lado esquerdo das restrições 
for i in range(N_REST):  # linhas
  for j in range(N_VAR): # colunas
    rest[i].SetCoefficient(x[j], A[i][j])

# função objetivo: Maximizar C1*x1 +...
obj = pl.Objective()
for j in range(N_VAR):
  obj.SetCoefficient(x[j], C[j])
obj.SetMinimization()

# Resolve
pl.Solve()

# Imprime o valor de cada variável na solução ótima e da função-objetivo
print("Função-objetivo = ", pl.Objective().Value())
for j in range(N_VAR):  # j = 0, 1
  print("Qtde de P%d" %(j+1),"=", x[j].solution_value())
# Inicializa o solver de Programação Linear Inteira Mista
pl = pywraplp.Solver('Escala de funcionários - PL', pywraplp.Solver.CBC_MIXED_INTEGER_PROGRAMMING) # Solver certo!!! Programação inteira mista!!!

# Dados do Problema
N_VAR = 7
N_REST = 7

# Problema de PL
# maximizar   z = Cx 
# sujeito a  Ax <= b
# [-1  0  0 -1 -1 -1 -1] Dom
# [-1 -1  0  0 -1 -1 -1] Seg
# [-1 -1 -1  0  0 -1 -1] Ter
# [-1 -1 -1 -1  0  0 -1] Qua
# [-1 -1 -1 -1 -1  0  0] Qui
# [ 0 -1 -1 -1 -1 -1  0] Sex
# [ 0  0 -1 -1 -1 -1 -1] Sab
A = [[-1,  0,  0, -1, -1, -1, -1], [-1, -1,  0,  0, -1, -1, -1],
     [-1, -1, -1,  0,  0, -1, -1], [-1, -1, -1, -1,  0,  0, -1],
     [-1, -1, -1, -1, -1,  0,  0], [ 0, -1, -1, -1, -1, -1,  0],
     [ 0,  0, -1, -1, -1, -1, -1]]
B = [-11, -18, -12, -15, -19, -14, -16]  # termos indep. das restrições.
C = [1, 1, 1, 1, 1, 1, 1]  # coeficientes da função objetivo.

# alocação de memória das variáveis e restrições
x = []
for j in range(N_VAR):
  x.append(0)

rest = []
for i in range(N_REST):
  rest.append(0)
    
# VARIÁVEIS DE DECISÃO
for j in range(N_VAR):   # N_VAR = 6  j = 0, 1
  x[j] = pl.IntVar(0, pl.infinity(), 'x'+str(j))  # min, max, nome

# RESTRIÇÕES
# define o lado direito das restrições <= 
for i in range(N_REST):  # N_REST = 9  i = 0, 1, 2
  rest[i] = pl.Constraint(-pl.infinity(), B[i])  # min, max

# define o coeficiente das variáveis no lado esquerdo das restrições 
for i in range(N_REST):  # linhas
  for j in range(N_VAR): # colunas
    rest[i].SetCoefficient(x[j], A[i][j])

# função objetivo: Maximizar C1*x1 +...
obj = pl.Objective()
for j in range(N_VAR):
  obj.SetCoefficient(x[j], C[j])
obj.SetMinimization()

# Resolve
pl.Solve()

# Imprime o valor de cada variável na solução ótima e da função-objetivo
print("Função-objetivo = ", pl.Objective().Value())
for j in range(N_VAR):  # j = 0, 1
  print("Qtde de P%d" %(j+1),"=", x[j].solution_value())
# Inicializa o solver de Programação Linear Inteira Mista
pl = pywraplp.Solver('Mistura de tintas - PL', pywraplp.Solver.CBC_MIXED_INTEGER_PROGRAMMING)

# Dados do Problema
N_VAR = 8
N_REST = 6

# Problema de PL
# maximizar   z = Cx 
# sujeito a  Ax <= b
# [-1 -1 -1 -1  0  0  0  0]
# [ 0  0  0  0 -1 -1 -1 -1]
# [-0.35 -0.05 -0.75  0.25  0     0     0     0]
# [ 0.1  -0.2   0.5  -0.50  0     0     0     0]
# [ 0     0     0     0    -0.4  -0.1  -0.8   0.20]
# [ 0     0     0     0    -0.1   0.2  -0.50  0.50]
A = [[-1,    -1,    -1,    -1,    0,    0,     0,     0],
     [ 0,     0,     0,     0,   -1,   -1,    -1,    -1],
     [-0.35, -0.05, -0.75,  0.25, 0,    0,     0,     0],
     [ 0.1,  -0.2,   0.5,  -0.50, 0,    0,     0,     0],
     [ 0,     0,     0,     0,   -0.4, -0.1,  -0.8,   0.20],
     [ 0,     0,     0,     0,   -0.1,  0.2,  -0.50,  0.50]]
B = [-100, -250, 0, 0, 0, 0]  # termos indep. das restrições.
C = [0.5, 0.75, 1.0, 1.5, 0.5, 0.75, 1.0, 1.5]  # coeficientes da função objetivo.

# alocação de memória das variáveis e restrições
x = []
for j in range(N_VAR):
  x.append(0)

rest = []
for i in range(N_REST):
  rest.append(0)
    
# VARIÁVEIS DE DECISÃO
for j in range(N_VAR):   # N_VAR = 6  j = 0, 1
  x[j] = pl.IntVar(0, pl.infinity(), 'x'+str(j))  # min, max, nome

# RESTRIÇÕES
# define o lado direito das restrições <= 
for i in range(N_REST):  # N_REST = 8  i = 0, 1, 2
  rest[i] = pl.Constraint(-pl.infinity(), B[i])  # min, max

# define o coeficiente das variáveis no lado esquerdo das restrições 
for i in range(N_REST):  # linhas
  for j in range(N_VAR): # colunas
    rest[i].SetCoefficient(x[j], A[i][j])

# função objetivo: Minimizar C1*x1 +...
obj = pl.Objective()
for j in range(N_VAR):
  obj.SetCoefficient(x[j], C[j])
obj.SetMinimization()

# Resolve
pl.Solve()

# Imprime o valor de cada variável na solução ótima e da função-objetivo
print("Função-objetivo = ", pl.Objective().Value())
for j in range(N_VAR):  # j = 0, 1
  print("Qtde de x%d" %(j+1),"=", x[j].solution_value())
# Inicializa o solver de Programação Linear Inteira Mista
pl = pywraplp.Solver('Mistura de tintas - PL', pywraplp.Solver.GLOP_LINEAR_PROGRAMMING)

# Dados do Problema
N_VAR = 8
N_REST = 6

# Problema de PL
# maximizar   z = Cx 
# sujeito a  Ax <= b
# [-1 -1 -1 -1  0  0  0  0]
# [ 0  0  0  0 -1 -1 -1 -1]
# [-0.35 -0.05 -0.75  0.25  0     0     0     0]
# [ 0.1  -0.2   0.5  -0.50  0     0     0     0]
# [ 0     0     0     0    -0.4  -0.1  -0.8   0.20]
# [ 0     0     0     0    -0.1   0.2  -0.50  0.50]
A = [[-1,    -1,    -1,    -1,    0,    0,     0,     0],
     [ 0,     0,     0,     0,   -1,   -1,    -1,    -1],
     [-0.35, -0.05, -0.75,  0.25, 0,    0,     0,     0],
     [ 0.1,  -0.2,   0.5,  -0.50, 0,    0,     0,     0],
     [ 0,     0,     0,     0,   -0.4, -0.1,  -0.8,   0.20],
     [ 0,     0,     0,     0,   -0.1,  0.2,  -0.50,  0.50]]
B = [-100, -250, 0, 0, 0, 0]  # termos indep. das restrições.
C = [0.5, 0.75, 1.0, 1.5, 0.5, 0.75, 1.0, 1.5]  # coeficientes da função objetivo.

# alocação de memória das variáveis e restrições
x = []
for j in range(N_VAR):
  x.append(0)

rest = []
for i in range(N_REST):
  rest.append(0)
    
# VARIÁVEIS DE DECISÃO
for j in range(N_VAR):   # N_VAR = 6  j = 0, 1
  x[j] = pl.IntVar(0, pl.infinity(), 'x'+str(j))  # min, max, nome

# RESTRIÇÕES
# define o lado direito das restrições <= 
for i in range(N_REST):  # N_REST = 8  i = 0, 1, 2
  rest[i] = pl.Constraint(-pl.infinity(), B[i])  # min, max

# define o coeficiente das variáveis no lado esquerdo das restrições 
for i in range(N_REST):  # linhas
  for j in range(N_VAR): # colunas
    rest[i].SetCoefficient(x[j], A[i][j])

# função objetivo: Minimizar C1*x1 +...
obj = pl.Objective()
for j in range(N_VAR):
  obj.SetCoefficient(x[j], C[j])
obj.SetMinimization()

# Resolve
pl.Solve()

# Imprime o valor de cada variável na solução ótima e da função-objetivo
print("Função-objetivo = ", pl.Objective().Value())
for j in range(N_VAR):  # j = 0, 1
  print("Qtde de x%d" %(j+1),"=", x[j].solution_value())<jupyter_output>Função-objetivo =  183.33333333333334
Qtde de x1 = 66.66666666666666
Qtde de x2 = 33.33333333333334
Qtde de x3 = 0.0
Qtde de x4 = 0.0
Qtde de x5 = 250.0
Qtde de x6 = 0.0
Qtde de x7 = 0.0
Qtde de x8 = 0.0
{'fraction_non_alphanumeric': 0.18823628407943455, 'fraction_numerical': 0.09416021541568495, 'mean_word_length': 2.368764172335601, 'pattern_counts': {'":': 0, '<': 19, '<?xml version=': 0, '>': 13, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 3, 'word_list_counts': {'cursed_substrings.json': 16, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '379901', 'license': 'MIT', 'n_tokens_mistral': 6307, 'n_tokens_neox': 5709, 'n_words': 1791, 'path': 'PO240_Semana04_Hackthon.ipynb', 'repo_name': 'julianovale/PO240_Meta_heuristica', 'size': '11884'}