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

📄 wode

📁 数据矩阵的最优化算法
💻
字号:

#include "stdio.h" 

int qiuni(float* B,float* B1,int n)
{
	int N=n;
	int i;
	int j;
	
	float *FFF;
	FFF=new float[N*N];
	for(i=0;i<N;i++)
	{
		for(j=0;j<N;j++)
		{
			*(FFF+i*N+j)=*(B+i*N+j);
		}
		
	}
	
	
	i=j=0;
	int m;
	m=0;
	for(i=0;i<N;i++)
	{
		for(j=0;j<N;j++)
		{
			if(i==j)
				*(B1+i*N+j)=1;	
			else *(B1+i*N+j)=0;
		}
	}
	
	printf("B: \n");
	for(i=0;i<N;i++)
	{
		for(j=0;j<N;j++)
		{
			printf("%.4f ",*(B+i*N+j));
		}
		printf("\n");
	}
	
	printf("B1: \n");
	for(i=0;i<N;i++)
	{
		for(j=0;j<N;j++)
		{
			printf("%.4f ",*(B1+i*N+j));
		}
		printf("\n");
	}
	
	
	for(m=0;m<N;m++)
	{
		for(i=0;i<N;i++)
		{
			float b=*(B+i*N+m);
			if(b!=0)
				for(j=0;j<N;j++)
				{
					*(B+i*N+j)/=b;
					*(B1+i*N+j)/=b;
					
				}
		}
		
		
		for(i=0;i<N;i++)
		{	
			if((i!=m)&&((*(B+i*N+m))!=0))
			{
				
				for(j=0;j<N;j++)
				{
					*(B+i*N+j)-=*(B+m*N+j);
					*(B1+i*N+j)-=*(B1+m*N+j);
					
				}
			}
		}
		
		
		
	}
	
	
	for(i=0;i<N;i++)
	{	
		float ccc;
		ccc=*(B+i*N+i);
		for(j=0;j<N;j++)
		{
			
			*(B+i*N+j)/=ccc;
			*(B1+i*N+j)/=ccc;
		}
	}
	
	printf("B: *********\n");
	for(i=0;i<N;i++)
	{
		for(j=0;j<N;j++)
		{
			printf("%.4f ",*(B+i*N+j));
		}
		printf("\n");
	}
	
	printf("B1: \n");
	for(i=0;i<N;i++)
	{
		for(j=0;j<N;j++)
		{
			printf("%.4f ",*(B1+i*N+j));
		}
		printf("\n");
	}
	
	
	for(i=0;i<N;i++)
	{
		for(j=0;j<N;j++)
		{
			*(B+i*N+j)=*(FFF+i*N+j);
		}
		
	}
	
	delete FFF;	
	return 1;
}


float CbB1b(float* Cb,int Cb_i,int Cb_j,float* B1,
	    int B1_i,int B1_j,float* b,int b_i,int b_j)
{
	printf("\n");
	int i;
	int j;
	i=j=0;
	
	printf("Cb: %d %d \n",Cb_i,Cb_j);
	for(i=0;i<Cb_i;i++)
	{
		for(j=0;j<Cb_j;j++)
		{
			printf("%.4f ",*(Cb+i*Cb_j+j));
		}
		printf("\n");
	}
	printf("B1: %d %d \n",B1_i,B1_j);
	for(i=0;i<B1_i;i++)
	{
		for(j=0;j<B1_j;j++)
		{
			printf("%.4f ",*(B1+i*B1_j+j));
		}
		printf("\n");
	}
	printf(" b: %d %d \n",b_i,b_j);
	for(i=0;i<b_i;i++)
	{
		for(j=0;j<b_j;j++)
		{
			printf("%.4f ",*(b+i*b_j+j));
		}
		printf("\n");
	}
	
	if((Cb_i!=1)||(Cb_j!=B1_i)||(B1_j!=b_i)||(b_j!=1))
	{
		printf("Array parment wrong!\n");
		if((Cb_j!=B1_i)||(B1_j!=b_i))
		{}
		else printf(" save!\n");
		
		
	}
	float *XX;
	XX= new float[Cb_i*B1_j];
	
	printf("XX: \n");
	for(i=0;i<Cb_i;i++)
	{
		for(j=0;j<B1_j;j++)
		{
			int k;
			*(XX+i*B1_j+j)=0;
			for(k=0;k<Cb_j;k++)
			{
				*(XX+i*B1_j+j)+=*(Cb+i*Cb_j+k)*(*(B1+k*B1_j+j));
			}
			printf("%.4f ",*(XX+i*B1_j+j));
			
		}
		printf("\n");
	}
	
	
	float *YY;
	YY= new float[Cb_i*b_j];
	printf("YY: \n");
	for(i=0;i<Cb_i;i++)
	{
		for(j=0;j<b_j;j++)
		{
			int k;
			*(YY+i*b_j+j)=0;
			for(k=0;k<b_i;k++)
			{
				*(YY+i*b_j+j)+=*(XX+i*B1_j+k)*(*(b+k*b_j+j));
			}
			printf("%.4f ",*(YY+i*b_j+j));
			
		}
		printf("\n");
	}
	return *(YY);
	
	
	
	
	return 0;
}
float CbB1p(float* Cb,int Cb_i,int Cb_j,float* B1,
	    int B1_i,int B1_j,float* b,int b_i,int b_j,float* N,int N_i,int N_j)
{
	printf("\n");
	int i;
	int j;
	i=j=0;
	
	printf("Cb: %d %d \n",Cb_i,Cb_j);
	for(i=0;i<Cb_i;i++)
	{
		for(j=0;j<Cb_j;j++)
		{
			printf("%.4f ",*(Cb+i*Cb_j+j));
		}
		printf("\n");
	}
	printf("B1: %d %d \n",B1_i,B1_j);
	for(i=0;i<B1_i;i++)
	{
		for(j=0;j<B1_j;j++)
		{
			printf("%.4f ",*(B1+i*B1_j+j));
		}
		printf("\n");
	}
	printf(" b: %d %d \n",b_i,b_j);
	for(i=0;i<b_i;i++)
	{
		for(j=0;j<b_j;j++)
		{
			printf("%.4f ",*(b+i*b_j+j));
		}
		printf("\n");
	}
	printf(" N: %d %d \n",N_i,N_j);
	for(i=0;i<N_i;i++)
	{
		for(j=0;j<N_j;j++)
		{
			printf("%.4f ",*(N+i*N_j+j));
		}
		printf("\n");
	}
	
	
	if((Cb_i!=1)||(Cb_j!=B1_i)||(B1_j!=b_i)||(b_j!=1))
	{
		printf("Array parment wrong!\n");
		if((Cb_j!=B1_i)||(B1_j!=b_i))
		{}
		else printf(" save!\n");
		
		//	return 1000001;
	}
	float *XX;
	XX= new float[Cb_i*B1_j];
	
	printf("XX: \n");
	for(i=0;i<Cb_i;i++)
	{
		for(j=0;j<B1_j;j++)
		{
			int k;
			*(XX+i*B1_j+j)=0;
			for(k=0;k<Cb_j;k++)
			{
				*(XX+i*B1_j+j)+=*(Cb+i*Cb_j+k)*(*(B1+k*B1_j+j));
			}
			printf("%.4f ",*(XX+i*B1_j+j));
			
		}
		printf("\n");
	}
	
	
	float *YY;
	YY= new float[Cb_i*b_j];
	printf("YY: \n");
	for(i=0;i<Cb_i;i++)
	{
		for(j=0;j<b_j;j++)
		{
			int k;
			*(YY+i*b_j+j)=0;
			for(k=0;k<b_i;k++)
			{
				*(YY+i*b_j+j)+=*(XX+i*B1_j+k)*(*(b+k*b_j+j));
			}
			printf("%.4f ",*(YY+i*b_j+j));
			
		}
		printf("\n");
	}
	
	printf("N:\n");
	for(i=0;i<N_i;i++)
	{	
		for(j=0;j<N_j;j++)
		{
			
			*(N+i*N_j+j)=*(YY+i*b_j+j);
			printf("Z%d%d=%.4f  ",i,j,*(N+i*N_j+j));
		}
		printf("\n");
	}
	
	
	
	
	return 0;
}

int getmaxZn_Cn(float* Z,int Z_i,int Z_j,float* Cn,int Cn_i,int Cn_j)
{
	
	if((Z_i!=1)||(Cn_i!=1))
	{
		printf("Zn Cn i wrong");
		return 10000; 
		
	}
	if(Z_j!=Cn_j)
	{
		printf("Zn Cn j wrong");
		return 10001; 
		
	}
	float *countermax;
	countermax=new float[1*Z_j];
	
	printf("max counter...\n");
	int j;
	for(j=0;j<Z_j;j++)
	{
		*(countermax+j)=*(Z+j)-*(Cn+j);
		printf("%.4f ",*(countermax+j));
	}
	printf("\n");
	
	float xx=*countermax;
	int i=0;
	for(j=0;j<Z_j;j++)
	{
		if(*(countermax+j)>xx)
		{
			xx=*(countermax+j);
			i=j;
		}
	}
	printf("max is :%.4f\n",xx);
	if(xx<0)
	{
		printf("\nbecause max<0, find result. \n");
		return 65534;
	}
	return i;
	
	
	
}

