当前位置:首页>python>290-机器学习算法全家桶(python代码),包含智能优化算法,单/双重分解算法,残差修正,降噪,统计模型,机器学习

290-机器学习算法全家桶(python代码),包含智能优化算法,单/双重分解算法,残差修正,降噪,统计模型,机器学习

  • 2026-03-27 09:18:20
290-机器学习算法全家桶(python代码),包含智能优化算法,单/双重分解算法,残差修正,降噪,统计模型,机器学习

关键词:机器学习算法全家桶(python代码),包含智能优化算法,单/双重分解算法,残差修正,降噪,统计模型,机器学习算法

代码获取:方法一:直接点击底部 “阅读原文”;方法二:PC端点击下载:

仿真平台:anaconda + pycharm + python +Tensorflow

代码内容总计105个机器学习python代码, 主要包含智能优化算法,单/双重分解算法,残差修正,降噪,统计模型,机器学习算法几类代码。具体代码名称,见下图所示:

智能优化算法:

单分解算法:

双分解算法:

残差修正:

降噪算法:

统计模型:

常规机器学习模型:

CEEMDAN-ABC-VMD-DBO-CNN-LSTM 双重分解部分代码举例展示:

#!/usr/bin/env python

# coding: utf-8

# In[1]:

import time # 导入 time 模块,用于时间相关操作

#更多模型搜索“清朝简单的饮料”或者“安仁坊天蝎座果蔬”,支持模型定制

import copy # 导入 copy 模块,用于复制对象

import numpy # 导入 numpy 模块,用于数值计算

import random # 导入 random 模块,用于生成随机数

import datetime # 导入 datetime 模块,用于日期和时间相关操作

import math # 导入 math 模块,用于数学计算

import pandas as pd # 导入 pandas 模块,用于数据处理

import numpy as np # 导入 numpy 模块,用于数值计算

import matplotlib.pyplot as plt # 导入 matplotlib.pyplot 模块,用于绘图

from PyEMD import EMD, EEMD, CEEMDAN # 从 PyEMD 模块中导入 EMD、EEMD、CEEMDAN 类,用于经验模态分解

from sampen import sampen2 # 从 sampen 模块中导入 sampen2 函数,用于计算样本熵

from vmdpy import VMD # 从 vmdpy 模块中导入 VMD 类,用于变分模态分解

import tensorflow as tf # 导入 tensorflow 模块,用于深度学习

from sklearn.cluster import KMeans # 从 sklearn.cluster 模块中导入 KMeans 类,用于聚类分析

from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error, mean_absolute_percentage_error # 从 sklearn.metrics 模块中导入评估指标函数

from sklearn.preprocessing import MinMaxScaler # 从 sklearn.preprocessing 模块中导入 MinMaxScaler 类,用于数据归一化

from tensorflow.keras.models import Sequential # 从 tensorflow.keras.models 模块中导入 Sequential 类,用于构建模型

from tensorflow.keras.layers import Dense, Activation, Dropout, LSTM, GRU # 从 tensorflow.keras.layers 模块中导入 Dense、Activation、Dropout、LSTM、GRU 类,用于构建神经网络层

from keras.layers import Conv1D, Add, Dropout, Flatten, MaxPooling1D # 从 keras.layers 模块中导入 Conv1D、Add、Dropout、Flatten、MaxPooling1D 类,用于构建卷积神经网络层

from tensorflow.keras.callbacks import ReduceLROnPlateau, EarlyStopping # 从 tensorflow.keras.callbacks 模块中导入 ReduceLROnPlateau、EarlyStopping 类,用于回调函数

import warnings # 导入 warnings 模块,用于忽略警告信息

from scipy.fftpack import hilbert, fft, ifft # 从 scipy.fftpack 模块中导入 hilbert、fft、ifft 函数,用于傅里叶变换

from math import log # 导入 math 模块中的 log 函数,用于数学计算中的对数运算

from typing import List # 导入 typing 模块中的 List 类型,用于函数参数注解

#更多模型搜索“清朝简单的饮料”或者“安仁坊天蝎座果蔬”,支持模型定制

warnings.filterwarnings("ignore") # 忽略警告信息

# In[2]:

# 调用GPU加速

gpus = tf.config.experimental.list_physical_devices(device_type='GPU')

for gpu in gpus:

  tf.config.experimental.set_memory_growth(gpu, True)

# In[3]:

plt.rcParams['font.sans-serif'] = ['Times New Roman'] # 设置图形的字体为'Times New Roman',用于正常显示中文

plt.rcParams['axes.unicode_minus'] = False # 用来解决图形中负号显示异常的问题,设置为False表示不使用unicode编码来显示负号,以确保负号显示正常

# In[4]:

df_raw_data = pd.read_csv('焦作.csv', usecols=[0,1]) # 从名为'焦作.csv'的CSV文件中读取数据,仅选择第一列和第二列进行读取,并存储在DataFrame对象df_raw_data中

series_close = pd.Series(df_raw_data['AQI'].values, index=df_raw_data['time']) # 将df_raw_data中列名为'AQI'的数据转换为Series对象,其中'AQI'列的值将作为Series的值,而列名为'time'的数据将作为Series的索引

test = df_raw_data['AQI'].values[int(len(df_raw_data['AQI'].values)*0.8):] # 从'AQI'列的值中根据切片操作获取80%之后的部分,并将其赋值给test变量

# In[5]:

timestep = 30 # 定义时间步数,用于创建训练集和测试集

tau = 0. # 设置VMD分解的参数tau,用于控制模态函数的带宽

