📄 razor.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 + -