This commit is contained in:
nanometer5088
2023-05-20 22:13:59 -03:00
parent 9fae484586
commit edb2699bab
3 changed files with 58 additions and 67 deletions

67
main.py
View File

@@ -1,67 +0,0 @@
from os import system
from prettytable import PrettyTable, DOUBLE_BORDER
from colr import color
def color_matrix(matriz, num_linhas, num_colunas, cor, coords):
matriz_temp = [linha.copy() for linha in matriz]
for i in range(num_linhas):
for j in range(num_colunas):
if [i, j] in coords:
matriz_temp[i][j] = color(matriz_temp[i][j], fore=cor, style='bright')
show_table_clear(num_linhas, matriz_temp)
num_linhas = int(input("Digite a quantidade de linhas: "))
num_colunas = int(input("Digite a quantidade de colunas: "))
matriz = []
for i in range(num_linhas):
nova_linha = ['-' for j in range(num_colunas)]
matriz.append(nova_linha)
def make_table(num_linhas, matriz):
#Montagem e apresentação da tabela usando PrettyTable
x = PrettyTable()
x.field_names = ["X" + str(i + 1) for i in range(len(matriz[0]))]
for i in range(num_linhas):
x.add_row(matriz[i])
x.set_style(DOUBLE_BORDER)
print(x)
def show_table_clear(num_linhas, matriz):
system("cls || clear")
make_table(num_linhas, matriz)
def insert_table_values(num_linhas, num_colunas, matriz):
for i in range(num_linhas):
for j in range(num_colunas):
matriz[i][j] = color('*', fore='red', style='bright')
show_table_clear(num_linhas, matriz)
print(f"Insira o valor para ({i+1}, {j+1}): ")
matriz[i][j] = int(input())
show_table_clear(num_linhas, matriz)
insert_table_values(num_linhas, num_colunas, matriz)
def find_smallest_value(matriz):
smallest_value = float('inf')
smallest_coords = None
for i in range(len(matriz)):
for j in range(len(matriz[0])):
if matriz[i][j] < smallest_value:
smallest_value = matriz[i][j]
smallest_coords = [i, j]
if smallest_value >= 0:
print("Não existe valores negativos na tabela")
return False
return smallest_value, smallest_coords
has_negative = find_smallest_value(matriz)
if has_negative:
color_matrix(matriz, num_linhas, num_colunas, 'green', [has_negative[1]])
print(f"Encontrado o valor {color(has_negative[0], fore='green')} na coordenada ({has_negative[1][0] + 1}, {has_negative[1][1] + 1})")
input('Pressione ENTER para prosseguir')

58
simplex.py Normal file
View File

@@ -0,0 +1,58 @@
# Theodoro Priosti de Almeida - 32229011
import pulp
from os import system
# Criar um problema de programação linear
problema = pulp.LpProblem("Problema", pulp.LpMaximize)
# Criar as variáveis do problema
n = int(input("Quantas restrições tem o problema? "))
x = pulp.LpVariable('x', lowBound=0)
y = pulp.LpVariable('y', lowBound=0)
# Adicionar as restrições do problema
for i in range(0, n):
x_valor = int(input('Insira o valor do coeficiente de x: '))
print(f'{x_valor}*x + y = 0')
y_valor = int(input('Insira o valor do coeficiente de y: '))
print(f'{x_valor}*x + {y_valor}*y = 0')
p = int(input('Insira o valor da função objetivo: '))
print(f'{x_valor}*x + {y_valor}*y = {p}')
simbolo = int(input('Insira o número correspondente à restrição:\n1= <=\n2= =\n3= >=\n'))
if simbolo == 1:
print(f'{x_valor}*x + {y_valor}*y <= {p}')
problema += x_valor * x + y_valor * y <= p
if simbolo == 2:
print(f'{x_valor}*x + {y_valor}*y = {p}')
problema += x_valor * x + y_valor * y <= p
problema += x_valor * x + y_valor * y >= p
if simbolo == 3:
print(f'{x_valor}*x + {y_valor}*y >= {p}')
problema += x_valor * x + y_valor * y >= p
system("cls || clear")
# Definir a função objetivo do problema
print("Função objetivo: ")
x_valor1 = int(input('Insira o valor do coeficiente de x: '))
print(f'{x_valor1}*x + y')
y_valor1 = int(input('Insira o valor do coeficiente de y: '))
print(f'{x_valor1}*x + {y_valor1}*y')
problema += x_valor1 * x + y_valor1 * y
# Resolver o problema usando o Método Simplex
problema.solve()
system("cls || clear")
#
# Imprimir a solução ótima
print("Valor ótimo da função objetivo: ", pulp.value(problema.objective))
print("Valor de x: ", pulp.value(x))
print("Valor de y: ", pulp.value(y))

View File