DC = 0 # 设置VMD分解的参数DC,用于控制是否提取直流分量

init = 1 # 设置VMD分解的参数init,用于设置初始模态函数数量

tol = 1e-7 # 设置VMD分解的参数tol,用于控制停止迭代的阈值

# In[6]:

class ProblemModel:

  def __init__(self, bounds=None):

    self.bounds = bounds # 初始化类的实例时,将参数bounds赋值给实例变量self.bounds

  def getIndependentVar(self):

    if self.bounds is not None: # 如果self.bounds不为None

      independentVar = []

      for bound in self.bounds:

        # 在每个bound范围内生成一个随机数,并添加到independentVar列表中

        independentVar.append(bound[0] + random.random() * (bound[1] - bound[0]))

      return independentVar # 返回生成的独立变量列表

    else:

      pass # 如果self.bounds为None,则不执行任何操作

  #更多模型搜索“清朝简单的饮料”或者“安仁坊天蝎座果蔬”,支持模型定制

  def getNewVar(self, var_1, var_2):

    if self.bounds is not None: # 如果self.bounds不为None

      newVar = []#更多模型搜索“清朝简单的饮料”或者“安仁坊天蝎座果蔬”,支持模型定制

      step_random = random.random() # 生成一个0到1之间的随机数

      for v_1, v_2 in zip(var_1, var_2):

        # 根据var_1和var_2的值生成一个新的变量,并添加到newVar列表中

        newVar.append(v_1 + step_random * (v_2 - v_1))

      return newVar # 返回生成的新变量列表

    else:

      pass # 如果self.bounds为None,则不执行任何操作

  def getValue(self, variable):#更多模型搜索“清朝简单的饮料”或者“安仁坊天蝎座果蔬”,支持模型定制

    if len(variable) == 2: # 如果variable列表长度为2

      K = int(variable[0]) # 将variable的第一个元素转换为整数赋值给变量K

      alpha = variable[1] # 将variable的第二个元素赋值给变量alpha

      if K < self.bounds[0][0]: # 如果K小于bounds的第一个元素的第一个值

        K = self.bounds[0][0] # 将K赋值为bounds的第一个元素的第一个值

      if K > self.bounds[0][1]: # 如果K大于bounds的第一个元素的第二个值

        K = self.bounds[0][1] # 将K赋值为bounds的第一个元素的第二个值

      if alpha < self.bounds[1][0]: # 如果alpha小于bounds的第二个元素的第一个值

        alpha = self.bounds[1][0] # 将alpha赋值为bounds的第二个元素的第一个值

      if alpha > self.bounds[1][1]: # 如果alpha大于bounds的第二个元素的第二个值

        alpha = self.bounds[1][1] # 将alpha赋值为bounds的第二个元素的第二个值

      u, u_hat, omega = VMD(df_raw_data['AQI'], alpha, tau, K, DC, init, tol)

      # 调用VMD函数,传入相应参数,并将返回的结果分别赋值给变量u、u_hat和omega

      EP = []

      for i in range(K): # 对于范围为K的循环迭代

        H = np.abs(hilbert(u[i, :])) # 对u[i, :]进行希尔伯特变换并取绝对值,赋值给变量H

        e1 = []

        for j in range(len(H)): # 对于范围为H长度的循环迭代

          p = H[j] / np.sum(H) # 计算H[j]占H所有元素之和的比例,赋值给变量p

          e = -p * log(p, 2) # 计算信息熵并赋值给变量e

          e1.append(e) # 将e添加到e1列表中

        E = np.sum(e1) # 计算e1列表中所有元素的和,并赋值给变量E

        EP.append(E) # 将E添加到EP列表中

      s = np.sum(EP) / K # 计算EP列表中所有元素的和除以K,并赋值给变量s

      return s # 返回变量s作为结果

    else:

      return 1 # 如果variable列表长度不为2,则返回1作为结果

# In[7]:

class NectarSource:

  problem_src = None # 类变量problem_src,用于存储问题源

  def __init__(self, position):#更多模型搜索“清朝简单的饮料”或者“安仁坊天蝎座果蔬”,支持模型定制

    self.position = position # 实例变量position,存储蜜源的位置

    self.value = self.problem_src.getValue(position) # 实例变量value,根据问题源的getValue方法计算蜜源的值

    if self.value >= 0: # 如果蜜源的值大于等于0

      self.fitness = 1 / (1 + self.value) # 计算蜜源的适应度

    else:

      self.fitness = 1 + math.fabs(self.value) # 计算蜜源的适应度(值小于0时)

    self.trail = 0 # 初始化实例变量trail为0,用于存储蜜源的信息素浓度

# In[8]:

