Optimization Can';t最小化函数

Optimization Can';t最小化函数,optimization,minimize,Optimization,Minimize,我只想最小化一个简单的函数,我看过的每一个例子都没有得到任何结果 import math import numpy as np import sympy as sp from scipy.optimize import minimize import scipy.optimize as optimize R=1.5 k_1=2 a=1 n=a alpha=0.25 beta=0.5 delta=0.9 def f_gob(x, y, z): c_1=((1/x-y/x)+R*k_1

我只想最小化一个简单的函数,我看过的每一个例子都没有得到任何结果

import math
import numpy as np 
import sympy as sp
from scipy.optimize import minimize
import scipy.optimize as optimize

R=1.5
k_1=2
a=1
n=a
alpha=0.25
beta=0.5
delta=0.9

def f_gob(x, y, z):
    c_1=((1/x-y/x)+R*k_1)/(1+delta*(1+alpha)) 
    c_2=delta*x*(((1/x-y/x)+R*k_1)/(1+delta*(1+alpha))) 
    l=n-(alpha*(delta*x*(((1/x-y/x)+R*k_1)/((1+delta*(1+alpha))))))/(1-y) 
    return -1*(math.log(c_1)+delta*(math.log(c_2)+alpha*math.log(n-l)+beta*math.log(z)))

f_gob(0.9996,0.332,0.7765)

x0 = [0.8,0.2,0.6]

res =  minimize(f_gob, x0)
非常感谢。

更好的是:

def f_gob(a):
    x = a[0]
    y = a[1]
    z = a[2]
    c_1= ((1/x-y/x)+R*k_1)/(1+delta*(1+alpha)) 
    c_2=delta*x*c_1 
    l=n-(alpha*c_2)/(1-y) 
    return -1*(math.log(c_1)+delta*(math.log(c_2)+alpha*math.log(n-l)+beta*math.log(z)))

f_gob([0.9996,0.332,0.7765])
主要问题是三个决策变量
x,y,z
的当前级别作为单个数组传递,我称之为
a
。我只是拆开单个成员的包装,使其与您拥有的内容保持一致。将事物作为数组传递是有意义的,特别是如果您希望允许大量变量(比如数百个)

有关更多信息,请参见:第三句解释了要调用的函数的格式。还要检查示例