Autor Tema: Encuentra un mínimo local del problema sin restricciones

0 Usuarios y 1 Visitante están viendo este tema.

08 Noviembre, 2024, 02:44 pm
Respuesta #20

lorena.zambrano

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 119
  • País: ve
  • Karma: +0/-0
Si \( x_1 = 0 \), nuestra función objetivo se reduce a:

\( z = -2(0) + 8x_2+ 0*x_2 + 0^2 + 6x_2^2 \)
Simplificando:

\( z = 8x_2 + 6x_2^2 \)

Derivamos z respecto a \( x_2 \) e igualamos a cero:

\( dz/dx_2 = 8 + 12x_2= 0 \)
Resolviendo para \( x_2 \):

\( x_2= -8/12 = -2/3 \)

El punto crítico es \( (0, -2/3) \). Sin embargo, este punto no cumple con la restricción \( x_2 ≥ 0 \). Por lo tanto, no es un punto factible y no puede ser un candidato a mínimo.

Análisis de la restricción \( 2x_1+ x_2 = 5 \)

Tenemos la función objetivo:

\( z = -2x_1 + 8x_2 + x_1x_2 + x_1^2 + 6x_2^2 \)
Y la restricción:

\( 2x_1 + x_2 = 5 \)
Despejamos \( x_2 \) de la restricción:

\( x_2= 5 - 2x_1 \)

Sustituimos este valor de \( x_2 \) en la función objetivo:

\( z = -2x_1 + 8(5 - 2x_1) + x_1(5 - 2x_1) + x_1^2 + 6(5 - 2x_1)^2
 \)
Simplificando la expresión, obtenemos:

\( z = 26x_1^2 - 86x_1+ 190 \)

Derivamos la función z respecto a \( x_1 \) e igualamos a cero:

\( dz/dx_1 = 52x_1 - 86 = 0 \)
Resolviendo para \( x_1 \), obtenemos:

\( x_1= 86/52 = 43/26 \)

Sustituimos este valor de \( x_1 \) en la restricción \( x_2 = 5 - 2x_1 \) para encontrar el valor correspondiente de \( x_2 \):

\( x_2 = 5 - 2(43/26) = 27/13 \)
Por lo tanto, el punto crítico es\(  (43/26, 27/13). \)

Comprobamos si el punto\(  (43/26, 27/13)  \)satisface las restricciones del problema:

\( 2x_1+ x_2 = 5 \): Sí, cumple.
\( x_1 ≥ 0 \): Sí, cumple.
\( x_2 ≥ 0 \): Sí, cumple.
El punto \( (43/26, 27/13)  \)es un candidato a mínimo y cumple con todas las restricciones.

Pero en conclusión el punto más mínimo se alcanza al evaluar la función objetivo en el punto \( (1,0) \)


09 Noviembre, 2024, 01:23 am
Respuesta #21

lorena.zambrano

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 119
  • País: ve
  • Karma: +0/-0
Luis quiero saber si a esta operación es que te referías y si está correcto por favor?

10 Noviembre, 2024, 07:28 pm
Respuesta #22

Luis Fuentes

  • el_manco
  • Administrador
  • Mensajes: 58,907
  • País: es
  • Karma: +0/-0
Hola

Si \( x_1 = 0 \), nuestra función objetivo se reduce a:

\( z = -2(0) + 8x_2+ 0*x_2 + 0^2 + 6x_2^2 \)
Simplificando:

\( z = 8x_2 + 6x_2^2 \)

Derivamos z respecto a \( x_2 \) e igualamos a cero:

\( dz/dx_2 = 8 + 12x_2= 0 \)
Resolviendo para \( x_2 \):

\( x_2= -8/12 = -2/3 \)

El punto crítico es \( (0, -2/3) \). Sin embargo, este punto no cumple con la restricción \( x_2 ≥ 0 \). Por lo tanto, no es un punto factible y no puede ser un candidato a mínimo.

Bien.

Citar
Análisis de la restricción \( 2x_1+ x_2 = 5 \)

Tenemos la función objetivo:

\( z = -2x_1 + 8x_2 + x_1x_2 + x_1^2 + 6x_2^2 \)
Y la restricción:

\( 2x_1 + x_2 = 5 \)
Despejamos \( x_2 \) de la restricción:

\( x_2= 5 - 2x_1 \)

Sustituimos este valor de \( x_2 \) en la función objetivo:

\( z = -2x_1 + 8(5 - 2x_1) + x_1(5 - 2x_1) + x_1^2 + 6(5 - 2x_1)^2
 \)
Simplificando la expresión, obtenemos:

\( z =\color{red} 26x_1^2 - 86x_1\color{black}+ 190 \)

Revisa las cuentas. Da:

\( z=23x_1^2-133x_1+190 \)

De todas formas si estuviese bien lo que has hecho, ¿cómo deduces que el mínimo es en \( (1,0) \) y no en \( (43/26, 27/13) \)?. Deberías de comprobar el valor de la función en esos dos puntos y ver cuál es el mínimo. Quizá si lo habías hecho aunque no lo escribieses aquí.

Saludos.

10 Noviembre, 2024, 09:00 pm
Respuesta #23

lorena.zambrano

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 119
  • País: ve
  • Karma: +0/-0
Al simplificar la expresión de z, obtenemos:

\( z = 23x_1^2 - 133x_1+ 190 \)
Derivamos la función z respecto a \( x_1 \) e igualamos a cero:

\( dz/dx_1 = 46x_1- 133 = 0 \)
Resolviendo para \( x_1 \), obtenemos:

\( x_1= 133/46 \)
Sustituimos este valor de x₁ en la restricción \( x_2 = 5 - 2x_1 \) para encontrar el valor correspondiente de \( x_2 \):

\( x_2= 5 - 2(133/46) = 27/23 \)
Por lo tanto, el punto crítico es\(  (133/46, 27/23). \)

\( 2x_1 + x_2 = 5: \) Sí, cumple.
\( x_1 ≥ 0: \) Sí, cumple.
\( x_2≥ 0: \) Sí, cumple.
El punto\(  (133/46, 27/23) \) es un candidato a mínimo y cumple con todas las restricciones

Punto \( (0, 0): \)
\( z = 23(0)^2 - 133(0) + 190 = 190 \)

Punto\(  (5/2, 0): \)
\( z = 23(5/2)^2 - 133(5/2) + 190 = -5 \)

Punto\(  (0, 2): \\
z = 23(0)^2 - 133(0) + 190 = 190
 \)
Punto \( (2, 1): \\
z = 23(2)^2- 133(2) + 190 = 15
 \)
Punto\(  (133/46, 27/23): \\
z = 23(133/46)^2 - 133(133/46) + 190 ≈ -10.17 \)  entonces el mínimo se alcanza en el punto \(  (133/46, 27/23) \) ?

10 Noviembre, 2024, 10:08 pm
Respuesta #24

Luis Fuentes

  • el_manco
  • Administrador
  • Mensajes: 58,907
  • País: es
  • Karma: +0/-0
Hola

Por lo tanto, el punto crítico es\(  (133/46, 27/23). \)

\( 2x_1 + x_2 = 5: \) Sí, cumple.
\( x_1 ≥ 0: \) Sí, cumple.
\( x_2≥ 0: \) Sí, cumple.
El punto\(  (133/46, 27/23) \) es un candidato a mínimo y cumple con todas las restricciones

Pero has olvidado comprobar la restricción \( x_1+2x_2\leq 4 \) y no la cumple.

Saludos.

10 Noviembre, 2024, 11:34 pm
Respuesta #25

lorena.zambrano

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 119
  • País: ve
  • Karma: +0/-0
Si es cierto Luis, entonces ¿definitivamente el mínimo se alcanza en el punto (1,0)? Si intento realizar este ejercicio con algún lenguaje de programación, por ejemplo matlab, scilab, ¿el resultado debería ser el mismo? También me dicen que use un método de dirección de descenso para resolver el problema sin restricciones, si elijo hacerlo por el método del gradiente, ¿el resultado debería ser el mismo? ¿O definitivamente es diferente porque no se deben tomar en cuenta las restricciones? Me gustaría aplicar el método de dirección de descenso con algún código de programación.

11 Noviembre, 2024, 08:35 pm
Respuesta #26

Luis Fuentes

  • el_manco
  • Administrador
  • Mensajes: 58,907
  • País: es
  • Karma: +0/-0
Hola

Si es cierto Luis, entonces ¿definitivamente el mínimo se alcanza en el punto (1,0)?

Si.

Citar
Si intento realizar este ejercicio con algún lenguaje de programación, por ejemplo matlab, scilab, ¿el resultado debería ser el mismo?

En principio si. Si el método es iterativo, pudiera ser que obtuvieses una solución aproximada, que se acerque al \( (1,0) \) pero no exactamente \( (1,0) \).

Citar
También me dicen que use un método de dirección de descenso para resolver el problema sin restricciones, si elijo hacerlo por el método del gradiente, ¿el resultado debería ser el mismo? ¿O definitivamente es diferente porque no se deben tomar en cuenta las restricciones?

Pues obviamente si utilizas un método para resolver el problema sin restricciones obtendrás la solución del problema SIN restricciones. ¿No es evidente eso?.

Citar
Me gustaría aplicar el método de dirección de descenso con algún código de programación.

Muy bien, pues inténtalo.

Saludos.

12 Noviembre, 2024, 04:38 am
Respuesta #27

Florruiz

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 154
  • País: ve
  • Karma: +0/-1
Hola Lorena, aprovechando que estuve realizando el método del gradiente en Python. Consideré aplicarlo a tu ejercicio para la parte b) donde pide un método de dirección de descenso para resolver el problema sin restricciones.
Aquí te comparto el código y los resultados que he obtenido. Me gustaría saber que nos dice Luis al respecto, pero por lo que he visto de tu ejercicio, los resultados aplicando el método del descenso del gradiente al problema sin restricciones he obtenido resultados muy similares al punto que encontraste en el primer apartado, porque en este no se deben considerar las restricciones.

El código es el siguiente:

Código: [Seleccionar]
import numpy as np
import matplotlib.pyplot as plt

def objective_function(x):
    # La función objetivo
    x1, x2 = x[0], x[1]
    return -2 * x1 + 8 * x2 + x1 * x2 + x1**2 + 6 * x2**2

def gradient(x):
    # Cálculo del gradiente
    x1, x2 = x[0], x[1]
    dgdx1 = -2 + x2 + 2 * x1  # Derivada parcial respecto a x1
    dgdx2 = 8 + x1 + 12 * x2  # Derivada parcial respecto a x2
    return np.array([dgdx1, dgdx2])

def gradient_descent(starting_point, learning_rate, max_iterations):
    x = np.array(starting_point)
    for i in range(max_iterations):
        grad = gradient(x)
        x = x - learning_rate * grad
        # Documentar los resultados
        print(f"Iteración {i+1}: x = {x}, f(x) = {objective_function(x)}")
    return x

# Parámetros de inicio y configuración
starting_point = [0, 0]  # Punto de inicio
learning_rate = 0.01  # Tasa de aprendizaje
max_iterations = 100  # Máximo de iteraciones

# Llamada a la función de descenso de gradiente
optimal_point = gradient_descent(starting_point, learning_rate, max_iterations)

# Mostrar resultados finales
print(f"\nEl punto óptimo encontrado es: {optimal_point}")
print(f"Valor mínimo de la función objetivo en este punto: {objective_function(optimal_point)}")

# Visualización en 3D de la función
x1_vals = np.linspace(-3, 3, 100)
x2_vals = np.linspace(-3, 3, 100)
X1, X2 = np.meshgrid(x1_vals, x2_vals)
Z = np.array([[objective_function([x1, x2]) for x1 in x1_vals] for x2 in x2_vals])  # Evaluar la función en cada coordenada

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X1, X2, Z, cmap='viridis', alpha=0.7)

# Marcar el punto óptimo
ax.scatter(optimal_point[0], optimal_point[1], objective_function(optimal_point), color='red', s=100, label='Punto Óptimo', marker='o')
ax.text(optimal_point[0], optimal_point[1], objective_function(optimal_point), f'({optimal_point[0]:.2f}, {optimal_point[1]:.2f})', color='red')

ax.set_xlabel('X1')
ax.set_ylabel('X2')
ax.set_zlabel('f(X1, X2)')
ax.set_title('Superficie de la Función Objetivo')
ax.legend()
plt.show()

Al ejecutarlo me muestra los siguientes resultados:  El punto óptimo encontrado es: [ 1.17790606 -0.76147648]
Valor mínimo de la función objetivo en este punto: -4.4780304579214265

Si te fijas, concuerda con este punto que habías encontrado:\(  (x_1, x_2) = \left(\frac{32}{23}, - \frac{18}{23}\right) \) donde no se consideraban las restricciones, como es en este caso que te pide emplear un método de direcciones de descenso para resolver el problema sin restricciones. Igual me gustaría saber qué dice Luis al respecto  :D


12 Noviembre, 2024, 09:15 am
Respuesta #28

Luis Fuentes

  • el_manco
  • Administrador
  • Mensajes: 58,907
  • País: es
  • Karma: +0/-0
Hola

 Lo he mirado un tanto rápido pero creo que está bien y el resultado es el esperado.

Saludos.

12 Noviembre, 2024, 11:36 am
Respuesta #29

lorena.zambrano

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 119
  • País: ve
  • Karma: +0/-0
Hola, gracias a todos los que me han podido aportar sus conocimientos para realizar este ejercicio, ¿cómo resuelvo la parte c? Me dice que derive el problema dual y resuelva por el método del gradiente. ¿Esto solo se aplica a la función objetivo? ¿O también las restricciones? ¿Cómo se deriva el problema dual Luis?  Chicos disculpen pero no entiendo.