我正在尝试使用 优化预测参数scipy.optimize。我按照教程进行操作,还在 stackoverflow 上找到了一些很好的示例,但我遇到了一个我无法解决的问题。我开始怀疑使用 pandas 是否是 scipy 的糟糕选择?
我已将我的代码设置如下:
import simpy
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
import pandas as pd
import statistics as stat
import math as m
#from sklearn.grid_search import ParameterGrid
from scipy.optimize import minimize
###dataframe for the simulation
df = pd.read_csv('simulation_df_data_2018_2.csv')
with pd.option_context("max_rows", None,"max_columns", None):
print(df.head())
for i in df.index:
alpha = 0.2
beta = 0.3
x = np.array([alpha, beta])
def holts(x):
LO = np.int(df['average_demand'].loc[i])
print(type(LO))
TO = ((df['m2'].loc[i] - df['m3'].loc[i]) + (df['m1'].loc[i] - df['m2'].loc[i])) / 2
L1 = round(x[0] * df['m3'].loc[i] + (1 - x[0]) * (
LO + TO))
T1 = x[1] * (L1 - LO) + (1 - x[1]) * TO
L2 = round(x[0] * df['m2'].loc[i] + (1 - x[0]) * (
L1 + T1))
T2 = x[1] * (L2 - L1) + (1 - x[1]) * T1
L3 = round(x[0] * df['m1'].loc[i] + (1 - x[0]) * (
L2 + T2))
T3 = beta * (L3 - L2) + (1 - beta) * T2
LT1 = round(L3 + 1 * T3)
MSE = ((df['m3'].loc[i] - L1) + (df['m2'].loc[i] - L2) + (
df['m2'].loc[i] - L3)) ** 2 / 3
return MSE
#print(holts(x))
x0 = [0.1,0.1]
result = minimize(holts, x0, bounds=[(0,1),(0,1)], method="SLSQP")
print(result)
print(x)
达令说
相关分类