📄 simplex.h
字号:
//单纯形法类头文件
//Edit by Wang Shimin
//2004.8.25~2004.9.10
//本文件为最新文件,修改于2006.3.12
// Simplex.h: interface for the Simplex class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_SIMPLEX_H__B5428322_D25D_4B7E_902D_081CDF61C14C__INCLUDED_)
#define AFX_SIMPLEX_H__B5428322_D25D_4B7E_902D_081CDF61C14C__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "bndload.h"
class Simplex
{
public:
void Compute();
Simplex();
virtual ~Simplex();
private:
void WriteResult();
void ReadMEA();
int m_numbndload; /* 反演涉及的边界荷载个数 */
bndload * p_Bndload; /* 反演涉及的边界荷载信息 */
int * p_BAKindflag; /* 反演种类项标志 */
int * p_iparameter; /* 反演材料种类项标志 */
int * p_jparameter; /* 反演材料性质项标志 */
double m_centervalue; /* 存放中心点目标值 */
double m_constrictionvalue; /* 存放收缩点目标值 */
double m_prolongationvalue; /* 存放延伸点目标值 */
double m_echovalue; /* 存放反射点目标值 */
int m_lownumber; /* 最小目标值所对应的变量的编号 */
int m_highnumber; /* 最大目标值所对应的变量的编号 */
double m_lowvalue; /* 最小目标值 */
double m_highvalue; /* 最大目标值 */
int m_maxnumlap; /* 最大循环次数 */
int m_numlap; /* 循环次数 */
int m_numpoint; /* 观测点的个数 */
int m_numvar; /* 待反演参数的个数 */
double m_parametereq; /* 参数Q */
double m_parameterep; /* 参数P */
double m_gamma; /* 延伸系数,大于0 */
double m_beta; /* 收缩系数,大于0,小于1 */
double m_alfa; /* 反射系数,大于0 */
double m_precision; /* 收敛精度 */
int m_precisionnum; /* 连续多少步不进化则终止 */
double m_oldfitness; /* 保留上步优化结果 */
// double m_sidelength; /* 单纯形边长 */
double * m_constriction; /* 收缩点变量 */
double * p_prolongation; /* 延伸点变量 */
double * p_center; /* 除去目标值最大点以外其它顶点的中心点变量 */
double * p_echo; /* 反射点变量 */
double ** p_variable; /* 存储单纯形变量 */
double * p_bestobjvalue; /* 计算值与观测值之间的差值的最小值 */
double * p_fitness; /* 存储目标值,即观测值与计算值之差的平方和,即一组参数的目标值 */
double * p_observation; /* 存储观测值 */
double * p_calculation; /* 存储计算值 */
bool m_blErrorExit; //error occur
void ReadBAA();
bool Criterion(); /* 判别函数 */
void Constriction();/* 收缩 */
void Echo();/* 反射 */
void Prolongation();/* 延伸 */
void Initialization();/* 初始化函数 */
void ReadFromFem(double * calculatevalue);/* 写变量到文件 */
void WriteToFem(double * pvariable);/* 从文件读计算值 */
void ObjFunction();/* 有限元计算 */
};
#endif // !defined(AFX_SIMPLEX_H__B5428322_D25D_4B7E_902D_081CDF61C14C__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -