⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 razor.h

📁 复合形优化算法的VC2005环境下的实现实例
💻 H
字号:
#pragma once
#define RANDOM_H 10000
#define MINIMUM(x,y) (x)>(y)?(y):(x)
#define MAXIMUM(x,y) (x)>(y)?(x):(y)
#define DELTA 0.0000001
#define NUMLIMUP 10000

typedef struct g_node
{
	double (*g)(double*);       //函数指针,指向约束函数
	g_node  *next; 
}g_node;

class razor
{
public:
	razor(int dimens,int num);
	~razor(void);
public:
	int dimension;                                //优化维数
	int vertex_num;                               //算法中使用的顶点数
	g_node *g_function;                           //约束函数链表
	double (*targetFunc)(double*);                //目标函数指针
	double *x,*l,*h;                              //变量数组、自变量取值下限数组、上限数组
	int g,b,s;                                    //记录最好点g、最坏点b、次坏点s的顶点序号
	double *xc,*xr,*xe;                           //记录xc、xr、xe
	double a;                                     //算法中的a值
public:
	void Add_g(double (*p)(double*));               //添加约束函数
	void optimize();                              //优化主程序
	void Init();                                  //初始化交互及顶点设置
	int Is_fillin(double *x);                      //检查所选点是否在可行域内,是返回1
	void random_vertex(double *x);                 //生成随机顶点,serial为顶点序号
	void construct_shape();                       //step2、3构成复形
	double get_queue();                            //step4排队
	int get_XC();                                 //step5计算中点Xc,返回1转6,返回2转2
	int get_XR();                                 //step6计算反射点Xr,返回1转7,返回9转9
	int compare();                                //step7比较,返回4转4,返回8转8,返回9转9
	int get_XE();                                 //step8计算延伸点Xe,返回8转8,返回4转4
	int zoom();                                   //step9缩小,返回5转5,返回6转6
	int over();                                   //结束处理
};

⌨️ 快捷键说明

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