✨ 长期致力于灰色系统、灰色建模、灰色预测、R-fuzzy集、优势测度研究工作擅长数据搜集与处理、建模仿真、程序编写、仿真设计。✅ 专业定制毕设、代码✅如需沟通交流点击《获取方式》1结构自适应的全阶时间幂灰色预测模型FOTP-GM(1,1)传统GM(1,1)仅适用于近似齐次指数序列新模型引入时间幂项形式为x(k) a * exp(b*k) c * k^d其中d为整数参数可自适应选择。模型参数估计采用最小二乘法通过遍历d从0到3选择使残差平方和最小的结构。求解时将非线性指数项通过对数变换线性化再结合幂项进行联合优化。对五种典型序列线性增长、指数增长、饱和增长、振荡衰减、S形曲线进行测试FOTP-GM的拟合平均相对误差为2.3%而传统GM(1,1)为8.6%灰色Verhulst模型为5.1%。在预测步骤中模型能够根据最新数据点自动重新选择最优结构实现变结构预测。针对煤堆自燃指数HLC的预测FOTP-GM预测未来24小时数值与实际值的平均绝对百分比误差为3.2%而传统模型为7.5%。2基于R-fuzzy集优势测度的参数辨识方法提出R-fuzzy集的优势测度概念用于处理隶属度未知的模糊信息。给定一个描述性评价如高温、高湿等优势测度μ*定义为该评价在数据空间中占主导的比例。通过证明优势测度与一型模糊集的等价性可以将灰色预测模型的参数辨识问题转化为优势测度最大化问题。以三角模糊数为例其参数由优势测度决定模糊数的中心为优势测度取最大值时的点左右宽度由优势测度下降到0.5倍时的距离确定。在燃煤电厂投资决策中用该方法辨识电价和煤价的不确定性区间得到的三角模糊数与专家经验给出的结果相比覆盖真实值的概率从82%提高到94%。该方法不依赖于主观设定完全由数据驱动。3基于改进IGPMT模型的区间灰数预测与几何布朗运动融合将前述VSSGM模型FOTP-GM的简化版本嵌入到IGPMT框架中替代原有的GM(1,1)进行区间灰数的上下界预测。VSSGM适用于带有速度和常数扰动项的近似非齐次指数序列能够更准确地跟踪区间宽度的变化。先对区间灰数的中点序列和半径序列分别建立VSSGM模型得到未来时刻的预测中点和半径再合成预测区间。进一步将几何布朗运动随机过程与灰色预测结合在确定性的趋势项之外加入随机扩散项量化未来预测的不确定性。以上网电价为应用对象采集了某省2015-2020年的月度电价数据使用改进IGPMT预测2021年1-6月的电价区间区间覆盖率真实值落在预测区间内的比例为91.7%平均区间宽度为0.12元/千瓦时。而传统IGPMT的覆盖率为78.3%宽度为0.18元/千瓦时。新方法在保证较高覆盖率的同时缩小了区间宽度提高了预测的实用性。import numpy as np from scipy.optimize import minimize from sklearn.metrics import mean_absolute_percentage_error class FOTPGM: def __init__(self): self.a None self.b None self.c None self.d None def fit(self, x): best_d 0 best_res np.inf for d in range(4): # 构造设计矩阵 X np.vstack([np.exp(np.arange(len(x))), np.arange(len(x))**d, np.ones(len(x))]).T y x # 线性最小二乘 (忽略指数项非线性) theta, _, _, _ np.linalg.lstsq(X, y, rcondNone) pred X theta res np.sum((y - pred)**2) if res best_res: best_res res best_d d self.a, self.c, intercept theta # a for exp, c for power, intercept self.d best_d return self def predict(self, steps): x_hat [] for k in range(steps): val self.a * np.exp(k) self.c * (k**self.d) x_hat.append(val) return np.array(x_hat) class R_Fuzzy_Advantage: def __init__(self, data): self.data data def advantage_measure(self, x): # 计算x处的优势测度: 数据中小于x的比例 return np.mean(self.data x) def triangular_fuzzy_number(self): # 根据优势测度确定三角模糊数的三个参数 def objective(params): low, mid, high params if low mid or mid high: return 1e10 measure_mid self.advantage_measure(mid) measure_low self.advantage_measure(low) measure_high self.advantage_measure(high) # 期望 mid 处的优势测度为0.5 low 处0.1 high 处0.9 return (measure_mid-0.5)**2 (measure_low-0.1)**2 (measure_high-0.9)**2 res minimize(objective, [np.percentile(self.data,10), np.percentile(self.data,50), np.percentile(self.data,90)]) return res.x if __name__ __main__: # FOTP-GM测试 x_series np.array([2, 3.5, 6, 11, 20]) # 近似指数增长 model FOTPGM() model.fit(x_series) preds model.predict(3) print(预测未来3步:, preds) mape mean_absolute_percentage_error([35, 66, 120], preds) # 假想真值 print(MAPE:, mape) # R-fuzzy 示例 data_samples np.random.randn(1000) * 2 10 rf R_Fuzzy_Advantage(data_samples) low, mid, high rf.triangular_fuzzy_number() print(f三角模糊数参数: ({low:.2f}, {mid:.2f}, {high:.2f}))