入门级模糊PID控制学习程序

版权申诉
0 下载量 48 浏览量 更新于2024-10-20 收藏 804B ZIP 举报
资源摘要信息:"模糊PID控制算法结合了传统PID控制和模糊逻辑控制的优点,旨在处理具有不确定性和非线性的复杂系统。模糊PID控制器通过模糊化输入量,并使用一系列模糊规则来进行控制决策,从而提高了系统的鲁棒性和适应性。这种控制器特别适合于那些难以建立精确数学模型的系统,例如温度控制、速度控制等场合。 首先,我们来看标题中的关键词:‘模糊PID’。这里指的是一种控制方法,它是将传统的PID控制技术与模糊逻辑相结合的产物。PID控制器本身是一种广泛使用的反馈回路控制器,它的名称来源于比例(Proportional)、积分(Integral)、微分(Derivative)这三个控制因素。然而,标准的PID控制器在面对复杂的、非线性的、或是参数未知的系统时,可能无法提供最佳的控制效果。模糊PID控制器通过引入模糊逻辑对输入量进行处理,使得控制器能够更好地适应这些复杂情况。 接着,我们分析描述中的内容:“模糊PID—模糊控制程序。适合刚入门的模糊控制学习的同学们,方便理解!”这句话点明了该资源的教育目的,即提供给初学者一个学习模糊控制技术的平台。通过实际的模糊PID控制程序,初学者可以更好地理解模糊控制理论,并将理论与实践相结合。这样的程序通常会包含一个清晰的用户界面和详细的解释文档,有助于初学者逐步掌握模糊逻辑的概念和应用。 从标签来看,“fuzzy 模糊pid控制 模糊pid”进一步强调了资源的核心是关于模糊PID控制的。模糊控制是一种基于模糊集合理论和模糊逻辑的控制方法,它模仿人的决策过程来处理不精确的信息。在模糊PID控制系统中,PID参数(P、I、D)可以根据模糊规则动态调整,使得控制器能够更好地应对系统的动态变化。 最后,我们看到压缩文件中包含的文件名称:“chap4_7b.m”。这个文件名暗示了一个实际的Matlab脚本文件,可能包含示例代码或模拟实验,用于展示模糊PID控制算法的工作原理。在Matlab环境下,工程师和学生可以运行这段代码,观察模糊PID控制器在具体应用中的行为和性能,例如在设定值跟踪、抗干扰能力等方面的性能。通过这样的实践活动,学习者可以更深入地理解模糊PID控制策略,并学会如何对控制器进行调整和优化。 综上所述,这个资源是为了帮助初学者通过实际例子和程序代码来学习和理解模糊PID控制技术。它不仅提供了理论知识,也提供了实现和测试模糊PID控制算法的工具和环境。对于希望掌握模糊控制和改进传统PID控制性能的学习者来说,这是一份宝贵的参考资料。"

