如题
题目是求目标函数最小值,附有限制条件
这是显示Inequality constraints incompatible的代码
import numpy as np
from scipy.optimize import minimize
def func(x):
return np.log2(1+2*x[0]/3 + np.log2(3*x[1]/4))
cons = ({'type':'ineq', 'fun':lambda x:np.log2(1 + 2*x[0]/5) - 5},
{'type':'ineq', 'fun':lambda x:np.log2(1 + 6*x[1]/4) - 5},
)
x0 = np.array([0.5,0.5])
res = minimize(func,x0,constraints=cons)
print(res)
但是这样写却可以正常运行并得出结果
import numpy as np
from scipy.optimize import minimize
def fun(a,b,c,d):
def v(x):
return np.log2(1+x[0]*a/b)+np.log2(1+x[1]*c/d)
return v
#限制条件函数
def con(a,b,i):
def v(x):
return np.log2(1 + x[i] * a / b)-5
return v
# 定义常量值
args = [2, 3, 3, 4] # a,b,c,d
args1 = [2, 5, 6, 4]
# 设置初始猜测值
x0 = np.asarray((0.5, 0.5))
#设置限制条件
cons = ({'type': 'ineq', 'fun': con(args1[0],args1[1],0)},
{'type': 'ineq', 'fun': con(args1[2],args1[3],1)},
)
res = minimize(fun(args[0], args[1], args[2], args[3]), x0, constraints=cons)
print(res)
给我人整蒙了
不知道你这个问题是否已经解决, 如果还没有解决的话: