模糊rbf神经网络pid控制

时间: 2023-11-07 09:06:08 浏览: 77
基于引用中的描述,模糊RBF神经网络PID控制是将模糊控制、RBF神经网络和PID控制相结合的一种控制方法。在这种控制方法中,模糊控制用于提取系统的模糊规则,RBF神经网络用于学习系统的非线性特性,而PID控制器用于实现系统的稳定性和跟踪性能。 具体来说,首先,模糊控制通过将输入变量模糊化、设定模糊规则和进行模糊推理,将模糊输入转化为模糊输出。然后,RBF神经网络通过学习系统的非线性特性,将模糊输出映射为实际的控制输出。最后,PID控制器根据系统的误差信号和控制输出,利用比例、积分和微分三个环节来调整控制器的输出,以实现系统的稳定性和跟踪性能。 通过模糊RBF神经网络PID控制,系统可以自适应地调整PID控制器的参数,以适应不同的工况和系统变化,从而提高控制系统的鲁棒性和性能。
相关问题

模糊RBF神经网络PID控制的simulink仿真及程序

对于模糊RBF神经网络PID控制的simulink仿真和程序,你可以按照以下步骤进行操作: 1. 定义系统模型:首先,需要定义你要控制的系统模型,包括输入、输出和控制目标。在Simulink中,可以使用各种模块来建立系统模型,如传感器、执行器以及仿真环境。 2. 设计PID控制器:在Simulink中,使用PID Controller模块来设计PID控制器。你可以根据系统的需求调整PID控制器的参数,如比例系数、积分时间和微分时间。 3. 实现模糊RBF神经网络:使用Fuzzy Logic Toolbox中的模糊逻辑模块来实现模糊RBF神经网络。通过定义输入和输出的模糊集合、规则库和解模糊方法,可以构建一个模糊控制器。 4. 结合PID控制器和模糊RBF神经网络:将PID控制器和模糊RBF神经网络连接起来,可以使用Simulink中的Sum和Gain等模块进行信号处理和控制。可以通过调整连接方式和参数来实现控制器的优化。 5. 进行仿真:配置仿真参数,并运行Simulink模型进行仿真。通过观察系统响应、稳定性和性能,可以评估控制器的效果。 需要注意的是,以上步骤只是一个大致的指导,具体实现还需要根据你的具体需求和系统特点进行适当的调整和优化。希望能对你有所帮助!

模糊RBF神经网络PID控制器的MATLAB代码

以下是一个基于模糊RBF神经网络的PID控制器的MATLAB代码: ```matlab clear all; close all; clc; % 设定控制参数 Kp = 0.8; Ki = 0.1; Kd = 0.05; % 设定控制目标 ref = 10; % 设定初始条件 y(1) = 0; e(1) = ref - y(1); de(1) = 0; ie(1) = 0; % 设定模糊RBF神经网络的参数 mf = [-5 -3 0; -3 0 3; 0 3 5]; sigma = 0.5; rbf_num = size(mf,1); theta = rand(rbf_num,1); P = eye(rbf_num)*1000; % 开始控制 for k = 2:200 % 模糊RBF神经网络的输入 u_f = gaussmf(y(k-1),[sigma mf]); % 模糊RBF神经网络的输出 u(k-1) = theta'*u_f; % PID控制器输出 y(k) = y(k-1) + u(k-1); % PID控制器误差 e(k) = ref - y(k); de(k) = e(k) - e(k-1); ie(k) = ie(k-1) + e(k); % PID控制器的计算 pid(k-1) = Kp*e(k) + Ki*ie(k) + Kd*de(k); % 模糊RBF神经网络的权重更新 P = P - P*u_f*inv(1+u_f'*P*u_f)*u_f'*P; theta = theta + P*u_f*pid(k-1); end % 画出控制结果图 t = 1:200; subplot(2,1,1); plot(t,y); title('系统输出'); xlabel('时间'); ylabel('输出'); subplot(2,1,2); plot(t,pid); title('PID控制器输出'); xlabel('时间'); ylabel('控制器输出'); ``` 这个代码实现了一个基于模糊RBF神经网络的PID控制器,其中mf表示输入的隶属度函数,sigma表示径向基函数的标准差,theta是网络的权重,P是网络的协方差矩阵,Kp、Ki和Kd是PID控制器的参数,ref是控制目标,y是系统的输出,u是PID控制器的输出。

相关推荐

