资源简介
C语言 模糊控制程序,用于嵌入式平台实现模糊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
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 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
相关资源
- SpiderMonkey1.61.7 编译文件全部libdllh文件
- 先进PID控制MATLAB仿真
- 模糊PID硕士期刊论文及源码.zip
- 先进pid控制及其matlab仿真64898
- 网络爬虫 C++ Crawler Spider
- 获取U盘VIDPID盘符物理序列号源码可运
- PID调节电机转速 配合MPU6050
- 积分分离型PID控制 匿名四轴波形输出
- PID参数整定一本通
- rapid Scada组态软件
- PID学习资料 各种PID解释和应用
- 自适应PID,C语言源码
- DSP的PID控制程序
- SuperPid修改进程PID工具驱动级.别名.
- C语言实现PID控制直流电机调速含pro
- NCDDE服务连接DDE封装的APIddehelper
- 数字PID控制器 Proteus软件仿真
- 模糊PID控制C语言程序.doc
- Project1.rar
- 模糊PID的C语言程序
- 自适应模糊PID代码 C++实现
- 控制方法的C语言实现
- VS2010版c++PID控制算法详尽注释
- PID算法Matlab仿真程序和C程序
- 模糊pid算法c语言
- C++实现获取win7系统端口号IP状态和P
- ABB机器人的socket通信UDPRapid代码
- RapidJson解析JSON文件C++ vs2017亲测可完美
- C++ rapidjson 对类序列化(完美二次封装
- 专家PID与模糊PID的C语言实现
评论
共有 条评论