www.gusucode.com > 基于递归算法的建筑外表面光伏电池布局优化分析与设计 > 基于递归算法的建筑外表面光伏电池布局优化分析与设计【论文+程序】/文章+源码/源程序/问题一/房顶/CUMCM_Q1_屋顶_step2.cpp

    #include<stdio.h>
#include<math.h>
//根据step1确定各块数量
double max=118931.628405;
//记录各型号电池参数
typedef struct PVrect
{
	char* type;	//产品型号
	int x;	//产品长度
	int y;	//产品宽度
	double value;	//产品权值
}PVrect;
PVrect data[2];
int main()
{
	double sum;
	double temp;
	double min=max;
	int mini;
	int minj;
	int mink;
	data[0].type="A3";		data[0].x=1580;		data[0].y=808;		data[0].value=1902.904;
	data[1].type="C10";		data[1].x=818;		data[1].y=355;		data[1].value=750.8778;
	data[2].type="C8";		data[2].x=615;		data[2].y=355;		data[2].value=665.3232;
	int i,j,k;
	for(i=1;i<=50;i++)
	{
		for(j=1;j<=40;j++)
		{
			for(k=1;k<=40;k++)
			{
				sum=i*data[0].x*data[0].y*data[0].value/1000000+j*data[1].x*data[1].y*data[1].value/1000000+k*data[2].x*data[2].y*data[2].value/1000000;
				temp=sum-max;
				if(temp<=0)
					temp=-temp;
				else
					continue;
				if(temp<min&&(double(i*data[0].x*data[0].y)/1000000+double(j*data[1].x*data[1].y)/1000000+double(k*data[2].x*data[2].y)/1000000)<(10.1*6.511))
				{
					min=temp;
					mini=i;
					minj=j;
					mink=k;
				}
			}
		}
	}
	printf("%s %d\n%s %d\n%s %d\n",data[0].type,mini,data[1].type,minj,data[2].type,mink);
	printf("%lf\n",mini*data[0].x*data[0].y*data[0].value/1000000+minj*data[1].x*data[1].y*data[1].value/1000000+mink*data[2].x*data[2].y*data[2].value/1000000);
	printf("%lf\n",double(mini*data[0].x*data[0].y)/1000000+double(minj*data[1].x*data[1].y)/1000000+double(mink*data[2].x*data[2].y)/1000000);
	return 0;
}