int B1b(float* B1,int B1_i,int B1_j,float* b,int b_i,int b_j,float* b1,int b1_i,int b1_j)
{
	int i;
	int j;
	
	float *QQ;
	QQ= new float[B1_i*b_j];
	printf("QQ: \n");
	for(i=0;i<B1_i;i++)
	{
		for(j=0;j<b_j;j++)
		{
			int k;
			*(QQ+i*b_j+j)=0;
			for(k=0;k<b_i;k++)
			{
				*(QQ+i*b_j+j)+=*(B1+i*B1_j+k)*(*(b+k*b_j+j));
			}
			printf("%.4f ",*(QQ+i*b_j+j));
			
		}
		printf("\n");
	}
	printf("b1:\n");
	for(i=0;i<b1_i;i++)
	{
		for(j=0;j<b1_j;j++)
		{
			*(b1+i*b_j+j)=*(QQ+i*b_j+j);
			printf("%.4f ",*(b1+i*b_j+j));
		}
		printf("\n");
	}
	
	return 0;
}


int B1Pn(float* B1,int B1_i,int B1_j,float* N,int N_i,int N_j,int result,float* Yn,int Yn_i,int Yn_j)
{
	
	if((B1_i!=B1_j)||(B1_j!=N_i)||(B1_i!=Yn_i))
	{
		printf("result4 wrong!\n");
		return 1001;
	}
	int i;
	int j;
	i=j=0;
	
	for(i=0;i<B1_i;i++)
	{
		*(Yn+i)=0;
		for(j=0;j<B1_i;j++)
		{
			*(Yn+i)+=*(B1+i*B1_j+j)*(*(N+j*N_j+result));
		}
	}
	
	printf("Yn: %d*%d\n",Yn_i,Yn_j);
	for(i=0;i<Yn_i;i++)
		
		printf("%.4f \n",*(Yn+i));
	
	return 0;
}

int getminbYn(float* b,int b_i,int b_j,float* Yn,int Yn_i,int Yn_j)
{
	printf("getminbYN()start:\n");
	if((b_i!=Yn_i)||(b_j!=Yn_j)||(b_j!=1)||(Yn_j!=1))
	{
		printf("getminbYn wrong");
		return 0;
	}
	
	printf("b:%d*%d   Yn:%d*%d\n",b_i,b_j,Yn_i,Yn_j);
	int i;
	int j;
	i=j=0;
	for(i=0;i<b_i;i++)
	{
		printf("%.4f  %.4f\n",*(b+i),*(Yn+i));
	}
	printf("\n");
	
	
	float* PP;
	PP=new float[b_i];
	printf("PP:  \n");
	for(i=0;i<b_i;i++)
	{
		if((*(Yn+i))<=0)
			*(PP+i)=-1;
		else
			*(PP+i)=(*(b+i))/(*(Yn+i));
		printf("%.4f \n",*(PP+i));
	}
	j=-1;
	float CCC;
	int k;
	k=0;
	for(i=0;i<b_i;i++)
	{
		if((*(PP+i))>0)
		{
			j=0;
			CCC=*(PP+i);
			k=i;
			break;
		}
	}
	if(j!=0)
	{
		printf("find result !");
		return 10001;
	}
	
	printf("find: \n");
	printf("%d\n",k);
	for(i=0;i<b_i;i++)
	{
		if((*(PP+i))>0)
		{
			if((*(PP+i))<CCC)
			{
				CCC=*(PP+i);
				k=i;
			}
		}
		
	}
	printf("find over! \nresult:%d\n",k);
	return k+1;
	
	return 0;
}

int changeBN(float* B,int B_i,int B_j,int result5,float* N,int N_i,int N_j,int result,float* Cb,float* Cn)
{
	int i;
	float F;
	i=0;
	int j;
	printf("B: \n");
	for(i=0;i<B_i;i++)
	{
		for(j=0;j<B_j;j++)
		{
			printf("%.4f ",*(B+i*B_j+j));
		}
		printf("\n");
	}	
	printf("N: \n");
	for(i=0;i<N_i;i++)
	{
		for(j=0;j<N_j;j++)
		{
			printf("%.4f ",*(N+i*N_j+j));
		}
		printf("\n");
	}
	
	for(i=0;i<B_i;i++)
	{
		
		F=*(B+i*B_j+result5);
		*(B+i*B_j+result5)=*(N+i*N_j+result);
		*(N+i*N_j+result)=F;
		
		
	}
	
	F=*(Cb+result5);
	*(Cb+result5)=*(Cn+result);
	*(Cn+result)=F;
	
	
	printf("B: ***************** \n");
	for(i=0;i<B_i;i++)
	{
		for(j=0;j<B_j;j++)
		{
			printf("%.4f ",*(B+i*B_j+j));
		}
		printf("\n");
	}	
	printf("N: \n");
	for(i=0;i<N_i;i++)
	{
		for(j=0;j<N_j;j++)
		{
			printf("%.4f ",*(N+i*N_j+j));
		}
		printf("\n");
	}
	printf("\n");
	return 0;
}

⌨️ 快捷键说明

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