|
@@ -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)
|
|
&& all_min_parkspace_data.parkspace_info(i).parkingspace_status() == message::Parkspace_status::eParkspace_empty)
|
|
{
|
|
{
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-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_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;
|
|
(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)
|
|
if (time_min == 0)
|
|
@@ -465,7 +465,7 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverA(message::Pa
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
float time = (6-terminal_id+2)* 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 +
|
|
(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)
|
|
if (time_min == 0)
|
|
{
|
|
{
|
|
time_min = time;
|
|
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 )
|
|
if ( time_min == 0 )
|
|
{
|
|
{
|
|
time_min=t_min;
|
|
time_min=t_min;
|
|
@@ -535,7 +530,7 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverA(message::Pa
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
float time=(6-terminal_id+2)*TERMINAL_SPACING/MEDIUM_CAR_SPEED + DOWNSTAIRS_SPORTS_TIME +
|
|
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_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 )
|
|
if ( time_min == 0 )
|
|
{
|
|
{
|
|
time_min=time;
|
|
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 )
|
|
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 )
|
|
if ( time_min == 0 )
|
|
{
|
|
{
|
|
time_min=t_min;
|
|
time_min=t_min;
|
|
@@ -608,7 +598,7 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverA(message::Pa
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
float time=(6-terminal_id+2)*TERMINAL_SPACING/MEDIUM_CAR_SPEED + DOWNSTAIRS_SPORTS_TIME +
|
|
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_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 )
|
|
if ( time_min == 0 )
|
|
{
|
|
{
|
|
time_min=time;
|
|
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)
|
|
&& all_min_parkspace_data.parkspace_info(i).parkingspace_status() == message::Parkspace_status::eParkspace_empty)
|
|
{
|
|
{
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-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_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)
|
|
if (time_min == 0)
|
|
{
|
|
{
|
|
time_min = time;
|
|
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();
|
|
int room_id=all_min_parkspace_data.parkspace_info(i).parkingspace_index_id();
|
|
|
|
|
|
- //筛选出一号车库的小型车位的中间部分(第一优先级)的空车位
|
|
|
|
if (room_id % 15 <= 3 && room_id % 15 >= 1
|
|
if (room_id % 15 <= 3 && room_id % 15 >= 1
|
|
&& all_min_parkspace_data.parkspace_info(i).parkingspace_status() == message::Parkspace_status::eParkspace_empty)
|
|
&& all_min_parkspace_data.parkspace_info(i).parkingspace_status() == message::Parkspace_status::eParkspace_empty)
|
|
{
|
|
{
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-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_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)
|
|
if (time_min == 0)
|
|
{
|
|
{
|
|
time_min = time;
|
|
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 )
|
|
&& all_mid_parkspace_data.parkspace_info(i).parkingspace_status() == message::Parkspace_status::eParkspace_empty )
|
|
{
|
|
{
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-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_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 )
|
|
if ( time_min == 0 )
|
|
{
|
|
{
|
|
time_min=time;
|
|
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 )
|
|
&& all_mid_parkspace_data.parkspace_info(i).parkingspace_status() == message::Parkspace_status::eParkspace_empty )
|
|
{
|
|
{
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-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_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;
|
|
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 )
|
|
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 )
|
|
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 )
|
|
if ( time_min == 0 )
|
|
{
|
|
{
|
|
time_min=t_min;
|
|
time_min=t_min;
|
|
@@ -871,7 +860,7 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB1(message::P
|
|
else
|
|
else
|
|
{
|
|
{
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-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_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;
|
|
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 )
|
|
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)
|
|
&& all_min_parkspace_data.parkspace_info(i).parkingspace_status() == message::Parkspace_status::eParkspace_empty)
|
|
{
|
|
{
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-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 +
|
|
(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)
|
|
if (time_min == 0)
|
|
{
|
|
{
|
|
time_min = time;
|
|
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)
|
|
&& all_min_parkspace_data.parkspace_info(i).parkingspace_status() == message::Parkspace_status::eParkspace_empty)
|
|
{
|
|
{
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-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 +
|
|
(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)
|
|
if (time_min == 0)
|
|
{
|
|
{
|
|
time_min = time;
|
|
time_min = time;
|
|
@@ -1029,7 +1018,7 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB2(message::P
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
float time=(6-terminal_id+2)*TERMINAL_SPACING/MEDIUM_CAR_SPEED + DOWNSTAIRS_SPORTS_TIME +
|
|
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_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 )
|
|
if ( time_min == 0 )
|
|
{
|
|
{
|
|
time_min=time;
|
|
time_min=time;
|
|
@@ -1068,7 +1057,7 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB2(message::P
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
float time=(6-terminal_id+2)*TERMINAL_SPACING/MEDIUM_CAR_SPEED + DOWNSTAIRS_SPORTS_TIME +
|
|
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_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 )
|
|
if ( time_min == 0 )
|
|
{
|
|
{
|
|
time_min=time;
|
|
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 )
|
|
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 )
|
|
if ( time_min == 0 )
|
|
{
|
|
{
|
|
time_min=t_min;
|
|
time_min=t_min;
|
|
@@ -1137,7 +1126,7 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB2(message::P
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
float time=(6-terminal_id+2)*TERMINAL_SPACING/MEDIUM_CAR_SPEED + DOWNSTAIRS_SPORTS_TIME +
|
|
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_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 )
|
|
if ( time_min == 0 )
|
|
{
|
|
{
|
|
time_min=time;
|
|
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 )
|
|
if ( time_min == 0 )
|
|
{
|
|
{
|
|
time_min=t_min;
|
|
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 )
|
|
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 )
|
|
if ( time_min == 0 )
|
|
{
|
|
{
|
|
time_min=t_min;
|
|
time_min=t_min;
|
|
@@ -1304,9 +1294,21 @@ void Parkspace_manager::execute_for_allocate(message::Car_info car_info, int ter
|
|
else
|
|
else
|
|
{
|
|
{
|
|
m_parkspace_lock.lock();
|
|
m_parkspace_lock.lock();
|
|
- //如果车辆不存在 则找到一个最优车位
|
|
|
|
|
|
+// 如果车辆不存在 则找到一个最优车位(方案A)
|
|
error=query_the_optimal_parkspace_serverA(t_allocated_space,car_info,terminal_id);
|
|
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);
|
|
// 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
|
|
else
|
|
{
|
|
{
|
|
-
|
|
|
|
//修改车为状态为锁定
|
|
//修改车为状态为锁定
|
|
t_allocated_space.set_parkingspace_status(message::Parkspace_status::eParkspace_locked);
|
|
t_allocated_space.set_parkingspace_status(message::Parkspace_status::eParkspace_locked);
|
|
t_allocated_space.mutable_car_info()->CopyFrom(car_info);
|
|
t_allocated_space.mutable_car_info()->CopyFrom(car_info);
|