class ABCAlgor:

  LIMIT = 10 # 类变量LIMIT,用于指定蜜源的最大尝试次数

  def __init__(self, problem, employedNum, onlookerNum, maxIteration):

    NectarSource.problem_src = problem # 将问题源赋值给类变量problem_src

    self.problem = problem # 实例变量problem,存储问题源

    self.employedNum = employedNum # 实例变量employedNum,指定雇佣蜜蜂数量

    self.onlookerNum = onlookerNum # 实例变量onlookerNum,指定观察蜜蜂数量

    self.maxIteration = maxIteration # 实例变量maxIteration,指定最大迭代次数

    self.nectarSrc = [] # 实例变量nectarSrc,存储蜜源列表

    self.bestNectar = NectarSource(self.problem.getIndependentVar()) # 实例变量bestNectar,存储最优蜜源

    self.resultRecord = [] # 实例变量resultRecord,存储迭代过程中的结果记录

    for i in range(self.employedNum):

      self.nectarSrc.append(NectarSource(self.problem.getIndependentVar())) # 初始化蜜源列表

  #更多模型搜索“清朝简单的饮料”或者“安仁坊天蝎座果蔬”,支持模型定制

  def updateNectarSrc(self, index):

    src = self.nectarSrc[index] # 获取指定索引的蜜源

    src_another = random.choice(self.nectarSrc) # 从蜜源列表中随机选择另一个蜜源

    while src_another is src:

      src_another = random.choice(self.nectarSrc) # 如果随机选择的蜜源与当前蜜源相同,则重新选择

    src_new = NectarSource(self.problem.getNewVar(src.position, src_another.position)) # 基于当前蜜源和另一个蜜源生成新的蜜源

    if src_new.fitness > src.fitness: # 如果新蜜源的适应度大于当前蜜源的适应度

      self.nectarSrc[index] = src_new # 更新蜜源列表中的蜜源为新蜜源

    else:

      self.nectarSrc[index].trail += 1 # 否则,当前蜜源的信息素浓度加1

  def employedProcedure(self):#更多模型搜索“清朝简单的饮料”或者“安仁坊天蝎座果蔬”,支持模型定制

    length = len(self.nectarSrc) # 获取蜜源列表的长度

    for i in range(length):

      self.updateNectarSrc(i) # 更新蜜源列表中的每个蜜源

  def onlookerProcedure(self):

    sum_fitness = 0 # 初始化总适应度为0

    for src in self.nectarSrc:

      sum_fitness += src.fitness # 计算总适应度

    length = len(self.nectarSrc) # 获取蜜源列表的长度

    for i in range(length):#更多模型搜索“清朝简单的饮料”或者“安仁坊天蝎座果蔬”,支持模型定制

      probability_fit = self.nectarSrc[i].fitness / sum_fitness # 计算每个蜜源的适应度概率

      for onlookerBee in range(self.onlookerNum):

        if random.random() < probability_fit: # 根据适应度概率决定是否更新蜜源

          self.updateNectarSrc(i) # 更新蜜源列表中的蜜源

  def updateBestNectar(self):#更多模型搜索“清朝简单的饮料”或者“安仁坊天蝎座果蔬”,支持模型定制

    for src in self.nectarSrc:

      if src.fitness > self.bestNectar.fitness: # 如果蜜源的适应度大于最优蜜源的适应度

        self.bestNectar = src # 更新最优蜜源为当前蜜源

  def scoutProcedure(self):

    length = len(self.nectarSrc) # 获取蜜源列表的长度

    for i in range(length):

      if self.nectarSrc[i].trail >= self.LIMIT: # 如果蜜源的信息素浓度超过限制

        self.nectarSrc[i] = NectarSource(self.problem.getIndependentVar()) # 重新生成蜜源

  def run(self):

    for i in range(self.maxIteration): # 在最大迭代次数范围内进行迭代

      print('迭代次数:', i) # 输出当前迭代次数

      self.employedProcedure() # 执行雇佣蜜蜂阶段

      self.onlookerProcedure() # 执行观察蜜蜂阶段

      self.updateBestNectar() # 更新最优蜜源#更多模型搜索“清朝简单的饮料”或者“安仁坊天蝎座果蔬”,支持模型定制

      self.scoutProcedure() # 执行侦查蜜蜂阶段

      self.updateBestNectar() # 再次更新最优蜜源

      self.resultRecord.append(self.bestNectar.value) # 将当前最优蜜源的值记录下来

    return self.bestNectar.position, self.bestNectar.value # 返回最优蜜源的位置和值

    print('best solution:', int(self.bestNectar.position[0]), self.bestNectar.position[1]) # 输出最优蜜源的位置

    print('best value:', self.bestNectar.value) # 输出最优蜜源的值

  def showResult(self):

    for result in self.resultRecord:

      print(result) # 输出每次迭代的结果记录

    plt.plot(self.resultRecord) # 绘制结果曲线

    plt.title('result curve') # 设置标题

    plt.tight_layout() # 调整布局

    plt.show() # 显示结果曲线#更多模型搜索“清朝简单的饮料”或者“安仁坊天蝎座果蔬”,支持模型定制

# In[9]:

beesNum = 1 # 蜜蜂数量为1

employedNum = int(beesNum/2) # 雇佣蜜蜂数量为蜜蜂数量的一半(向下取整)

onlookerNum = int(beesNum/2) # 观察蜜蜂数量为蜜蜂数量的一半(向下取整)

maxIteration = 1 # 最大迭代次数为1

problem = ProblemModel(bounds=([3, 25], [100, 3500])) # 创建问题模型对象,设置变量范围

abcSolution = ABCAlgor(problem, employedNum, onlookerNum, maxIteration) # 创建ABC算法对象,传入问题模型和参数

abcSolution.run() # 运行ABC算法

abcSolution.showResult() # 显示结果

# In[10]:

def ceemdan_decompose(series=None, trials=10, num_clusters=3): 

  decom = CEEMDAN() # 创建CEEMDAN对象

  decom.trials = trials # 设置分解的试验次数

  df_ceemdan = pd.DataFrame(decom(series.values).T) # 对数据进行CEEMDAN分解并转换为数据框

  df_ceemdan.columns = ['imf'+str(i) for i in range(len(df_ceemdan.columns))] # 为每一列设置列名为'imf' + 对应的索引号

  return df_ceemdan # 返回分解后的数据框

# In[11]:

