資源簡介
C語言 模糊控制程序,用于嵌入式平臺(tái)實(shí)現(xiàn)模糊PID,里面有PDF算法說明

代碼片段和文件信息
//?Fuzzy?Programming?Expected?Value?Model
//?Written?by?Microsoft?Visual?C++
//?Copyright?by?UTLab?@?Tsinghua?University
//?http://orsc.edu.cn/UTLab
#include?
#include?
#include?
#include?
#include?“UTLab.h“
#define?N?3?????//?number?of?input?neurons?(decision?variables)
#define?H?5?????//?number?of?hidden?neurons
#define?O?1?????//?number?of?output?neurons
#define?D?2000??//?number?of?training?data
#define?R?6000??//?number?of?generating?random?points
#define?M?1?????//?number?of?objectives
#define?TYPE?1?//?1=max;?-1=min
#define?GEN?1600
#define?POP_SIZE?30
#define?P_MUTATION?0.2
#define?P_CROSSOVER?0.3
#define?SIMU_PRINT_NUMBER?100
#define?GA_PRINT_NUMBER?100
static?double?BOUND[N+O+1][2]?WH[H+1][N+1]?WO[O+1][H+1];
static?double?objectIVE[POP_SIZE+1][M+1]?q[POP_SIZE+1]?CHROMOSOME[POP_SIZE+1][N+1];
static?void???Simu(double?x[D+1][N+1]?double?y[D+1][O+1]);
static?void???Input_Output(double?x[N+1]?double?y[O+1]);
static?void???Train(double?original_x[D+1][N+1]?double?original_y[D+1][O+1]
??double?standard_x[D+1][N+1]?double?standard_y[D+1][O+1]);
static?void???Standarlize(double?original_x[D+1][N+1]?double?original_y[D+1][O+1]
??double?standard_x[D+1][N+1]?double?standard_y[D+1][O+1]);
static?void???BPA(double?standard_x[D+1][N+1]?double?standard_y[D+1][O+1]);
static?void???Init_NN(void);
static?void???NN(double?x[N+1]?double?y[O+1]);
static?void???Init_GA(void);
static?void???evaluation(int?gen);
static?void???selection(void);
static?void???crossover(void);
static?void???mutation(void);
static?void???objectives(void);
static?int????constraint_check(double?x);
static?void?Input_Output(double?x[N+1]?double?y[O+1])
{
???int????i;
???double?aa?bb?cc?f[R+1]?m[R+1]?mm;
??????
???for(i=1;?i<=N;?i++)?x[i]=myu(-3.3?3.3);
???for(i=1;?i<=R;?i++)?{
??aa?=?myu(13);
??bb?=?myu(24);
??cc?=?myu(35);
??f[i]?=?sqrt(fabs(x[1]+aa)+fabs(x[2]+bb)+fabs(x[3]+cc));
??m[i]?=?triangle(aa?123);
??mm?=?triangle(bb?234);
??if(m[i]>mm)?m[i]=mm;
??mm?=?triangle(cc?345);
??if(m[i]>mm)?m[i]=mm;
???}
???y[1]=fuzzymean(fmR);
}
static?void?objectives(void)
{
double?x[4]?y[2];
int?i;
for(i=1;?i<=POP_SIZE;?i++)?{
x[1]?=?CHROMOSOME[i][1];
x[2]?=?CHROMOSOME[i][2];
x[3]?=?CHROMOSOME[i][3];
NN(xy);
objectIVE[i][1]?=?y[1];
}
for(i=1;?i<=POP_SIZE;?i++)
??objectIVE[i][0]=?objectIVE[i][1];
}
static?int?constraint_check(double?x[])
{
if((x[1]*x[1]+x[2]*x[2]+x[3]*x[3])>10)?return?0;
return?1;
}
static?void?Init_GA(void)
{
??double?x[N+1];
??int?ij;
??for(i=1;?i<=POP_SIZE;?i++)?{
??mark:
??for(j=1;?j<=N;?j++)?x[j]?=?myu(-3.2?3.2);
??if(constraint_check(x)?==?0)?goto?mark;
??for(j=1;?j<=N;?j++)?CHROMOSOME[i][j]?=?x[j];
??}
}
int?main(?void?)
{
???int?i?j;
???double?a?x[D+1][N+1]?y[D+1][O+1]?standard_x[D+1][N+1]?standard_y[D+1][O+1];
???FILE?*fp;
???sran
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????13426??2003-05-24?02:35??Fuzzy-Programming-1.cpp
?????文件??????35056??2003-05-24?02:57??Fuzzy-Programming-1.pdf
?????文件??????13816??2003-05-31?03:22??Fuzzy-Programming-2.cpp
?????文件??????36884??2003-05-31?03:30??Fuzzy-Programming-2.pdf
-----------?---------??----------?-----??----
????????????????99182????????????????????4
評(píng)論
共有 條評(píng)論