Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的optimize.minimize未找到解决方案_Python_Scipy - Fatal编程技术网

Python中的optimize.minimize未找到解决方案

Python中的optimize.minimize未找到解决方案,python,scipy,Python,Scipy,我正在尝试使用optimize.minimize最大化函数,但由于某些原因没有给出正确的答案 import numpy as np import pandas as pd import math from scipy.optimize import minimize import matplotlib.pyplot as plt eps = 0.001 def safe_log(x): if x > eps: return math.log(x) loge

我正在尝试使用optimize.minimize最大化函数,但由于某些原因没有给出正确的答案

import numpy as np
import pandas as pd
import math
from scipy.optimize import minimize
import matplotlib.pyplot as plt

eps = 0.001
def safe_log(x):
    if x > eps:
        return math.log(x)
    logeps = np.log(eps)
    a = 1 / (3 * eps * (3 * logeps * eps)**2)
    b = eps * (1 - 3 * logeps)
    return a * (x - b)**3    

def funct(x):
    return -(( (1 - 0.45192566) * safe_log( 1 - x )) + ( 0.45192566 * safe_log( 1 + ((5.5 - 1)*x) )))

cons = ({'type': 'ineq', 'fun': lambda x: x-1})
bnds = ((0, None),)

res = minimize(funct, (0), constraints=cons, bounds=bnds)
print("res", res.x)
print("mes", res.message)

x = []
y = []
for i in range(0, 100):
    x.append(i/100)
    y.append(funct(i/100))
    pass

plt.plot(x,y)
plt.show()
计算出的答案是1

如果我绘制函数,有一个清晰的min,如图所示


我已经被这个问题困扰了几天,我找不到答案。

您已经将
x
限制为至少1:

cons = ({'type': 'ineq', 'fun': lambda x: x-1})

SciPy已经成功地最小化了受边界和约束的目标函数。根据这些界限和约束,最小值出现在x=1。

请发布运行的代码段,并在运行时复制错误。我们不能运行这个。这个约束到底是怎么回事?你的代码不好。只需复制粘贴它并尝试运行它。你能跑吗?如果没有,则编辑它。我收到
索引器错误:SLSQP错误:边界的长度与x0的长度不兼容。
对不起,我的坏人,现在它正在工作。第一次在这里发布它将不会再次发生。现在,这是工作,请考虑(a)删除这个问题,或(b)张贴问题的答案与细节,你是如何解决它。