下面是一个简单的模糊RBF神经网络PID控制节流阀开度的matlab程序。需要注意的是,这只是一个示例程序,实际的控制系统可能更加复杂,需要根据具体的情况进行调整和优化。 matlab % 模糊RBF神经网络PID控制节流阀开度的matlab程序 % 定义控制系统参数 Kp = 1; % 比例系数 Ki = 0.5; % 积分时间 Kd = 0.1; % 微分时间 % 定义模糊控制器参数 FIS = readfis('fuzzy_controller.fis'); % 读取模糊控制器 input_names = FIS.inputname; % 获取输入变量名称 output_names = FIS.outputname; % 获取输出变量名称 % 定义RBF神经网络参数 input_size = 10; % 输入层大小 hidden_size = 30; % 隐含层大小 output_size = 1; % 输出层大小 goal_error = 0.001; % 目标误差 max_epochs = 100; % 最大迭代次数 spread = 1; % RBF函数的扩展系数 % 读取实时反馈信号 feedback_signal = read_feedback_signal(); % 建立RBF模糊神经网络模型 net = newrb(feedback_signal, target, goal_error, spread, hidden_size, max_epochs); % 通过RBF神经网络处理反馈信号 processed_signal = sim(net, feedback_signal); % 使用模糊控制器对处理后的信号进行模糊控制 fuzzy_signal = evalfis(processed_signal, FIS); % 设计PID控制器 pid_controller = pid(Kp, Ki, Kd); % 输出控制信号 control_signal = pid_controller(fuzzy_signal); % 控制节流阀开度 set_valve_open(control_signal); 需要注意的是,这个程序中使用了模糊控制器来对RBF神经网络输出的信号进行模糊控制。具体的模糊控制器的实现可以参考模糊控制器的相关文献和代码库。另外,需要根据实际情况调整控制系统的参数和控制策略,以达到更好的控制效果。
好的,我可以帮您写这段 Matlab 程序,并绘制相应的控制效果。以下是程序代码: matlab % 粒子群优化模糊RBF神经网络PID算法控制节流阀开度 clc; clear; % 定义控制系统参数 Kp = 1.5; % 比例系数 Ki = 1; % 积分系数 Kd = 0.5; % 微分系数 % 定义PID控制器参数 pid = pid(Kp, Ki, Kd); % 定义系统传递函数 s = tf('s'); G = 1/(s^2 + 2*s + 1); % 定义目标响应曲线 t = 0:0.1:10; r = ones(size(t)); % 定义模糊RBF神经网络PID控制器 numMFs = 3; % 模糊集合数量 mfType = 'gaussmf'; % 模糊集合类型 inputRange = [0 1]; % 输入范围 outputRange = [-1 1]; % 输出范围 fuzzyPID = genfis3(inputRange, numMFs, mfType, outputRange); % 定义粒子群优化参数 options = optimoptions('particleswarm', 'SwarmSize', 20, 'MaxIterations', 100); % 运用粒子群优化算法优化模糊RBF神经网络PID控制器 [x, fval] = particleswarm(@(x)pidtune(fuzzyPID, pid, G, r, t, x), 3, [], [], options); % 得到最优控制器参数 Kp = x(1); Ki = x(2); Kd = x(3); % 更新PID控制器参数 pid = pid(Kp, Ki, Kd); % 仿真系统响应 sys = feedback(pid*G, 1); [y, t] = step(sys, t); % 绘制系统响应曲线 figure; plot(t, r, 'b', t, y, 'r'); legend('目标响应', '系统响应'); xlabel('时间(秒)'); ylabel('开度'); title('控制系统响应曲线'); 上述程序代码中,我们首先定义了控制系统的参数和PID控制器参数,然后定义了系统传递函数和目标响应曲线。接着,我们使用 genfis3 函数生成了模糊RBF神经网络PID控制器,并运用粒子群优化算法对控制器进行优化。最后,我们更新了PID控制器参数,仿真系统响应并绘制了系统响应曲线。 注意:该程序仅供参考,具体的参数和细节需要根据实际情况进行调整和修改。
RBF模糊神经网络PID控制节流阀开度的matlab程序,大致可以分为以下几个步骤: 1. 确定控制系统的数学模型,包括节流阀的动态特性、PID控制器的参数等。 2. 采集实际系统的数据,用于建立RBF模糊神经网络模型。数据采集可以通过实验、仿真等方式进行。 3. 建立RBF模糊神经网络模型,包括输入层、隐含层和输出层。输入层接收实时的反馈信号,输出层输出控制信号,隐含层通过RBF函数对输入信号进行特征提取和转换。 4. 设计PID控制器的参数,包括比例系数、积分时间、微分时间等。 5. 将RBF模糊神经网络和PID控制器相结合,构建控制系统。实时读取反馈信号,经过RBF模糊神经网络处理后,输出控制信号给PID控制器,最终控制节流阀的开度。 下面是一个简单的示例程序,仅供参考: matlab % RBF模糊神经网络PID控制节流阀开度的Matlab程序 % 定义控制系统参数 Kp = 1; % 比例系数 Ki = 0.5; % 积分时间 Kd = 0.1; % 微分时间 % 读取实时反馈信号 feedback_signal = read_feedback_signal(); % 建立RBF模糊神经网络模型 rbf_network = newrb(input, target, goal, spread); % 通过RBF模糊神经网络处理反馈信号 processed_signal = sim(rbf_network, feedback_signal); % 设计PID控制器 pid_controller = pid(Kp, Ki, Kd); % 输出控制信号 control_signal = pid_controller(processed_signal); % 控制节流阀开度 set_valve_open(control_signal); 需要注意的是,这只是一个简单的示例程序,实际的控制系统可能更加复杂,需要根据具体的情况进行调整和优化。建议您参考相关的文献和代码库,学习更加详细和完整的实现方法。
很抱歉,由于涉及到具体的控制需求和参数设置,编写完整的程序需要进行更加详细的了解和讨论。这里我可以为您提供一个大致的程序框架,您可以根据具体的需求和情况进行调整和修改。 以下是程序框架: matlab % 输入数据 input_data = ...; % 输出数据 output_data = ...; % 设置RBF模糊神经网络参数 rbf_hidden_num = ...; % 隐含层神经元数量 rbf_net = newrb(input_data,output_data,0.0,1,rbf_hidden_num); % 训练网络 % 设置PID控制器参数 kp = ...; % 比例系数 ki = ...; % 积分系数 kd = ...; % 微分系数 pid_controller = pid(kp,ki,kd); % 建立PID控制器 % 设置仿真时间和步长 t_start = ...; t_end = ...; t_step = ...; % 运行仿真 for t = t_start:t_step:t_end % 获取当前状态 current_state = ...; % 计算PID控制器输出 pid_output = pid_controller(current_state); % 输入数据模糊化 fuzzy_input = ...; % 使用RBF模糊神经网络进行控制 fuzzy_output = sim(rbf_net,fuzzy_input); % 组合PID和RBF控制输出 control_output = ...; % 更新系统状态 system_state = ...; % 输出结果 disp(['Time: ',num2str(t),' Control Output: ',num2str(control_output),' System State: ',num2str(system_state)]); end 需要注意的是,以上代码仅为一个大致的程序框架,具体实现还需要进行更加详细的讨论和调整。同时,由于涉及到具体的控制需求和参数设置,程序中的一些变量名和参数值需要根据实际情况进行修改。 希望以上内容能够对您有所帮助。如果您还有其他问题或需求,请随时提出,我会尽力为您解答。
### 回答1: RBF模糊PID是一种基于径向基函数网络(RBF)的模糊PID控制算法。RBF网络通常用于非线性控制,其输出基于输入变量与各自中心之间的距离关系。在模糊PID中,RBF网络的作用是将输入变量转化为模糊变量,然后进行模糊逻辑运算,最终输出模糊PID控制信号。这种算法的优点是能够适应非线性系统,且在控制性能和稳定性方面都表现出较好的效果。C语言作为一种高效、可移植的编程语言,亦被广泛应用于嵌入式系统中。将RBF模糊PID算法用C语言实现,不仅可以在一些嵌入式平台上实现控制任务,而且也便于算法的修改与优化。但是需要注意的是,C语言实现需要考虑内存消耗、运算时间等问题,同时还需注意算法可靠性和鲁棒性。总之,RBF模糊PID C语言实现为非线性控制在嵌入式系统中提供了一种有效的解决方案。 ### 回答2: RBF 模糊 PID 是一种采用 RBF 为基础函数、模糊控制为控制策略的 PID 控制器。RBF 模糊 PID 控制器主要包括三个部分:基于 RBF 网络的前馈控制器、基于前馈控制器的模糊控制器和 PID 控制器。其中,前馈控制器主要负责对控制对象进行前馈校正,以提高系统的响应速度和控制精度;模糊控制器则根据系统的状态进行模糊推理,输出模糊控制规则,从而实现对系统的优化控制;PID 控制器则在模糊规则输出的基础上进行反馈调节,确保系统的稳定性和鲁棒性。 相比于传统的 PID 控制器,RBF 模糊 PID 控制器具有以下优点:首先,由于采用了 RBF 网络的前馈控制和模糊控制相结合的策略,能够有效地提高系统的控制精度和稳定性;其次,通过对控制对象进行前馈校正,能够大大降低系统响应时间,提高系统速度;最后,在面对复杂的控制对象时,模糊控制具有较强的自适应性和鲁棒性,能够适应各种环境变化和控制对象的非线性、时变特性。 而在使用 C 语言实现 RBF 模糊 PID 控制器时,需要具有一定的编程基础,能够熟练掌握 C 语言的基本语法和数据结构,同时还需要了解控制理论和模糊控制算法的基本原理。在程序设计中,需要构建 RBF 网络并采用适当的算法进行训练,实现前馈校正和模糊推理,并结合 PID 控制器进行反馈控制。同时还需要考虑系统实时响应的问题,采用合适的数据采集和处理方式,确保控制器的同步性和稳定性。 ### 回答3: RBF模糊PID控制算法是一种基于神经网络理论和PID调节理论相结合的控制算法。RBF是径向基函数的缩写,是一种常用于神经网络的激活函数。该算法利用RBF神经网络对控制对象的非线性动态特性进行建模和预测,然后结合PID控制器进行优化控制,从而提高控制质量和控制效率。 该算法在应用中需要用到C语言进行编程。C语言是一种高性能、高效、灵活的编程语言,特别适用于开发实时控制系统和嵌入式系统。编写RBF模糊PID控制算法的C语言程序需要掌握相关的编程技巧和理论知识,包括神经网络的基本结构和算法、PID控制理论、控制系统的建模和仿真等方面的内容。 在实际应用中,RBF模糊PID控制算法可以广泛用于机械、电气、化工、冶金等领域的控制系统中,帮助工程师更好地解决控制问题,提高设备的稳定性和生产效率。同时,C语言编程技能也是现代工程师必备的基本技能之一,掌握这项技能可以为工程师未来的职业发展打下坚实的基础。
以下是粒子群优化RBF模糊神经网络PID参数的MATLAB程序: matlab clc; clear; close all; %% 初始化参数 n = 20; % 粒子数量 maxiter = 100; % 最大迭代次数 c1 = 2; % 学习因子 c2 = 2; % 学习因子 w = 0.9; % 惯性因子 d = 4; % 输入维数 k = 4; % 隐层节点数 m = 1; % 输出维数 N = 500; % 数据集大小 X = rand(N,d)*10-5; % 产生数据集 Y = zeros(N,m); for i=1:N Y(i) = sin(X(i,1))+cos(X(i,2))+X(i,3)^2+X(i,4)+rand(1); end %% 初始化粒子位置和速度 p = rand(n,d*k+m)*10-5; v = rand(n,d*k+m)*2-1; pbest = p; gbest = p(1,:); fpbest = zeros(n,1); fgbest = inf; %% 开始迭代 for iter=1:maxiter % 计算适应度 f = zeros(n,1); for i=1:n [f(i),~] = RBF_PID(p(i,:)',X,Y,d,k,m); if f(i)<fpbest(i) fpbest(i) = f(i); pbest(i,:) = p(i,:); end if f(i)<fgbest fgbest = f(i); gbest = p(i,:); end end % 更新速度和位置 for i=1:n v(i,:) = w*v(i,:) + c1*rand(1,d*k+m).*(pbest(i,:)-p(i,:))... + c2*rand(1,d*k+m).*(gbest-p(i,:)); p(i,:) = p(i,:) + v(i,:); end disp(['iter = ',num2str(iter),' best = ',num2str(fgbest)]); end %% 测试模型 Xtest = rand(100,d)*10-5; Ytest = zeros(100,m); for i=1:100 Ytest(i) = sin(Xtest(i,1))+cos(Xtest(i,2))+Xtest(i,3)^2+Xtest(i,4)+rand(1); end Ypred = zeros(100,m); for i=1:100 Ypred(i) = RBF_PID(gbest',Xtest(i,:),Ytest(i),d,k,m); end figure; plot(Ytest,'b');hold on; plot(Ypred,'r');hold off; legend('真实值','预测值'); %% RBF_PID函数 function [f,Ypred] = RBF_PID(w,X,Y,d,k,m) % X:输入数据 N*d % Y:输出数据 N*m % d:输入维数 % k:隐层节点数 % m:输出维数 % w:权重向量 d*k+m % f:适应度值 % Ypred:预测输出 N*m %% 初始化参数 sigma = 1; % RBF函数宽度 eta = 0.1; % PID控制器系数 Kp = w(end-2); % PID控制器参数 Ki = w(end-1); % PID控制器参数 Kd = w(end); % PID控制器参数 %% 计算RBF函数值 N = size(X,1); H = zeros(N,k); for i=1:N for j=1:k H(i,j) = exp(-norm(X(i,:)-w((j-1)*d+1:j*d)')/(2*sigma^2)); end end %% 计算输出值 Ypred = H*w(1:k*d)+eta*Kp*Y(1)+eta*Ki*(sum(Y)+Ypred(1))/N+eta*Kd*(Ypred(1)-Ypred(2)); f = norm(Ypred-Y)^2; % 适应度值 end 以下是将程序和Simulink结合起来的步骤: 1. 在Simulink中新建一个模型,命名为RBF_PID。 2. 在模型中添加两个输入变量X和Y,分别表示输入和输出数据。 3. 在模型中添加一个MATLAB函数块,将上述程序复制到该块中。 4. 将MATLAB函数块的输入变量u设置为[X;Y],输出变量y设置为[f;Ypred],并且设置MATLAB函数块的输出尺寸为[2,1]。 5. 在模型中添加一个Scope块,用于显示模型的输出结果。 6. 连接MATLAB函数块和Scope块。 7. 保存模型并运行。 注意事项: 1. 在Simulink中运行程序时,需要先在MATLAB命令行中运行上述程序,以便定义RBF_PID函数。 2. 在Simulink中使用MATLAB函数块时,需要确保函数块的输入和输出变量类型与程序中定义的类型一致。

最新推荐

300126锐奇股份财务报告资产负债利润现金流量表企业治理结构股票交易研发创新等1391个指标(2007-2022).xlsx

包含1391个指标,其说明文档参考: https://blog.csdn.net/yushibing717/article/details/136115027 数据来源:基于上市公司公告数据整理 数据期间:从具体上市公司上市那一年开始-2022年度的数据,年度数据 包含各上市公司股票的、多年度的上市公司财务报表资产负债表、上市公司财务报表利润表、上市公司财务报表现金流量表间接法、直接法四表合在一个面板里面,方便比较和分析利用 含各个上市公司股票的、多年度的 偿债能力 披露财务指标 比率结构 经营能力 盈利能力 现金流量分析 风险水平 发展能力 每股指标 相对价值指标 股利分配 11类财务指标分析数据合在一个面板里面,方便比较和分析利用 含上市公司公告的公司治理、股权结构、审计、诉讼等数据 包含1391个指标,如: 股票简称 证券ID 注册具体地址 公司办公地址 办公地址邮政编码 董事会秘书 董秘联系电话 董秘传真 董秘电子邮箱 ..... 货币资金 其中:客户资金存款 结算备付金 其中:客户备付金 .........

【路径规划】基于matlab原子搜索算法栅格地图机器人最短路径规划【含Matlab源码 2887期】.mp4

CSDN佛怒唐莲上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

【语音隐写】基于matlab DCT扩频语音水印【含Matlab源码 466期】.mp4

CSDN佛怒唐莲上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

C#课程设计 扫雷游戏.zip

C#课程设计 扫雷游戏

DAC简介及参考电路PPT学习教案.pptx

DAC简介及参考电路PPT学习教案.pptx

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire

OceanBase数据库简介及原理解析

# 1. OceanBase数据库概述 ## 1.1 OceanBase数据库的发展历程 OceanBase数据库是由阿里巴巴集团自主研发的一款分布式关系型数据库系统,起源于阿里集团的业务需求和技术挑战。自2010年开始研发,经过多年的迭代和优化,OceanBase已经成为阿里巴巴集团重要的核心数据库产品之一。在实际的业务场景中,OceanBase已经被广泛应用于金融、电商、物流等各个领域。 ## 1.2 OceanBase数据库的特点和优势 OceanBase数据库具有以下特点和优势: - **分布式架构**:OceanBase采用多副本分布式架构,可以实现高可用和数据容灾。 -

python的pandas读取excel怎么将excel表里的列从1开始而不是0

在 Pandas 中,数据框的列默认从0开始编号,但我们可以通过自定义函数来进行数据列的转换。可以先将读取的数据框列的第一个值设为1,然后对后续列进行递增处理。 以下是示例代码: ```python import pandas as pd # 读取 Excel 文件 df = pd.read_excel('your_excel_file.xlsx') # 定义函数将列从1开始 def reset_column(x): return str(int(x) + 1) # 应用函数到所有列名 df = df.rename(columns=reset_column) # 打印数据框

第三章薪酬水平、薪酬系统的运行与控制.pptx

第三章薪酬水平、薪酬系统的运行与控制.pptx

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依