修改和补充下列代码得到十折交叉验证的平均auc值和平均aoc曲线,平均分类报告以及平均混淆矩阵 min_max_scaler = MinMaxScaler() X_train1, X_test1 = x[train_id], x[test_id] y_train1, y_test1 = y[train_id], y[test_id] # apply the same scaler to both sets of data X_train1 = min_max_scaler.fit_transform(X_train1) X_test1 = min_max_scaler.transform(X_test1) X_train1 = np.array(X_train1) X_test1 = np.array(X_test1) config = get_config() tree = gcForest(config) tree.fit(X_train1, y_train1) y_pred11 = tree.predict(X_test1) y_pred1.append(y_pred11 X_train.append(X_train1) X_test.append(X_test1) y_test.append(y_test1) y_train.append(y_train1) X_train_fuzzy1, X_test_fuzzy1 = X_fuzzy[train_id], X_fuzzy[test_id] y_train_fuzzy1, y_test_fuzzy1 = y_sampled[train_id], y_sampled[test_id] X_train_fuzzy1 = min_max_scaler.fit_transform(X_train_fuzzy1) X_test_fuzzy1 = min_max_scaler.transform(X_test_fuzzy1) X_train_fuzzy1 = np.array(X_train_fuzzy1) X_test_fuzzy1 = np.array(X_test_fuzzy1) config = get_config() tree = gcForest(config) tree.fit(X_train_fuzzy1, y_train_fuzzy1) y_predd = tree.predict(X_test_fuzzy1) y_pred.append(y_predd) X_test_fuzzy.append(X_test_fuzzy1) y_test_fuzzy.append(y_test_fuzzy1)y_pred = to_categorical(np.concatenate(y_pred), num_classes=3) y_pred1 = to_categorical(np.concatenate(y_pred1), num_classes=3) y_test = to_categorical(np.concatenate(y_test), num_classes=3) y_test_fuzzy = to_categorical(np.concatenate(y_test_fuzzy), num_classes=3) print(y_pred.shape) print(y_pred1.shape) print(y_test.shape) print(y_test_fuzzy.shape) # 深度森林 report1 = classification_report(y_test, y_prprint("DF",report1) report = classification_report(y_test_fuzzy, y_pred) print("DF-F",report) mse = mean_squared_error(y_test, y_pred1) rmse = math.sqrt(mse) print('深度森林RMSE:', rmse) print('深度森林Accuracy:', accuracy_score(y_test, y_pred1)) mse = mean_squared_error(y_test_fuzzy, y_pred) rmse = math.sqrt(mse) print('F深度森林RMSE:', rmse) print('F深度森林Accuracy:', accuracy_score(y_test_fuzzy, y_pred)) mse = mean_squared_error(y_test, y_pred) rmse = math.sqrt(mse) print('F?深度森林RMSE:', rmse) print('F?深度森林Accuracy:', accuracy_score(y_test, y_pred))

2023-06-02 上传

修改和补充下列代码得到十折交叉验证的平均每一折auc值和平均每一折aoc曲线,平均每一折分类报告以及平均每一折混淆矩阵 min_max_scaler = MinMaxScaler() X_train1, X_test1 = x[train_id], x[test_id] y_train1, y_test1 = y[train_id], y[test_id] # apply the same scaler to both sets of data X_train1 = min_max_scaler.fit_transform(X_train1) X_test1 = min_max_scaler.transform(X_test1) X_train1 = np.array(X_train1) X_test1 = np.array(X_test1) config = get_config() tree = gcForest(config) tree.fit(X_train1, y_train1) y_pred11 = tree.predict(X_test1) y_pred1.append(y_pred11 X_train.append(X_train1) X_test.append(X_test1) y_test.append(y_test1) y_train.append(y_train1) X_train_fuzzy1, X_test_fuzzy1 = X_fuzzy[train_id], X_fuzzy[test_id] y_train_fuzzy1, y_test_fuzzy1 = y_sampled[train_id], y_sampled[test_id] X_train_fuzzy1 = min_max_scaler.fit_transform(X_train_fuzzy1) X_test_fuzzy1 = min_max_scaler.transform(X_test_fuzzy1) X_train_fuzzy1 = np.array(X_train_fuzzy1) X_test_fuzzy1 = np.array(X_test_fuzzy1) config = get_config() tree = gcForest(config) tree.fit(X_train_fuzzy1, y_train_fuzzy1) y_predd = tree.predict(X_test_fuzzy1) y_pred.append(y_predd) X_test_fuzzy.append(X_test_fuzzy1) y_test_fuzzy.append(y_test_fuzzy1)y_pred = to_categorical(np.concatenate(y_pred), num_classes=3) y_pred1 = to_categorical(np.concatenate(y_pred1), num_classes=3) y_test = to_categorical(np.concatenate(y_test), num_classes=3) y_test_fuzzy = to_categorical(np.concatenate(y_test_fuzzy), num_classes=3) print(y_pred.shape) print(y_pred1.shape) print(y_test.shape) print(y_test_fuzzy.shape) # 深度森林 report1 = classification_report(y_test, y_prprint("DF",report1) report = classification_report(y_test_fuzzy, y_pred) print("DF-F",report) mse = mean_squared_error(y_test, y_pred1) rmse = math.sqrt(mse) print('深度森林RMSE:', rmse) print('深度森林Accuracy:', accuracy_score(y_test, y_pred1)) mse = mean_squared_error(y_test_fuzzy, y_pred) rmse = math.sqrt(mse) print('F深度森林RMSE:', rmse) print('F深度森林Accuracy:', accuracy_score(y_test_fuzzy, y_pred)) mse = mean_squared_error(y_test, y_pred) rmse = math.sqrt(mse)

2023-06-02 上传