ga_ex672.m

来自「其中提到遺傳學的程式碼與應用提供給次淚相向的研究者參考下載」· M 代码 · 共 56 行

M
56
字号
% GA_ex672.m file
% [Kp Ki Kd] values for a PID control system

% PenChen Chou, Aug. 17, 2001

%**********************************************************/
%       User can modify the following in blocks
%**********************************************************/
clear all
ans=1;
who
fprintf('>>>Start this program now. Please wait!\n');
pause(1)

global MIN_offset MUL_factor Kp Ki Kd K a1 a2 MDL FT 
global ERR1 ERR2 ERR3 ERR4 ERR5 MAIN_loop evo_fuzzy Emin
global rise_time set_time ov_shoot Emin

evo_fuzzy=readfis('evo_fuzzy');
dcm2_init;
Emin=1e6;
MIN_offset=1400; % For finding MIN value
MUL_factor=1; MAIN_loop=0;
MDL='dcmotor_2'; FT=2; eval(MDL);
K=17661.1;a1=29.73;a2=21.033;
obj_fcn = 'GA_f672';	% Objective function
%          Kp    Ki   Kd    
range = [ 0.1 0.0064    50  
          2.5   0.25   195.5 ];
IC=[]; elite=1; 
gen_no=50;popuSize=36;
gen_no=10;popuSize=16;
bit_n=40;xover_rate=0.9;mutate_rate=0.04;
%************************************************************
% call GA written by Chang
tic
%GA_genetic(obj_fcn, range, IC, elite,...
% gen_no, popuSize, bit_n, xover_rate, mutate_rate);
[popu, popu_real, fcn_value, upper, average, lower, ...
BEST_popu, popuSize, gen_no, para] = GA_genetic(obj_fcn, range,...
        IC, elite, gen_no, popuSize, bit_n,...
        xover_rate, mutate_rate);
t=toc/60;
fprintf('==>  Computation time is (%.2f) minutes.\n',t);            

% Final result
Kp=GA_round4dp(para(1));
Ki=GA_round4dp(para(2));
Kd=GA_round4dp(para(3));
[rise_time set_time ov_shoot Emin]
MAIN_loop=1;
ERR1=0;ERR2=0;ERR3=0;ERR4=0;ERR5=0;
collect_errors;
figure(2);
K=17661.1;a1=29.73;a2=21.033;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?