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

📄 等式约束的乘子法.cpp

📁 C++最优化方法源程序
💻 CPP
字号:
#include "mathyw.h"
#include "iostream.h"
#include "stdlib.h"
#include "math.h"

//extern double ( * FUN )( double * );  //自定义函数指针类型为 FUN 
double fun( double * x );
double fun1( double * x );
double fun2( double * x );
double fun3( double * x );
double fun4( double * x );
double fun5( double * x );
double fun6( double * x );
double fun7( double * x );
double fun8( double * x );
double fun9( double * x );
double fun10( double * x );
double fun11( double * x );
double fun12( double * x );
double fun13( double * x );

void main()
{//*
	double lstart[9] = {1,1,1,1,1,1,1,1,1};
//	double lstart[9] = {0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5};
//	double lstart[9] = {0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1};
//	double lstart[9];
//	memset( lstart, 0, 9*sizeof(double) );
	double point[9];
	int a=9, b=13, c=0;
	FUN p_h[1];
	FUN p_g[13] = {fun1,fun2,fun3,fun4,fun5,fun6,fun7,fun8,fun9,fun10,fun11,fun12,fun13};
	Commen_condition( fun, p_g, p_h, a, b, c, lstart, point );
	cout<<"The desired point is:" <<endl;
	for( int i=0; i<9; i++ )
	{
	     cout<<"point["<<i+1<<"]=  " << point[i]<< endl;
	}
	cout<<"The desired minimum value is:   "<<fun( point ) <<endl;

	cout<<"The value of the condition functions:"<<endl;
	for( i=0; i<13; i++ )
	{
		cout<<"g["<<i+1<<"]=  "<<(p_g[i])( point )<<endl;
	}
//*/
}
//void Commen_condition( FUN Obj, FUN * pG_group, FUN * pH_group, int var_num, int g_num, int h_num, 
//					                                     double * start, double * point );


double fun( double * x )
{
	return ( -x[0]*x[3] +x[1]*x[2] -x[2]*x[8] +x[4]*x[8] -x[4]*x[7] +x[5]*x[6] ) /2;
}
double fun1( double * x )
{
	return x[2]*x[2] +x[3]*x[3] -1;
}
double fun2( double * x )
{
	return x[4]*x[4] +x[5]*x[5] -1;
}
double fun3( double * x )
{
	return x[0]*x[0] +( x[1] -x[8] ) *( x[1] -x[8] ) -1;
}
double fun4( double * x )
{
	return x[6]*x[6] +( x[7] -x[8] ) *( x[7] -x[8] ) -1;
}
double fun5( double * x )
{
	return ( x[0] -x[4] ) *( x[0] -x[4] ) +( x[1] -x[5] ) *( x[1] -x[5] ) -1;
}
double fun6( double * x )
{
	return x[5]*x[6] -x[4]*x[7] ;
}
double fun7( double * x )
{
	return ( x[0] -x[6] ) *( x[0] -x[6] ) +( x[1] -x[7] ) *( x[1] -x[7] ) -1;
}
double fun8( double * x )
{
	return ( x[2] -x[4] ) *( x[2] -x[4] ) +( x[3] -x[5] ) *( x[3] -x[5] ) -1;
}
double fun9( double * x )
{
	return ( x[2] -x[6] ) *( x[2] -x[6] ) +( x[3] -x[7] ) *( x[3] -x[7] ) -1;
}
double fun10( double * x )
{
	return x[1]*x[2] -x[0]*x[3] ;
}
double fun11( double * x )
{
	return -x[2] ;
}
double fun12( double * x )
{
	return -x[8] ;
}
double fun13( double * x )
{
	return x[8] -1;
}

⌨️ 快捷键说明

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