es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo utilizar scipy.optimize.minimize para una función con 3 variables?

Estoy tratando de optimizar esta función:

def voce(strain, sigma_s, sigma_y, epsilon_0):
    stress = sigma_s - (sigma_s - sigma_y)*np.exp(-strain/epsilon_0)
    return stress

encontrando los mejores valores para sigmas, sigmay y epsilon_0. Tanto Strain como stress deberían ser matrices unidimensionales de numpy.

He intentado:

initial_guess = [1, 1, 1]
result = minimize(voce, initial_guess)

pero obtengo “ValueError: can only convert an array of size 1 to a Python scalar”.

Estoy un poco confundido sobre cómo utilizar minimize en esto.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El error sugiere que la entrada
    a la función minimize puede no estar en el formato correcto.

    Cuando se utiliza minimize, se debe proporcionar una suposición para las variables como argumento. Esta suposición debe ser un arreglo numpy unidimensional, sin embargo, parece que la suposición inicial proporcionada es solo una lista con 3 valores.

    Para corregir este error, la suposición inicial debe convertirse en un arreglo numpy utilizando np.array():

    suposicion_inicial = np.array([1, 1, 1])
    

    Luego, la función minimize debe ser llamada con el parámetro args para especificar los valores de strain y sigma_y:

    resultado = minimize(voce, suposicion_inicial, args=(strain, sigma_y, epsilon_0))
    

    Aquí, strain, sigma_y y epsilon_0 deben ser arreglos numpy con los valores apropiados.

    Una vez que la función minimize se ejecute correctamente, los valores óptimos de sigma_s, sigma_y y epsilon_0 se pueden obtener de la variable resultado:

    sigma_s_opt = resultado.x[0]
    sigma_y_opt = resultado.x[1]
    epsilon_0_opt = resultado.x[2]
    

    Estos valores luego se pueden utilizar en la función voce para calcular los valores de estrés optimizados para el arreglo de deformación dado.

Comments are closed.