def sample_entropy(df_ceemdan=None, mm=1, r=0.1):

  np_sampen = [] # 存储样本熵的列表

  for i in range(len(df_ceemdan.columns)):

    sample_entropy = sampen2(list(df_ceemdan['imf'+str(i)].values), mm=mm, r=r, normalize=True) # 计算样本熵

    np_sampen.append(sample_entropy[1][1]) # 将样本熵的值添加到列表中

  df_sampen = pd.DataFrame(np_sampen, index=['imf'+str(i) for i in range(len(df_ceemdan.columns))]) # 创建样本熵的数据框,设置行索引为'imf' + 对应的索引号

  return df_sampen # 返回样本熵的数据框

# In[12]:

def kmeans_cluster(df_sampen=None, num_clusters=3): 

  np_integrate_form = KMeans(n_clusters=num_clusters, random_state=9).fit_predict(df_sampen) # 使用K均值聚类进行聚类操作

  df_integrate_form = pd.DataFrame(np_integrate_form, index=['imf'+str(i) for i in range(len(df_sampen.index))], columns=['AQI']) # 创建聚类结果的数据框,设置行索引为'imf' + 对应的索引号,列名为'AQI'

  return df_integrate_form # 返回聚类结果的数据框

# In[13]:

def integrate_imfs(df_integrate_form=None, df_ceemdan=None): 

  df_tmp = pd.DataFrame() # 创建一个空的数据框用于存储临时结果

  for i in range(df_integrate_form.values.max()+1):

    df_tmp['imf'+str(i)] = df_ceemdan[df_integrate_form[(df_integrate_form['AQI']==i)].index].sum(axis=1) # 对每个聚类簇内的IMF分量进行求和,得到综合的IMF分量

  df_integrate_result = df_tmp.T # 对临时结果进行转置

  df_integrate_result['sampen'] = sample_entropy(df_tmp).values # 计算综合的IMF分量的样本熵,并将其作为新的列添加到结果数据框中

  df_integrate_result.sort_values(by=['sampen'], ascending=False, inplace=True) # 根据样本熵降序排列综合的IMF分量

  df_integrate_result.index = ['co-imf'+str(i) for i in range(df_integrate_form.values.max()+1)] # 为综合的IMF分量设置新的行索引,命名规则为'co-imf' + 对应的索引号

  df_integrate_result = df_integrate_result.drop('sampen', axis=1, inplace=False) # 移除样本熵这一列

  return df_integrate_result.T # 返回结果数据框的转置

# In[14]:

def vmd_decompose(series=None, alpha=math.floor(abcSolution.bestNectar.position[1]), tau=tau, 

         K=math.floor(abcSolution.bestNectar.position[0]), DC=DC, init=init, tol=tol, draw=True): #更多模型搜索“清朝简单的饮料”或者“安仁坊天蝎座果蔬”,支持模型定制

  imfs_vmd, imfs_hat, omega = VMD(series, alpha, tau, K, DC, init, tol) # 使用VMD方法对时间序列进行分解

  df_vmd = pd.DataFrame(imfs_vmd.T) # 将VMD分解得到的IMFs转换为数据框

  df_vmd.columns = ['imf'+str(i) for i in range(K)] # 为每个IMF分量设置列名,命名规则为'imf' + 对应的索引号

  return df_vmd # 返回VMD分解得到的IMFs数据框

# In[15]:

def create_train_test_set(data=None, timestep=timestep, co_imf_predict_for_fitting=None): 

  if isinstance(data, pd.DataFrame): # 如果数据是数据框类型

    dataY = data['sum'].values.reshape(-1, 1) # 将数据框中名为'sum'的列作为目标变量,并将其转换为二维数组形式

    dataX = data.drop('sum', axis=1, inplace=False) # 去除数据框中的目标变量列,得到输入特征矩阵

  else: # 如果数据是数组类型

    dataY = data.values.reshape(-1, 1) # 将数据转换为二维数组形式作为目标变量

    dataX = dataY # 输入特征矩阵与目标变量相同

  scalarX = MinMaxScaler(feature_range=(0,1)) # 创建MinMaxScaler对象,将输入特征矩阵归一化到0~1之间

  dataX = scalarX.fit_transform(dataX) # 对输入特征矩阵进行归一化

  if co_imf_predict_for_fitting is not None: # 如果提供了用于拟合的共同IMF预测结果

    co_imf_predict_for_fitting = scalarX.transform(co_imf_predict_for_fitting) # 对共同IMF预测结果进行归一化

  scalarY = MinMaxScaler(feature_range=(0,1)) # 创建MinMaxScaler对象,将目标变量归一化到0~1之间

  dataY = scalarY.fit_transform(dataY) # 对目标变量进行归一化

  trainX, trainY = [], [] # 初始化训练集的输入特征和目标变量列表

  for i in range(len(dataY)-timestep):

    trainX.append(np.array(dataX[i:(i+timestep)])) # 将前timestep个时间步作为输入特征添加到训练集的输入特征列表

    trainY.append(np.array(dataY[i+timestep])) # 将第timestep个时间步的目标变量添加到训练集的目标变量列表

    if co_imf_predict_for_fitting is not None: # 如果提供了用于拟合的共同IMF预测结果

      if i < (len(dataY)-timestep-len(co_imf_predict_for_fitting)):

        trainX[i] = np.insert(trainX[i], timestep, dataX[i+timestep], 0) # 将真实的输入特征添加到训练集的输入特征中

      else:

        trainX[i] = np.insert(trainX[i], timestep, co_imf_predict_for_fitting[i-(len(dataY)-timestep-len(co_imf_predict_for_fitting))], 0) # 将共同IMF预测结果添加到训练集的输入特征中

  return np.array(trainX), np.array(trainY), scalarY # 返回训练集的输入特征、目标变量和目标变量的归一化器对象

