• 大小: 64KB
    文件类型: .rar
    金币: 2
    下载: 0 次
    发布日期: 2024-02-02
  • 语言: C/C++
  • 标签: pid  模糊PID  

资源简介

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


评论

共有 条评论