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

📄 00000.cpp

📁 用匈牙利算法解决二部图的最优匹配问题,可用于多任务的指派问题的解决.
💻 CPP
字号:
//#include "Match.h"

//#include "Matchz.h"



#include "o_time.h"
#include <Windows.h>
//#include "qiong.h"
#include "HungaryMatch.h"
//#include "PSOMatch.h"


FILE *fp;
int ttttt = 0;

void test()
	{	
	srand(GetTickCount());
	double timezhb,timeR ;

	Time zhb;
	Time Qi;
	
	int NOOfRobot =17;
	int NOOfPoint =17;
	double Cost[19][19] = {931,395,495,559,153,359,670,262,675,584,232,159,505,212,776,470,59,
		129,743,470,419,613,404,73,505,989,687,629,659,676,116,386,646,773,
		452,640,250,359,930,145,99,504,214,595,568,94,75,672,177,263,170,
		609,902,159,240,577,352,196,610,816,876,162,226,475,154,951,357,16,
		669,890,332,729,766,773,461,81,705,693,10,185,189,698,588,385,223,
		696,616,438,904,297,937,394,861,825,64,43,602,961,314,397,860,136,
		638,615,714,222,629,474,386,710,462,92,464,525,463,921,619,809,345,
		447,387,720,769,48,658,933,249,121,372,120,56,242,842,799,111,162,
		539,51,990,659,337,159,680,588,656,273,886,976,470,388,774,790,636,
		795,645,407,679,494,964,900,700,206,364,221,286,674,599,815,763,671,
		436,173,90,711,122,193,766,458,603,828,880,117,909,989,272,613,70,
		955,106,835,510,111,646,587,32,512,835,629,113,906,63,248,207,449,
		260,965,200,348,241,401,718,550,480,115,713,504,790,85,944,105,665,
		432,298,927,43,887,394,515,836,860,235,624,925,523,328,259,62,236,
		902,872,837,587,176,185,995,870,889,396,190,665,751,42,763,62,175,
		668,813,540,834,413,284,944,992,49,690,713,568,816,675,515,264,568,
		849,338,72,486,223,761,551,15,332,987,619,592,265,993,265,735,380
};
	int num = NOOfRobot>=NOOfPoint?NOOfRobot:NOOfPoint;
	int i, j;
	/*for( i=0; i<NOOfRobot;i++ )
		for( j=0; j<NOOfPoint;j++ )
			Cost[i][j] = AverageRandom(100,10231545612132310);*/

	



	
	/*Qiong Q(100000000);
	for( i=0; i<7;i++ )
		for( j=0; j<7;j++ )
			Q.cost[i][j] = Cost[i][j];
	Qi.start();
	Q.He();
	Qi.end();
	timeR = Qi.time_micro();
*/





HungaryMatch M(NOOfRobot,NOOfPoint,/*DBL_MAX*/50000000000);
for( i=0; i<NOOfRobot;i++ )
for( j=0; j<NOOfPoint;j++ )
M.sb.Cost[i+1][j+1] = Cost[i][j];
zhb.start();
M.match();
zhb.end();
timezhb= zhb.time_micro();
double sum = 0;
for( i=0; i<num;i++ )
	{
	sum = sum + Cost[i][M.Result[i+1]-1];
	}


	//double sum1 = 0;
	//for( i=0; i<num;i++ )
	//{
	//	sum1 = sum1 + Cost[i][Q.Result[i]];
	//}

if(1/*sum > sum1 || timezhb > timeR*/)
	{

	for( i=0; i<NOOfRobot;i++ )
		{
		for( j=0; j<NOOfPoint;j++ )
			fprintf(fp, "%f\t",Cost[i][j]);
		fprintf(fp,"\n");
		}
	fprintf(fp,"\n");

	


	fprintf(fp,"%f\tzhb\t%f\t%d",timezhb,sum,M.count);
   // fprintf(fp,"%f\tReal\t%f\t%f\n",timeR,Q.Min,sum1);
	for( i=0; i<NOOfRobot;i++ )
		fprintf(fp, "%d\t",M.Result[i+1]-1);

	fprintf(fp,"\n");

	/*for( i=0; i<NOOfRobot;i++ )
		fprintf(fp, "%d\t",Q.Result[i]);*/


	fprintf(fp,"\n\n");

	ttttt++;

	}

	}//main

void main()
	{   
	fp =fopen("bbb2.text","w");
	fprintf(fp,"test");
	for(int i = 0; i <1; i++)
	{
	test();
	}

	fprintf(fp,"%d",ttttt);
	fclose(fp); 
	
	}

⌨️ 快捷键说明

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