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

📄 ethylopt.cpp

📁 工程优化和数值计算中常用的优化程序
💻 CPP
字号:
#include "math.h"
//#include " "//DFP的头文件
class CComponent
{
public:
	double RON;
	double MON;
	double OLE;
	double ARO;
	friend class CExperiment;
};	

class CProduct
{
public:
	
};
 
class CExperiment
{
public:
	double *vol;
	double RON;
	double MON;
	double RVP;
	double RON_blend;
	double MON_blend;
	double b[8];
	void Compute(CComponent ** components,int CNum)
	{
		int i;
		double rs,s,ms,O,O2,A,A2;
		for(i=0;i<CNum;i++)
		{
			b[0]+=components[i]->RON*vol[i];
			rs+=components[i]->RON*(components[i]->RON-components[i]->MON)*vol[i];	
			s+=(components[i]->RON-components[i]->MON)*vol[i];
			ms+=components[i]->MON*(components[i]->RON-components[i]->MON)*vol[i];	
			b[4]+=components[i]->MON*vol[i];
			ms+=components[i]->MON*(components[i]->RON-components[i]->MON)*vol[i];	
			O+=components[i]->OLE*vol[i];
			O2+=components[i]->OLE*components[i]->OLE*vol[i];
			A+=components[i]->ARO*vol[i];
			A2+=pow(components[i]->ARO,2)*vol[i];
		}
		b[1]=rs-b[0]*s;
		b[2]=O2-O*O;
		b[3]=A2-A*A;
		b[5]=ms-b[4]*s;
		b[6]=b[2];
		b[7]=pow(b[3]/100,2);
	}
	double RON_err(double *x)
	{
		return(RON_blend-(b[0]+x[1]*b[1]+x[2]*b[2]+x[3]*b[3]));
	}
	double MON_err(double *x)
	{
		return(MON_blend-(b[4]+x[1]*b[5]+x[2]*b[6]+x[3]*b[7]));
	}
};
	int expNum ;
	CExperiment *experiments;

double target1(double *x)
{
	double ret=0;
	int i;
	for(i=0;i<expNum;i++)
		ret+=pow(experiments[i].RON_err(x),2);
	return(ret);
}

double target2(double *x)
{
	double ret=0;
	int i;
	for(i=0;i<expNum;i++)
		ret+=pow(experiments[i].MON_err(x),2);
	return(ret);
}






void EthylOpt(	             )
{
	double a[3]={0,0,0};//a1,a2,a3初值待定
	double b[3]={0,0,0};//a4,a5,a6初值待定
	DFP(target1,3,a);
	DFP(target2,3,b);
//完成了a1至a6的参数辩识,采用最小二乘规则


}

void main(void)
{

}

⌨️ 快捷键说明

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