我尝试解决乘以向量“因子”之和的因子 x。向量“因子”的总和应该是向量“基本”的总和。首先,我阅读了一个类似于以下 DataFrame 的 csv:
提前感谢您的帮助。
好吧,我也尝试过最小化和反弹。也许使用 scipy.optimize 会更好?
import pandas as pd
from scipy.optimize import minimize, optimize
import numpy as np
path='/scipytest.csv'
dffunc=pd.read_csv(path, decimal=',', delimiter=';')
BaseSum=np.sum(dffunc['Basic'])
FacSum=np.sum(dffunc['Factor'])
def f(x, FacSum):
return BaseSum-FacSum*x
con = {'type': 'ineq',
'fun': lambda BaseSum,FacSum: BaseSum-FacSum,
'args': (FacSum,)}
x=0
result = minimize(f,(x,FacSum), args=(FacSum,), method='SLSQP', constraints=con)
print(result.x)
print(f(result.x))
raise ValueError("目标函数必须返回一个标量")
ValueError:目标函数必须返回一个标量