<jupyter_start><jupyter_text>Las dimensiones óptimas de una lata ![image.png](attachment:image.png) Encontrar las dimensiones óptimas de una lata de refresco es un problema simple de optimización no lineal. Consideramos una lata de refresco idealizada que se representa como un cilindro con radio r y altura h. El problema es encontrar el radio y la altura que minimice el área de superficie del cilindro mientras se mantiene un volumen fijo. Aquí, el área de superficie del cilindro se aproxima a la cantidad de aluminio necesaria para una lata de refresco, por lo que este problema se puede utilizar para predecir la cantidad mínima de aluminio necesaria para contener un volumen determinado El area del cilindro es:$$2 \pi r (r+h)$$Un refresco estandar es de $12 oz$ o $355 ml$. Entonces, el volumen es:$$ \pi r^2 h = 355$$La siguiente representacion de optimizacion para este problema es:$$\begin{equation*} \begin{array}{ll}     \min & 2 \pi r (r+h)\\     \textrm{s.t. } & \pi r^2 h = 355\\     & r \geq 0\\     & h \geq 0 \end{array} \end{equation*}$$Este es un problema nonlineal.<jupyter_code>from pyomo.environ import *
from math import pi

m = ConcreteModel()

m.r = Var(bounds=(0,None))
m.h = Var(bounds=(0,None))

m.o = Objective(expr=2*pi*m.r*(m.r + m.h))
m.c = Constraint(expr=pi*m.h*m.r**2 == 1)

solver = SolverFactory('ipopt')
status = solver.solve(m)

print("Status = %s" % status.solver.termination_condition)

print("%s = %f" % (m.r, value(m.r)))
print("%s = %f" % (m.h, value(m.h)))
print("Objective = %f" % value(m.o))<jupyter_output>Status = optimal
r = 0.541926
h = 1.083852
Objective = 5.535810
{'fraction_non_alphanumeric': 0.1260037059913527, 'fraction_numerical': 0.026559604694255712, 'mean_word_length': 4.328947368421052, 'pattern_counts': {'":': 0, '<': 4, '<?xml version=': 0, '>': 4, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '351420', 'license': 'MIT', 'n_tokens_mistral': 615, 'n_tokens_neox': 584, 'n_words': 205, 'path': 'Modulo3Simat/1_ProgramacionLineal/EjemplosTerminadosFuncionando/.ipynb_checkpoints/LataRefresco-checkpoint.ipynb', 'repo_name': 'IntroCursos/MachingLearning', 'size': '1619'}