# In[16]:

''' 种群初始化函数 '''

def initial(pop, dim, ub, lb):

  X = np.zeros([pop, dim]) # 创建一个形状为 (pop, dim) 的全零数组 X,用于存储种群的初始位置

  for i in range(pop):

    for j in range(dim):#更多模型搜索“清朝简单的饮料”或者“安仁坊天蝎座果蔬”,支持模型定制

      X[i, j] = random.random() * (ub[j] - lb[j]) + lb[j] # 生成一个位于 lb[j] 和 ub[j] 之间的随机数,赋值给 X[i, j]

  return X, lb, ub

'''边界检查函数'''

def BorderCheck(X, ub, lb, pop, dim):

  for i in range(pop):

    for j in range(dim):#更多模型搜索“清朝简单的饮料”或者“安仁坊天蝎座果蔬”,支持模型定制

      if X[i, j] > ub[j]: # 如果 X[i, j] 大于上界 ub[j],将其设置为上界

        X[i, j] = ub[j]

      elif X[i, j] < lb[j]: # 如果 X[i, j] 小于下界 lb[j],将其设置为下界

        X[i, j] = lb[j]

  return X

'''计算适应度函数'''

def CaculateFitness(X, fun):

  pop = X.shape[0] # 种群大小

  fitness = np.zeros([pop, 1]) # 创建一个形状为 (pop, 1) 的全零数组 fitness,用于存储适应度值

  for i in range(pop):

    fitness[i] = fun(X[i, :]) # 计算第 i 个个体的适应度值,将结果赋值给 fitness[i]

  return fitness

'''适应度排序'''

def SortFitness(Fit):

  fitness = np.sort(Fit, axis=0) # 按列排序适应度值数组 Fit,将结果赋值给 fitness

  index = np.argsort(Fit, axis=0) # 返回按列排序后的索引数组,将结果赋值给 index

  return fitness, index

'''根据适应度对位置进行排序'''

def SortPosition(X, index):

  Xnew = np.zeros(X.shape) # 创建一个与位置数组 X 相同形状的全零数组 Xnew

  for i in range(X.shape[0]):

    Xnew[i, :] = X[index[i], :] # 根据索引数组 index 对位置数组 X 进行排序,并将结果赋值给 Xnew

  return Xnew

# In[17]:

def DBO(pop, dim, lb, ub, MaxIter, fun):

  # 参数设置

  PballRolling = 0.2 # 滚球蜣螂比例

  PbroodBall = 0.4 #产卵蜣螂比例

  PSmall = 0.2 # 小蜣螂比例

  Pthief = 0.2 # 偷窃蜣螂比例

  BallRollingNum = int(pop*PballRolling) #滚球蜣螂数量

  BroodBallNum = int(pop*PbroodBall) #产卵蜣螂数量

  SmallNum = int(pop*PSmall) #小蜣螂数量

  ThiefNum = int(pop*Pthief) #偷窃蜣螂数量

  X, lb, ub = initial(pop, dim, ub, lb) # 初始化种群

  fitness = CaculateFitness(X, fun) # 计算适应度值

  # 记录全局最优

  minIndex = np.argmin(fitness) # 找到适应度最小值的索引

  GbestScore = copy.copy(fitness[minIndex]) # 复制最小适应度值作为全局最优分数

  GbestPositon = np.zeros([1, dim]) # 创建一个全0矩阵来存储全局最优位置

  GbestPositon[0, :] = copy.copy(X[minIndex, :]) # 复制最小适应度对应的位置为全局最优位置

  Curve = np.zeros([MaxIter, 1]) # 创建一个全0数组用于记录迭代过程中的最优分数

  Xl = copy.deepcopy(X) # 用于记录上一代的种群位置

  # 记录当前代种群

  cX = copy.deepcopy(X) # 复制当前种群位置

  cFit = copy.deepcopy(fitness) # 复制当前种群适应度值

  for t in range(MaxIter):  # 迭代次数循环,从0到MaxIter-1

    print("第" + str(t) + "次迭代")

    # 蜣螂滚动 文献中式(1),(2)更新位置

    # 获取种群最差值

    maxIndex = np.argmax(fitness) # 找到适应度最大值的索引

    Wort = copy.copy(X[maxIndex, :]) # 复制最大适应度对应的位置为Wort

    r2 = np.random.random() # 生成一个随机数r2

    for i in range(0,BallRollingNum): 

      # 循环迭代变量 i 在从 0 到 BallRollingNum(不包括)的范围内

      if r2<0.9: # 如果 r2 的值小于 0.9

        if np.random.random()>0.5: # 如果 np.random.random() 生成的随机数大于 0.5

          alpha=1 # 设置alpha为1

        else: # 如果 np.random.random() 生成的随机数不大于 0.5

          alpha=-1 # 设置alpha为-1

        b = 0.3 # 设置b为0.3

        k = 0.1 # 设置k为0.1#更多模型搜索“清朝简单的饮料”或者“安仁坊天蝎座果蔬”,支持模型定制

        X[i,:]=cX[i,:]+b*np.abs(cX[i,:]-Wort)+alpha*k*Xl[i,:]

        # 对 X 数组中的第 i 行进行赋值计算,计算结果由 cX[i, :], b, np.abs(cX[i, :] - Wort), alpha 和 k * Xl[i, :] 组合得到

      else: # 如果 r2 的值不小于 0.9

        theta = np.random.randint(180)# 生成一个0到179之间的随机整数

        if theta==0 or theta == 90 or theta == 180: # 如果theta的值为0、90或180度

          X[i,:]=copy.copy(cX[i,:])# 将当前位置复制给新位置

        else:#更多模型搜索“清朝简单的饮料”或者“安仁坊天蝎座果蔬”,支持模型定制

          theta = theta*np.pi/180 # 将theta转换为弧度制

          X[i,:]=cX[i,:]+np.tan(theta)*np.abs(cX[i,:]-Xl[i,:])

          # 对 X 数组中的第 i 行进行赋值计算,计算结果由 cX[i, :], np.tan(theta), np.abs(cX[i, :] - Xl[i, :]) 组合得到

      for j in range(dim): # 循环迭代变量 j 在从 0 到 dim 的范围内

        if X[i,j]>ub[j]: # 如果 X 数组中的第 i 行、第 j 列的值大于上界 ub[j]

          X[i,j]=ub[j] # 将 X 数组中的第 i 行、第 j 列的值设置为上界 ub[j]

        if X[i,j]<lb[j]: # 如果 X 数组中的第 i 行、第 j 列的值小于下界 lb[j]

          X[i,j]=lb[j] # 将 X 数组中的第 i 行、第 j 列的值设置为下界 lb[j]

      fitness[i]=fun(X[i,:]) # 计算第 i 行的适应度值,计算结果由 fun 函数根据 X[i, :] 得到

      if fitness[i]<GbestScore: # 如果第 i 行的适应度值小于全局最优适应度值 GbestScore

        GbestScore=copy.copy(fitness[i]) # 将全局最优适应度值 GbestScore 更新为第 i 行的适应度值的副本

        GbestPositon[0,:]=copy.copy(X[i,:]) # 将全局最优位置 GbestPositon 的第一行设置为 X 数组中第 i 行的副本

    # 当前迭代最优#更多模型搜索“清朝简单的饮料”或者“安仁坊天蝎座果蔬”,支持模型定制

    minIndex=np.argmin(fitness) # 使用 np.argmin 函数找到适应度值数组 fitness 中的最小值的索引

    GbestB = copy.copy(X[minIndex,:]) # 将 GbestB 设置为 X 数组中索引为 minIndex 的行的副本

    # 蜣螂产卵 ,文献中式(3)

    R=1-t/MaxIter # 根据当前迭代次数 t 和最大迭代次数 MaxIter 计算 R 的值

    X1=GbestB*(1-R) # 根据全局最优解 GbestB 和 R 计算 X1 的值

    X2=GbestB*(1+R) # 根据全局最优解 GbestB 和 R 计算 X2 的值

    Lb = np.zeros(dim) # 创建长度为 dim 的零数组 Lb 和 Ub

    Ub = np.zeros(dim)#更多模型搜索“清朝简单的饮料”或者“安仁坊天蝎座果蔬”,支持模型定制

    for j in range(dim): # 循环迭代变量 j 在从 0 到 dim 的范围内

      Lb[j]=max(X1[j],lb[j]) # Lb[j] 的值为 X1[j] 和 lb[j] 中的较大值

      Ub[j]=min(X2[j],ub[j]) # Ub[j] 的值为 X2[j] 和 ub[j] 中的较小值

    for i in range(BallRollingNum,BallRollingNum+BroodBallNum):

      # 循环迭代变量 i 在从 BallRollingNum 到 BallRollingNum + BroodBallNum 的范围内

      b1=np.random.random() # 生成一个随机数 b1

      b2=np.random.random() # 生成一个随机数 b2

      X[i,:]=GbestB+b1*(cX[i,:]-Lb)+b2*(cX[i,:]-Ub)# 根据公式更新 X 数组中的第 i 行的值

      for j in range(dim): # 循环迭代变量 j 在从 0 到 dim 的范围内

        if X[i,j]>ub[j]: # 如果 X 数组中的第 i 行、第 j 列的值大于上界 ub[j]

          X[i,j]=ub[j] # 将 X 数组中的第 i 行、第 j 列的值设置为上界 ub[j]

        if X[i,j]<lb[j]: # 如果 X 数组中的第 i 行、第 j 列的值小于下界 lb[j]

          X[i,j]=lb[j] # 将 X 数组中的第 i 行、第 j 列的值设置为下界 lb[j]

      fitness[i]=fun(X[i,:]) # 计算第 i 行的适应度值,计算结果由 fun 函数根据 X[i, :] 得到

      if fitness[i]<GbestScore: # 如果第 i 行的适应度值小于全局最优适应度值 GbestScore

        GbestScore=copy.copy(fitness[i]) # 将全局最优适应度值 GbestScore 更新为第 i 行的适应度值的副本

        GbestPositon[0,:]=copy.copy(X[i,:]) # 将全局最优位置 GbestPositon 的第一行设置为 X 数组中第 i 行的副本

    # 小蜣螂更新#更多模型搜索“清朝简单的饮料”或者“安仁坊天蝎座果蔬”,支持模型定制

    #文献中(5),(6)

    R=1-t/MaxIter # 根据当前迭代次数 t 和最大迭代次数 MaxIter 计算 R 的值

    X1=GbestPositon[0,:]*(1-R) # 根据全局最优位置 GbestPositon 和 R 计算 X1 的值

    X2=GbestPositon[0,:]*(1+R) # 根据全局最优位置 GbestPositon 和 R 计算 X2 的值

    Lb = np.zeros(dim) # 创建长度为 dim 的零数组 Lb 和 Ub

    Ub = np.zeros(dim)#更多模型搜索“清朝简单的饮料”或者“安仁坊天蝎座果蔬”,支持模型定制

    for j in range(dim): # 循环迭代变量 j 在从 0 到 dim 的范围内

      Lb[j]=max(X1[j],lb[j]) # Lb[j] 的值为 X1[j] 和 lb[j] 中的较大值

      Ub[j]=min(X2[j],ub[j]) # Ub[j] 的值为 X2[j] 和 ub[j] 中的较小值

    for i in range(BallRollingNum+BroodBallNum,BallRollingNum+BroodBallNum+SmallNum):  

      # 循环迭代变量 i 在从 BallRollingNum + BroodBallNum 到 BallRollingNum + BroodBallNum + SmallNum 的范围内

      C1 = np.random.random([1,dim]) # 生成一个随机数组 C1,形状为 [1, dim]

      C2 = np.random.random([1,dim]) # 生成一个随机数组 C2,形状为 [1, dim]

      X[i,:]=GbestPositon[0,:]+C1*(cX[i,:]-Lb)+C2*(cX[i,:]-Ub) # 根据公式更新 X 数组中的第 i 行的值

      for j in range(dim): # 循环迭代变量 j 在从 0 到 dim 的范围内

        if X[i,j]>ub[j]: # 如果 X 数组中的第 i 行、第 j 列的值大于上界 ub[j]

          X[i,j]=ub[j] # 将 X 数组中的第 i 行、第 j 列的值设置为上界 ub[j]

        if X[i,j]<lb[j]: # 如果 X 数组中的第 i 行、第 j 列的值小于下界 lb[j]

          X[i,j]=lb[j] # 将 X 数组中的第 i 行、第 j 列的值设置为下界 lb[j]#更多模型搜索“清朝简单的饮料”或者“安仁坊天蝎座果蔬”,支持模型定制

      fitness[i]=fun(X[i,:]) # 计算第 i 行的适应度值,计算结果由 fun 函数根据 X[i, :] 得到

      if fitness[i]<GbestScore: # 如果第 i 行的适应度值小于全局最优适应度值 GbestScore

        GbestScore=copy.copy(fitness[i]) # 将全局最优适应度值 GbestScore 更新为第 i 行的适应度值的副本

        GbestPositon[0,:]=copy.copy(X[i,:]) # 将全局最优位置 GbestPositon 的第一行设置为 X 数组中第 i 行的副本

    # 当前迭代最优

    minIndex=np.argmin(fitness) # 使用 np.argmin 函数找到适应度值数组 fitness 中的最小值的索引

    GbestB = copy.copy(X[minIndex,:]) # 将 GbestB 设置为 X 数组中索引为 minIndex 的行的副本

    # 偷窃蜣螂更新 

    # 文献中式(7)

    for i in range(pop-ThiefNum,pop): # 循环迭代变量 i 在从 pop - ThiefNum 到 pop 的范围内

      g=np.random.randn() # 生成一个符合标准正态分布的随机数 g

      S=0.5 # 设置 S 的值为 0.5

      X[i,:]=GbestPositon[0,:]+g*S*(np.abs(cX[i,:]-GbestB)+np.abs(cX[i,:]-GbestPositon[0,:])) # 根据公式更新 X 数组中的第 i 行的值

      for j in range(dim): # 循环迭代变量 j 在从 0 到 dim 的范围内

        if X[i,j]>ub[j]: # 如果 X 数组中的第 i 行、第 j 列的值大于上界 ub[j]

          X[i,j]=ub[j] # 将 X 数组中的第 i 行、第 j 列的值设置为上界 ub[j]

        if X[i,j]<lb[j]: # 如果 X 数组中的第 i 行、第 j 列的值小于下界 lb[j]

          X[i,j]=lb[j] # 将 X 数组中的第 i 行、第 j 列的值设置为下界 lb[j]

      fitness[i]=fun(X[i,:]) # 计算第 i 行的适应度值,计算结果由 fun 函数根据 X[i, :] 得到

      if fitness[i]<GbestScore: # 如果第 i 行的适应度值小于全局最优适应度值 GbestScore

        GbestScore=copy.copy(fitness[i]) # 将全局最优适应度值 GbestScore 更新为第 i 行的适应度值的副本

        GbestPositon[0,:]=copy.copy(X[i,:]) # 将全局最优位置 GbestPositon 的第一行设置为 X 数组中第 i 行的副本

    # 记录t代种群

    Xl= copy.deepcopy(cX) # 将 Xl 设置为 cX 的深拷贝,即创建一个与 cX 一样的副本

    #更新当前代种群#更多模型搜索“清朝简单的饮料”或者“安仁坊天蝎座果蔬”,支持模型定制

    for i in range(pop): # 循环迭代变量 i 在从 0 到 pop 的范围内

      if fitness[i]<cFit[i]: # 如果第 i 个个体的适应度值小于当前代个体的适应度值 cFit[i]

        cFit[i]=copy.copy(fitness[i]) # 将当前代个体的适应度值 cFit[i] 更新为第 i 个个体的适应度值的副本

        cX[i,:]=copy.copy(X[i,:]) # 将当前代个体 cX 的第 i 行设置为 X 数组中第 i 行的副本

    Curve[t] = GbestScore # 将 Curve 数组的第 t 个元素设置为全局最优适应度值 GbestScore

  return GbestScore, GbestPositon, Curve # 返回全局最优适应度值 GbestScore、全局最优位置 GbestPositon 和适应度曲线 Curve

