Bläddra i källkod

2021 0302, wangkang parkspace B方案测试空车库

wk 4 år sedan
förälder
incheckning
6b1824a1f6
1 ändrade filer med 40 tillägg och 39 borttagningar
  1. 40 39
      parkspace_allocation/parkspace_manager.cpp

+ 40 - 39
parkspace_allocation/parkspace_manager.cpp

@@ -264,7 +264,7 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverA(message::Pa
 					&& all_min_parkspace_data.parkspace_info(i).parkingspace_status() == message::Parkspace_status::eParkspace_empty)
 				{
 					//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
-					float time = terminal_id * TERMINAL_SPACING / MEDIUM_CAR_SPEED + DOWNSTAIRS_SPORTS_TIME +
+					float time = (terminal_id+2) * TERMINAL_SPACING / MEDIUM_CAR_SPEED + DOWNSTAIRS_SPORTS_TIME +
 								 (all_min_parkspace_data.parkspace_info(i).parkingspace_floor_id() - 2) *all_min_parkspace_data.parkspace_info(i).parkingspace_height() /THE_ELEVATOR_SPEED +ELEVATOR_MOVEMENT_TIME +
 								 (all_min_parkspace_data.parkspace_info(i).parkingspace_index_id() % 15) *all_min_parkspace_data.parkspace_info(i).parkingspace_width() / MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
 					if (time_min == 0)
@@ -465,7 +465,7 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverA(message::Pa
 					//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
 					float time = (6-terminal_id+2)* TERMINAL_SPACING / MEDIUM_CAR_SPEED + DOWNSTAIRS_SPORTS_TIME +
 								 (all_min_parkspace_data.parkspace_info(i).parkingspace_floor_id() - 2) *all_min_parkspace_data.parkspace_info(i).parkingspace_height() /THE_ELEVATOR_SPEED +ELEVATOR_MOVEMENT_TIME +
-								 (15-all_min_parkspace_data.parkspace_info(i).parkingspace_index_id() % 15) *all_min_parkspace_data.parkspace_info(i).parkingspace_width() / MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
+								 ( (15-all_min_parkspace_data.parkspace_info(i).parkingspace_index_id() % 15)==15?0:(15-all_min_parkspace_data.parkspace_info(i).parkingspace_index_id() % 15) ) *all_min_parkspace_data.parkspace_info(i).parkingspace_width() / MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
 					if (time_min == 0)
 					{
 						time_min = time;
@@ -509,12 +509,7 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverA(message::Pa
 				{
 					//只需计算端口到车位的距离
 					// 三楼中型车位用时=| 目标车位到电梯的距离 - 终端到电梯的距离 | / 中跑车速度
-					float parkingspace_width=15-room_id%15;
-					if ( room_id%15==0 )
-					{
-						parkingspace_width=0;
-					}
-					float t_min=abs( parkingspace_width*all_mid_parkspace_data.parkspace_info(i).parkingspace_width()-(6-terminal_id+2)*TERMINAL_SPACING )/MEDIUM_CAR_SPEED+DOWNSTAIRS_SPORTS_TIME;
+					float t_min=abs( ((15-room_id%15)==15?0:(15-room_id%15))*all_mid_parkspace_data.parkspace_info(i).parkingspace_width()-(6-terminal_id+2)*TERMINAL_SPACING )/MEDIUM_CAR_SPEED+DOWNSTAIRS_SPORTS_TIME;
 					if ( time_min == 0 )
 					{
 						time_min=t_min;
@@ -535,7 +530,7 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverA(message::Pa
 					//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
 					float time=(6-terminal_id+2)*TERMINAL_SPACING/MEDIUM_CAR_SPEED  + DOWNSTAIRS_SPORTS_TIME +
 							   (all_mid_parkspace_data.parkspace_info(i).parkingspace_floor_id()-2)*all_mid_parkspace_data.parkspace_info(i).parkingspace_height()/THE_ELEVATOR_SPEED + ELEVATOR_MOVEMENT_TIME +
-							   (15-all_mid_parkspace_data.parkspace_info(i).parkingspace_index_id()%15)*all_mid_parkspace_data.parkspace_info(i).parkingspace_width()/MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
+							   (      ((15-all_mid_parkspace_data.parkspace_info(i).parkingspace_index_id()%15) ==15?0:(15-all_mid_parkspace_data.parkspace_info(i).parkingspace_index_id()%15))       )*all_mid_parkspace_data.parkspace_info(i).parkingspace_width()/MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
 					if ( time_min == 0 )
 					{
 						time_min=time;
@@ -583,12 +578,7 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverA(message::Pa
 					if ( all_big_parkspace_data.parkspace_info(i).parkingspace_floor_id() == 2 )
 					{
 						// 二楼用时=| 目标车位到电梯的距离 - 终端到电梯的距离 | / 中跑车速度
-						float parkingspace_width=15-room_id%15;
-						if ( room_id%15==0 )
-						{
-							parkingspace_width=0;
-						}
-						float t_min=abs( parkingspace_width*all_big_parkspace_data.parkspace_info(i).parkingspace_width()-(6-terminal_id+2)*TERMINAL_SPACING )/MEDIUM_CAR_SPEED+DOWNSTAIRS_SPORTS_TIME;
+						float t_min=abs( ((15-room_id%15)==15?0:(15-room_id%15))*all_big_parkspace_data.parkspace_info(i).parkingspace_width()-(6-terminal_id+2)*TERMINAL_SPACING )/MEDIUM_CAR_SPEED+DOWNSTAIRS_SPORTS_TIME;
 						if ( time_min == 0 )
 						{
 							time_min=t_min;
@@ -608,7 +598,7 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverA(message::Pa
 						//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
 						float time=(6-terminal_id+2)*TERMINAL_SPACING/MEDIUM_CAR_SPEED  + DOWNSTAIRS_SPORTS_TIME +
 								   (all_big_parkspace_data.parkspace_info(i).parkingspace_floor_id()-2)*all_big_parkspace_data.parkspace_info(i).parkingspace_height()/THE_ELEVATOR_SPEED + ELEVATOR_MOVEMENT_TIME +
-									(15-all_big_parkspace_data.parkspace_info(i).parkingspace_index_id()%15)*all_big_parkspace_data.parkspace_info(i).parkingspace_width()/MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
+									(      ((15-all_big_parkspace_data.parkspace_info(i).parkingspace_index_id()%15) ==15?0:(15-all_big_parkspace_data.parkspace_info(i).parkingspace_index_id()%15))       )*all_big_parkspace_data.parkspace_info(i).parkingspace_width()/MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
 						if ( time_min == 0 )
 						{
 							time_min=time;
@@ -678,9 +668,9 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB1(message::P
 				&& all_min_parkspace_data.parkspace_info(i).parkingspace_status() == message::Parkspace_status::eParkspace_empty)
 			{
 				//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
-				float time = terminal_id * TERMINAL_SPACING / MEDIUM_CAR_SPEED + DOWNSTAIRS_SPORTS_TIME +
+				float time = (terminal_id+2) * TERMINAL_SPACING / MEDIUM_CAR_SPEED + DOWNSTAIRS_SPORTS_TIME +
 							 (all_min_parkspace_data.parkspace_info(i).parkingspace_floor_id() - 2) *all_min_parkspace_data.parkspace_info(i).parkingspace_height() /THE_ELEVATOR_SPEED +ELEVATOR_MOVEMENT_TIME +
-							 (15-all_min_parkspace_data.parkspace_info(i).parkingspace_index_id() % 15) *all_min_parkspace_data.parkspace_info(i).parkingspace_width() / MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
+							 (all_min_parkspace_data.parkspace_info(i).parkingspace_index_id() % 15) *all_min_parkspace_data.parkspace_info(i).parkingspace_width() / MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
 				if (time_min == 0)
 				{
 					time_min = time;
@@ -711,14 +701,13 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB1(message::P
 			{
 				int room_id=all_min_parkspace_data.parkspace_info(i).parkingspace_index_id();
 
-				//筛选出一号车库的小型车位的中间部分(第一优先级)的空车位
 				if (room_id % 15 <= 3 && room_id % 15 >= 1
 					&& all_min_parkspace_data.parkspace_info(i).parkingspace_status() == message::Parkspace_status::eParkspace_empty)
 				{
 					//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
-					float time = terminal_id * TERMINAL_SPACING / MEDIUM_CAR_SPEED + DOWNSTAIRS_SPORTS_TIME +
+					float time = (terminal_id+2) * TERMINAL_SPACING / MEDIUM_CAR_SPEED + DOWNSTAIRS_SPORTS_TIME +
 								 (all_min_parkspace_data.parkspace_info(i).parkingspace_floor_id() - 2) *all_min_parkspace_data.parkspace_info(i).parkingspace_height() /THE_ELEVATOR_SPEED +ELEVATOR_MOVEMENT_TIME +
-								 (15-all_min_parkspace_data.parkspace_info(i).parkingspace_index_id() % 15) *all_min_parkspace_data.parkspace_info(i).parkingspace_width() / MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
+								 (all_min_parkspace_data.parkspace_info(i).parkingspace_index_id() % 15) *all_min_parkspace_data.parkspace_info(i).parkingspace_width() / MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
 					if (time_min == 0)
 					{
 						time_min = time;
@@ -763,9 +752,9 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB1(message::P
 				 && all_mid_parkspace_data.parkspace_info(i).parkingspace_status() == message::Parkspace_status::eParkspace_empty )
 			{
 				//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
-				float time=(6-terminal_id+2)*TERMINAL_SPACING/MEDIUM_CAR_SPEED  + DOWNSTAIRS_SPORTS_TIME +
+				float time=(terminal_id+2)*TERMINAL_SPACING/MEDIUM_CAR_SPEED  + DOWNSTAIRS_SPORTS_TIME +
 						   (all_mid_parkspace_data.parkspace_info(i).parkingspace_floor_id()-2)*all_mid_parkspace_data.parkspace_info(i).parkingspace_height()/THE_ELEVATOR_SPEED + ELEVATOR_MOVEMENT_TIME +
-							(15-all_mid_parkspace_data.parkspace_info(i).parkingspace_index_id()%15)*all_mid_parkspace_data.parkspace_info(i).parkingspace_width()/MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
+							(all_mid_parkspace_data.parkspace_info(i).parkingspace_index_id()%15)*all_mid_parkspace_data.parkspace_info(i).parkingspace_width()/MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
 				if ( time_min == 0 )
 				{
 					time_min=time;
@@ -802,7 +791,7 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB1(message::P
 					 && all_mid_parkspace_data.parkspace_info(i).parkingspace_status() == message::Parkspace_status::eParkspace_empty )
 				{
 					//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
-					float time=(6-terminal_id+2)*TERMINAL_SPACING/MEDIUM_CAR_SPEED  + DOWNSTAIRS_SPORTS_TIME +
+					float time=(terminal_id+2)*TERMINAL_SPACING/MEDIUM_CAR_SPEED  + DOWNSTAIRS_SPORTS_TIME +
 							   (all_mid_parkspace_data.parkspace_info(i).parkingspace_floor_id()-2)*all_mid_parkspace_data.parkspace_info(i).parkingspace_height()/THE_ELEVATOR_SPEED + ELEVATOR_MOVEMENT_TIME +
 							   all_mid_parkspace_data.parkspace_info(i).parkingspace_index_id()%15*all_mid_parkspace_data.parkspace_info(i).parkingspace_width()/MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
 					if ( time_min == 0 )
@@ -853,7 +842,7 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB1(message::P
 				if ( all_big_parkspace_data.parkspace_info(i).parkingspace_floor_id() == 2 )
 				{
 					// 二楼用时=| 目标车位到电梯的距离 - 终端到电梯的距离 | / 中跑车速度
-					float t_min=abs( room_id%15*all_big_parkspace_data.parkspace_info(i).parkingspace_width()-(6-terminal_id+2)*TERMINAL_SPACING )/MEDIUM_CAR_SPEED+DOWNSTAIRS_SPORTS_TIME;
+					float t_min=abs( room_id%15*all_big_parkspace_data.parkspace_info(i).parkingspace_width()-(terminal_id+2)*TERMINAL_SPACING )/MEDIUM_CAR_SPEED+DOWNSTAIRS_SPORTS_TIME;
 					if ( time_min == 0 )
 					{
 						time_min=t_min;
@@ -871,7 +860,7 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB1(message::P
 				else
 				{
 					//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
-					float time=(6-terminal_id+2)*TERMINAL_SPACING/MEDIUM_CAR_SPEED  + DOWNSTAIRS_SPORTS_TIME +
+					float time=(terminal_id+2)*TERMINAL_SPACING/MEDIUM_CAR_SPEED  + DOWNSTAIRS_SPORTS_TIME +
 							   (all_big_parkspace_data.parkspace_info(i).parkingspace_floor_id()-2)*all_big_parkspace_data.parkspace_info(i).parkingspace_height()/THE_ELEVATOR_SPEED + ELEVATOR_MOVEMENT_TIME +
 							   all_big_parkspace_data.parkspace_info(i).parkingspace_index_id()%15*all_big_parkspace_data.parkspace_info(i).parkingspace_width()/MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
 					if ( time_min == 0 )
@@ -942,9 +931,9 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB2(message::P
 				&& all_min_parkspace_data.parkspace_info(i).parkingspace_status() == message::Parkspace_status::eParkspace_empty)
 			{
 				//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
-				float time = terminal_id * TERMINAL_SPACING / MEDIUM_CAR_SPEED + DOWNSTAIRS_SPORTS_TIME +
+				float time = (6-terminal_id+2) * TERMINAL_SPACING / MEDIUM_CAR_SPEED + DOWNSTAIRS_SPORTS_TIME +
 							 (all_min_parkspace_data.parkspace_info(i).parkingspace_floor_id() - 2) *all_min_parkspace_data.parkspace_info(i).parkingspace_height() /THE_ELEVATOR_SPEED +ELEVATOR_MOVEMENT_TIME +
-							 (15-all_min_parkspace_data.parkspace_info(i).parkingspace_index_id() % 15) *all_min_parkspace_data.parkspace_info(i).parkingspace_width() / MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
+							 ( (15-all_min_parkspace_data.parkspace_info(i).parkingspace_index_id() % 15)==15?0:(15-all_min_parkspace_data.parkspace_info(i).parkingspace_index_id() % 15) ) *all_min_parkspace_data.parkspace_info(i).parkingspace_width() / MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
 				if (time_min == 0)
 				{
 					time_min = time;
@@ -980,9 +969,9 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB2(message::P
 					&& all_min_parkspace_data.parkspace_info(i).parkingspace_status() == message::Parkspace_status::eParkspace_empty)
 				{
 					//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
-					float time = terminal_id * TERMINAL_SPACING / MEDIUM_CAR_SPEED + DOWNSTAIRS_SPORTS_TIME +
+					float time = (6-terminal_id+2) * TERMINAL_SPACING / MEDIUM_CAR_SPEED + DOWNSTAIRS_SPORTS_TIME +
 								 (all_min_parkspace_data.parkspace_info(i).parkingspace_floor_id() - 2) *all_min_parkspace_data.parkspace_info(i).parkingspace_height() /THE_ELEVATOR_SPEED +ELEVATOR_MOVEMENT_TIME +
-								 (15-all_min_parkspace_data.parkspace_info(i).parkingspace_index_id() % 15) *all_min_parkspace_data.parkspace_info(i).parkingspace_width() / MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
+								 ( (15-all_min_parkspace_data.parkspace_info(i).parkingspace_index_id() % 15)==15?0:(15-all_min_parkspace_data.parkspace_info(i).parkingspace_index_id() % 15) ) *all_min_parkspace_data.parkspace_info(i).parkingspace_width() / MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
 					if (time_min == 0)
 					{
 						time_min = time;
@@ -1029,7 +1018,7 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB2(message::P
 				//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
 				float time=(6-terminal_id+2)*TERMINAL_SPACING/MEDIUM_CAR_SPEED  + DOWNSTAIRS_SPORTS_TIME +
 						   (all_mid_parkspace_data.parkspace_info(i).parkingspace_floor_id()-2)*all_mid_parkspace_data.parkspace_info(i).parkingspace_height()/THE_ELEVATOR_SPEED + ELEVATOR_MOVEMENT_TIME +
-						   all_mid_parkspace_data.parkspace_info(i).parkingspace_index_id()%15*all_mid_parkspace_data.parkspace_info(i).parkingspace_width()/MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
+						   ( ((15-all_mid_parkspace_data.parkspace_info(i).parkingspace_index_id()%15) ==15?0:(15-all_mid_parkspace_data.parkspace_info(i).parkingspace_index_id()%15)) )*all_mid_parkspace_data.parkspace_info(i).parkingspace_width()/MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
 				if ( time_min == 0 )
 				{
 					time_min=time;
@@ -1068,7 +1057,7 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB2(message::P
 					//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
 					float time=(6-terminal_id+2)*TERMINAL_SPACING/MEDIUM_CAR_SPEED  + DOWNSTAIRS_SPORTS_TIME +
 							   (all_mid_parkspace_data.parkspace_info(i).parkingspace_floor_id()-2)*all_mid_parkspace_data.parkspace_info(i).parkingspace_height()/THE_ELEVATOR_SPEED + ELEVATOR_MOVEMENT_TIME +
-							   all_mid_parkspace_data.parkspace_info(i).parkingspace_index_id()%15*all_mid_parkspace_data.parkspace_info(i).parkingspace_width()/MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
+							   ( ((15-all_mid_parkspace_data.parkspace_info(i).parkingspace_index_id()%15) ==15?0:(15-all_mid_parkspace_data.parkspace_info(i).parkingspace_index_id()%15)) )*all_mid_parkspace_data.parkspace_info(i).parkingspace_width()/MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
 					if ( time_min == 0 )
 					{
 						time_min=time;
@@ -1117,7 +1106,7 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB2(message::P
 				if ( all_big_parkspace_data.parkspace_info(i).parkingspace_floor_id() == 2 )
 				{
 					// 二楼用时=| 目标车位到电梯的距离 - 终端到电梯的距离 | / 中跑车速度
-					float t_min=abs( room_id%15*all_big_parkspace_data.parkspace_info(i).parkingspace_width()-(6-terminal_id+2)*TERMINAL_SPACING )/MEDIUM_CAR_SPEED+DOWNSTAIRS_SPORTS_TIME;
+					float t_min=abs( ((15-room_id%15)==15?0:(15-room_id%15))*all_big_parkspace_data.parkspace_info(i).parkingspace_width()-(6-terminal_id+2)*TERMINAL_SPACING )/MEDIUM_CAR_SPEED+DOWNSTAIRS_SPORTS_TIME;
 					if ( time_min == 0 )
 					{
 						time_min=t_min;
@@ -1137,7 +1126,7 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB2(message::P
 					//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
 					float time=(6-terminal_id+2)*TERMINAL_SPACING/MEDIUM_CAR_SPEED  + DOWNSTAIRS_SPORTS_TIME +
 							   (all_big_parkspace_data.parkspace_info(i).parkingspace_floor_id()-2)*all_big_parkspace_data.parkspace_info(i).parkingspace_height()/THE_ELEVATOR_SPEED + ELEVATOR_MOVEMENT_TIME +
-							   all_big_parkspace_data.parkspace_info(i).parkingspace_index_id()%15*all_big_parkspace_data.parkspace_info(i).parkingspace_width()/MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
+							   ( (15-all_big_parkspace_data.parkspace_info(i).parkingspace_index_id() % 15)==15?0:(15-all_big_parkspace_data.parkspace_info(i).parkingspace_index_id() % 15) )*all_big_parkspace_data.parkspace_info(i).parkingspace_width()/MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
 					if ( time_min == 0 )
 					{
 						time_min=time;
@@ -1203,7 +1192,7 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB3(message::P
 			{
 				//只需计算端口到车位的距离
 				// 三楼中型用时=| 目标车位到电梯的距离 - 终端到电梯的距离 | / 中跑车速度
-				float t_min=abs( room_id%15*all_mid_parkspace_data.parkspace_info(i).parkingspace_width()-(6-terminal_id+2)*TERMINAL_SPACING )/MEDIUM_CAR_SPEED+DOWNSTAIRS_SPORTS_TIME;
+				float t_min=abs( room_id%15*all_mid_parkspace_data.parkspace_info(i).parkingspace_width()-(terminal_id+2)*TERMINAL_SPACING )/MEDIUM_CAR_SPEED+DOWNSTAIRS_SPORTS_TIME;
 				if ( time_min == 0 )
 				{
 					time_min=t_min;
@@ -1218,6 +1207,7 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB3(message::P
 					}
 				}
 			}
+			++i;
 		}
 		//判断缓冲区的中型车位是否有找到合适的空车位   如果找到了  直接返回
 		if ( time_min!=0 && parkingspace_index_id!=-1 )
@@ -1244,7 +1234,7 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB3(message::P
 			{
 				//只需计算端口到车位的距离
 				// 二楼中型用时=| 目标车位到电梯的距离 - 终端到电梯的距离 | / 中跑车速度
-				float t_min=abs( room_id%15*all_big_parkspace_data.parkspace_info(i).parkingspace_width()-(6-terminal_id+2)*TERMINAL_SPACING )/MEDIUM_CAR_SPEED+DOWNSTAIRS_SPORTS_TIME;
+				float t_min=abs( room_id%15*all_big_parkspace_data.parkspace_info(i).parkingspace_width()-(terminal_id+2)*TERMINAL_SPACING )/MEDIUM_CAR_SPEED+DOWNSTAIRS_SPORTS_TIME;
 				if ( time_min == 0 )
 				{
 					time_min=t_min;
@@ -1304,9 +1294,21 @@ void Parkspace_manager::execute_for_allocate(message::Car_info car_info, int ter
 	else
 	{
 		m_parkspace_lock.lock();
-		//如果车辆不存在 则找到一个最优车位
+//		如果车辆不存在 则找到一个最优车位(方案A)
 		error=query_the_optimal_parkspace_serverA(t_allocated_space,car_info,terminal_id);
-//		query_the_optimal_parkspace_serverA(t_allocated_space,car_info,terminal_id);
+
+//		如果车辆不存在 则找到一个最优车位(方案B)
+//		message::Parkspace_info t_allocated_space_left;
+//		message::Parkspace_info t_allocated_space_rigth;
+//		message::Parkspace_info t_allocated_space_temporary;
+//
+//		error=query_the_optimal_parkspace_serverB1(t_allocated_space_left,car_info,terminal_id);
+//		LOG(INFO) << " 左侧车位ID: "<<t_allocated_space_left.parkingspace_index_id();
+//		error=query_the_optimal_parkspace_serverB2(t_allocated_space_rigth,car_info,terminal_id);
+//		LOG(INFO) << " 右侧车位ID: "<<t_allocated_space_rigth.parkingspace_index_id();
+//		error=query_the_optimal_parkspace_serverB3(t_allocated_space_temporary,car_info,terminal_id);
+//		LOG(INFO) << " 缓冲区车位ID: "<<t_allocated_space_temporary.parkingspace_index_id();
+
 		//如果车辆不存在则获取一个空车位
 //		error=m_parkspace_operating_function.query_one_empty_parkspace(t_allocated_space);
 
@@ -1319,7 +1321,6 @@ void Parkspace_manager::execute_for_allocate(message::Car_info car_info, int ter
 		}
 		else
 		{
-
 			//修改车为状态为锁定
 			t_allocated_space.set_parkingspace_status(message::Parkspace_status::eParkspace_locked);
 			t_allocated_space.mutable_car_info()->CopyFrom(car_info);