# In[18]:

def GRU_predict(data=None, predict_duration=len(test), fitting=None):

  trainX, trainY, scalarY = create_train_test_set(data, co_imf_predict_for_fitting=fitting) # 创建训练集的输入特征、目标变量,并进行归一化

  x_train, x_test = trainX[:-predict_duration], trainX[-predict_duration:] # 划分训练集和测试集的输入特征

  y_train, y_test = trainY[:-predict_duration], trainY[-predict_duration:] # 划分训练集和测试集的目标变量

  train_X = x_train.reshape((x_train.shape[0], x_train.shape[1], x_train.shape[2])) # 将训练集的输入特征进行形状调整

  test_X = x_test.reshape((x_test.shape[0], x_test.shape[1], x_test.shape[2])) # 将测试集的输入特征进行形状调整

  def GRU_model(filters, kernel_size, neurons1, neurons2, neurons3, dropout):

    model = Sequential() # 创建Sequential模型

    model.add(Conv1D(filters=filters, kernel_size=kernel_size, activation='tanh', input_shape=(train_X.shape[1], train_X.shape[2]))) # 添加一维卷积层

    model.add(MaxPooling1D(pool_size=1)) # 添加最大池化层

    model.add(LSTM(units=neurons1, return_sequences=True, input_shape=(train_X.shape[1], train_X.shape[2]))) # 添加LSTM层

    model.add(LSTM(units=neurons2, return_sequences=True)) # 添加LSTM层

    model.add(LSTM(units=neurons3, return_sequences=False)) # 添加LSTM层

    model.add(Dropout(dropout)) # 添加Dropout层

    model.add(Dense(units=1, activation='tanh')) # 添加全连接层

    model.compile(loss='mean_absolute_error', optimizer='Adam') # 编译模型

    return model

  def training(X): #定义适应度函数

    filters = int(X[0])#更多模型搜索“清朝简单的饮料”或者“安仁坊天蝎座果蔬”,支持模型定制

    kernel_size = int(X[1])

    neurons1 = int(X[2])

    neurons2 = int(X[3])

    neurons3 = int(X[4])

    dropout = round(X[5], 6)

    batch_size = int(X[6])

    print([X])

    model = GRU_model(filters, kernel_size, neurons1, neurons2, neurons3, dropout)

    model.fit(train_X, y_train, batch_size=batch_size, epochs=10, validation_split=0.1, verbose=0, callbacks=[EarlyStopping(monitor='val_loss', patience=22, restore_best_weights=True)]) # 训练模型

    y_test_predict = model.predict(test_X) # 对测试集进行预测

    temp_mse = mean_squared_error(y_test, y_test_predict) # 计算均方误差

    print(temp_mse)#更多模型搜索“清朝简单的饮料”或者“安仁坊天蝎座果蔬”,支持模型定制

    return temp_mse

  ub = np.array([700, 5, 300, 300, 300, 0.99, 300]) # 设置上界

  lb = np.array([1, 1, 1, 1, 1, 0.001, 1]) # 设置下界

  pop = 1 # 种群数量

  MaxIter = 1 # 最大迭代次数

  dim = 7 # 维度

  GbestScore, GbestPositon, Curve = DBO(pop, dim, lb, ub, MaxIter, training) # 使用DBO算法进行优化

  print('最优适应度值:', GbestScore)

  print('最优解:', GbestPositon)

  #定义早停函数

  patience = 100 // 10

  EarlyStop = EarlyStopping(monitor='val_loss', patience=5 * patience, verbose=0, mode='auto')

  Reduce = ReduceLROnPlateau(monitor='val_loss', patience=patience, verbose=0, mode='auto')

  #将搜索出的最优解

  GbestPositon = GbestPositon[0]

  filters = int(GbestPositon[0])

  kernel_size = int(GbestPositon[1])

  neurons1 = int(GbestPositon[2])

  neurons2 = int(GbestPositon[3])

  neurons3 = int(GbestPositon[4])

  dropout = GbestPositon[5]

  batch_size = int(GbestPositon[6])

  model = GRU_model(filters, kernel_size, neurons1, neurons2, neurons3, dropout) # 构建最优模型

  history = model.fit(train_X, y_train, epochs=400, batch_size=batch_size, validation_split=0.1, verbose=1, callbacks=[EarlyStop, Reduce]) # 训练最优模型

  #画出模型损失图

  fig1 = plt.figure(dpi=150, figsize=(15, 3))

  plt.plot(history.history['loss'])

  plt.title('model loss')

  plt.ylabel('loss')

  plt.xlabel('epoch')

  plt.show()

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-27 18:16:53 HTTP/2.0 GET : https://f.mffb.com.cn/a/480421.html
  2. 运行时间 : 0.229772s [ 吞吐率:4.35req/s ] 内存消耗:4,770.10kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=a3f3ce708fb274426f4a5b4dc90abac3
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001191s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001597s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000875s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000752s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001407s ]
  6. SELECT * FROM `set` [ RunTime:0.000635s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001505s ]
  8. SELECT * FROM `article` WHERE `id` = 480421 LIMIT 1 [ RunTime:0.001391s ]
  9. UPDATE `article` SET `lasttime` = 1774606613 WHERE `id` = 480421 [ RunTime:0.020931s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000714s ]
  11. SELECT * FROM `article` WHERE `id` < 480421 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001156s ]
  12. SELECT * FROM `article` WHERE `id` > 480421 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001113s ]
  13. SELECT * FROM `article` WHERE `id` < 480421 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.006968s ]
  14. SELECT * FROM `article` WHERE `id` < 480421 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001954s ]
  15. SELECT * FROM `article` WHERE `id` < 480421 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.003595s ]
0.233553s