|
@@ -174,18 +174,28 @@ Error_manager Parkspace_manager::encapsulating_heartbeat_messages()
|
|
|
t_parkspace_status_msg.set_parkspace_manager_satus((message::Parkspace_manager_satus)t_parkspace_manager_satus);
|
|
|
|
|
|
message::Parkspace_allocation_data_msg parkspaceAllocationDataMsg;
|
|
|
+ int t_min_parkspace_size;
|
|
|
+ int t_medium_parkspace_size;
|
|
|
+ int t_large_parkspace_size;
|
|
|
+ int t_total_parkspace_size;
|
|
|
m_parkspace_operating_function.get_specify_the_type_parkspace_info(parkspaceAllocationDataMsg,message::Parkspace_type::MIN_PARKINGSPACE);
|
|
|
- t_parkspace_status_msg.set_small_parkspace_remaining_number(parkspaceAllocationDataMsg.parkspace_info_ex_size());
|
|
|
+ t_min_parkspace_size = parkspaceAllocationDataMsg.parkspace_info_ex_size();
|
|
|
+ t_parkspace_status_msg.set_small_parkspace_remaining_number(t_min_parkspace_size);
|
|
|
parkspaceAllocationDataMsg.clear_parkspace_info_ex();
|
|
|
|
|
|
m_parkspace_operating_function.get_specify_the_type_parkspace_info(parkspaceAllocationDataMsg,message::Parkspace_type::MID_PARKINGSPACE);
|
|
|
- t_parkspace_status_msg.set_small_parkspace_remaining_number(parkspaceAllocationDataMsg.parkspace_info_ex_size());
|
|
|
+ t_medium_parkspace_size = parkspaceAllocationDataMsg.parkspace_info_ex_size();
|
|
|
+ t_parkspace_status_msg.set_medium_parkspace_remaining_number(t_medium_parkspace_size);
|
|
|
parkspaceAllocationDataMsg.clear_parkspace_info_ex();
|
|
|
|
|
|
m_parkspace_operating_function.get_specify_the_type_parkspace_info(parkspaceAllocationDataMsg,message::Parkspace_type::BIG_PARKINGSPACE);
|
|
|
- t_parkspace_status_msg.set_small_parkspace_remaining_number(parkspaceAllocationDataMsg.parkspace_info_ex_size());
|
|
|
+ t_large_parkspace_size = parkspaceAllocationDataMsg.parkspace_info_ex_size();
|
|
|
+ t_parkspace_status_msg.set_large_parkspace_remaining_number(t_large_parkspace_size);
|
|
|
parkspaceAllocationDataMsg.clear_parkspace_info_ex();
|
|
|
|
|
|
+ t_total_parkspace_size = t_min_parkspace_size + t_medium_parkspace_size + t_large_parkspace_size;
|
|
|
+ t_parkspace_status_msg.set_total_parkspace_remaining_number(t_total_parkspace_size);
|
|
|
+ LOG(INFO) << t_parkspace_status_msg.DebugString()<< this;
|
|
|
return Parkspace_communicator::get_instance_references().encapsulate_msg(t_parkspace_status_msg.SerializeAsString());
|
|
|
|
|
|
|
|
@@ -270,15 +280,16 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB1(message::P
|
|
|
int i = 0;
|
|
|
while (i < all_min_parkspace_data.parkspace_info_ex_size())
|
|
|
{
|
|
|
- int room_id=all_min_parkspace_data.parkspace_info_ex(i).parkingspace_index_id();
|
|
|
+ int t_parkspace_id=all_min_parkspace_data.parkspace_info_ex(i).parkingspace_index_id();
|
|
|
//筛选出小型车位的中间部分(第一优先级)的空车位
|
|
|
- if (room_id % 15 >= 4 && room_id % 15 <= 12
|
|
|
+ if (t_parkspace_id % 15 >= 4 && t_parkspace_id % 15 <= 12
|
|
|
&& all_min_parkspace_data.parkspace_info_ex(i).parkingspace_status() == message::Parkspace_status::eParkspace_empty)
|
|
|
{
|
|
|
+
|
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
|
float time = (terminal_id+2) * TERMINAL_SPACING / MEDIUM_CAR_SPEED + DOWNSTAIRS_SPORTS_TIME +
|
|
|
(all_min_parkspace_data.parkspace_info_ex(i).parkingspace_floor_id() - 2) *all_min_parkspace_data.parkspace_info_ex(i).parkingspace_height() /THE_ELEVATOR_SPEED +ELEVATOR_MOVEMENT_TIME +
|
|
|
- (all_min_parkspace_data.parkspace_info_ex(i).parkingspace_index_id() % 15) *all_min_parkspace_data.parkspace_info_ex(i).parkingspace_width() / MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
|
|
|
+ (t_parkspace_id % 15 ) *all_min_parkspace_data.parkspace_info_ex(i).parkingspace_width() / MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
|
|
|
if (time_min == 0)
|
|
|
{
|
|
|
time_min = time;
|
|
@@ -292,6 +303,10 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB1(message::P
|
|
|
parkingspace_index_id=i;
|
|
|
}
|
|
|
}
|
|
|
+ std::cout << " ------left-------" << std::endl;
|
|
|
+ std::cout << " time = " << time;
|
|
|
+ std::cout << " time_min = " << time_min;
|
|
|
+ std::cout << " t_parkspace_id = " << t_parkspace_id << std::endl<< std::endl<< std::endl;
|
|
|
}
|
|
|
++i;
|
|
|
}
|
|
@@ -311,15 +326,15 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB1(message::P
|
|
|
int i = 0;
|
|
|
while (i < all_min_parkspace_data.parkspace_info_ex_size())
|
|
|
{
|
|
|
- int room_id=all_min_parkspace_data.parkspace_info_ex(i).parkingspace_index_id();
|
|
|
+ int t_parkspace_id=all_min_parkspace_data.parkspace_info_ex(i).parkingspace_index_id();
|
|
|
|
|
|
- if ( (room_id % 15 >= 1 && room_id % 15 <= 3 || room_id % 15 == 13 || room_id % 15 ==14 || room_id % 15 ==0 )
|
|
|
+ if ( (t_parkspace_id % 15 >= 1 && t_parkspace_id % 15 <= 3 || t_parkspace_id % 15 == 13 || t_parkspace_id % 15 ==14 || t_parkspace_id % 15 ==0 )
|
|
|
&& all_min_parkspace_data.parkspace_info_ex(i).parkingspace_status() == message::Parkspace_status::eParkspace_empty)
|
|
|
{
|
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
|
float time = (terminal_id+2) * TERMINAL_SPACING / MEDIUM_CAR_SPEED + DOWNSTAIRS_SPORTS_TIME +
|
|
|
(all_min_parkspace_data.parkspace_info_ex(i).parkingspace_floor_id() - 2) *all_min_parkspace_data.parkspace_info_ex(i).parkingspace_height() /THE_ELEVATOR_SPEED +ELEVATOR_MOVEMENT_TIME +
|
|
|
- (all_min_parkspace_data.parkspace_info_ex(i).parkingspace_index_id() % 15) *all_min_parkspace_data.parkspace_info_ex(i).parkingspace_width() / MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
|
|
|
+ (t_parkspace_id % 15 == 0?15:t_parkspace_id % 15) *all_min_parkspace_data.parkspace_info_ex(i).parkingspace_width() / MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
|
|
|
if (time_min == 0)
|
|
|
{
|
|
|
time_min = time;
|
|
@@ -333,6 +348,10 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB1(message::P
|
|
|
parkingspace_index_id = i;
|
|
|
}
|
|
|
}
|
|
|
+ std::cout << " ------left-------" << std::endl;
|
|
|
+ std::cout << " time = " << time ;
|
|
|
+ std::cout << " time_min = " << time_min;
|
|
|
+ std::cout << " t_parkspace_id = " << t_parkspace_id << std::endl<< std::endl<< std::endl;
|
|
|
}
|
|
|
++i;
|
|
|
}
|
|
@@ -360,16 +379,16 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB1(message::P
|
|
|
int i=0;
|
|
|
while(i<all_mid_parkspace_data.parkspace_info_ex_size())
|
|
|
{
|
|
|
- int room_id=all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_index_id();
|
|
|
+ int t_parkspace_id=all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_index_id();
|
|
|
|
|
|
//如果是六楼的中型车位的中间部分(第一优先级)
|
|
|
- if ( room_id >=64 && room_id <= 72
|
|
|
+ if ( t_parkspace_id >=64 && t_parkspace_id <= 72
|
|
|
&& all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_status() == message::Parkspace_status::eParkspace_empty )
|
|
|
{
|
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
|
float time=(terminal_id+2)*TERMINAL_SPACING/MEDIUM_CAR_SPEED + DOWNSTAIRS_SPORTS_TIME +
|
|
|
(all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_floor_id()-2)*all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_height()/THE_ELEVATOR_SPEED + ELEVATOR_MOVEMENT_TIME +
|
|
|
- (all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_index_id()%15)*all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_width()/MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
|
|
|
+ (t_parkspace_id % 15)*all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_width()/MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
|
|
|
if ( time_min == 0 )
|
|
|
{
|
|
|
time_min=time;
|
|
@@ -384,6 +403,10 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB1(message::P
|
|
|
parkingspace_index_id=i;
|
|
|
}
|
|
|
}
|
|
|
+ std::cout << " ------left-------" << std::endl;
|
|
|
+ std::cout << " time = " << time;
|
|
|
+ std::cout << " time_min = " << time_min;
|
|
|
+ std::cout << " t_parkspace_id = " << t_parkspace_id << std::endl<< std::endl<< std::endl;
|
|
|
}
|
|
|
++i;
|
|
|
}
|
|
@@ -402,16 +425,16 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB1(message::P
|
|
|
int i=0;
|
|
|
while(i<all_mid_parkspace_data.parkspace_info_ex_size())
|
|
|
{
|
|
|
- int room_id=all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_index_id();
|
|
|
+ int t_parkspace_id=all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_index_id();
|
|
|
|
|
|
//如果是六楼的中型车位的侧边(第二优先级)
|
|
|
- if ( (room_id >=61 && room_id <= 63 || room_id % 15 == 13 || room_id % 15 ==14 || room_id % 15 ==0 )
|
|
|
+ if ( (t_parkspace_id >=61 && t_parkspace_id <= 63 || t_parkspace_id % 15 == 13 || t_parkspace_id % 15 ==14 || t_parkspace_id % 15 ==0 )
|
|
|
&& all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_status() == message::Parkspace_status::eParkspace_empty )
|
|
|
{
|
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
|
float time=(terminal_id+2)*TERMINAL_SPACING/MEDIUM_CAR_SPEED + DOWNSTAIRS_SPORTS_TIME +
|
|
|
(all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_floor_id()-2)*all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_height()/THE_ELEVATOR_SPEED + ELEVATOR_MOVEMENT_TIME +
|
|
|
- all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_index_id()%15*all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_width()/MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
|
|
|
+ (t_parkspace_id % 15 == 0?15:t_parkspace_id % 15)*all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_width()/MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
|
|
|
if ( time_min == 0 )
|
|
|
{
|
|
|
time_min=time;
|
|
@@ -426,6 +449,10 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB1(message::P
|
|
|
parkingspace_index_id=i;
|
|
|
}
|
|
|
}
|
|
|
+ std::cout << " ------left-------" << std::endl;
|
|
|
+ std::cout << " time = " << time ;
|
|
|
+ std::cout << " time_min = " << time_min;
|
|
|
+ std::cout << " t_parkspace_id = " << t_parkspace_id << std::endl<< std::endl<< std::endl;
|
|
|
}
|
|
|
++i;
|
|
|
}
|
|
@@ -453,17 +480,18 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB1(message::P
|
|
|
int i=0;
|
|
|
while(i<all_big_parkspace_data.parkspace_info_ex_size())
|
|
|
{
|
|
|
- int room_id=all_big_parkspace_data.parkspace_info_ex(i).parkingspace_index_id();
|
|
|
+ int t_parkspace_id=all_big_parkspace_data.parkspace_info_ex(i).parkingspace_index_id();
|
|
|
|
|
|
//筛选出一号车库的小型车位的靠近电梯的左侧三排(第二优先级)的空车位
|
|
|
- if ( ( (room_id %15 >= 1 && room_id %15 <= 3) || (room_id>=34 && room_id<=42) || room_id % 15 == 13 || room_id % 15 ==14 || room_id % 15 ==0 )
|
|
|
+ if ( ( (t_parkspace_id %15 >= 1 && t_parkspace_id %15 <= 3) || (t_parkspace_id>=34 && t_parkspace_id<=42) || t_parkspace_id % 15 == 13 || t_parkspace_id % 15 ==14 || t_parkspace_id % 15 ==0 )
|
|
|
&& all_big_parkspace_data.parkspace_info_ex(i).parkingspace_status() == message::Parkspace_status::eParkspace_empty )
|
|
|
{
|
|
|
//如果是二楼车 则特殊处理
|
|
|
if ( all_big_parkspace_data.parkspace_info_ex(i).parkingspace_floor_id() == 2 )
|
|
|
{
|
|
|
// 二楼用时=| 目标车位到电梯的距离 - 终端到电梯的距离 | / 中跑车速度
|
|
|
- float t_min=abs( room_id%15*all_big_parkspace_data.parkspace_info_ex(i).parkingspace_width()-(terminal_id+2)*TERMINAL_SPACING )/MEDIUM_CAR_SPEED+DOWNSTAIRS_SPORTS_TIME;
|
|
|
+ float t_min=abs( (t_parkspace_id%15 == 0?15:t_parkspace_id%15)*all_big_parkspace_data.parkspace_info_ex(i).parkingspace_width()-(terminal_id+2)*TERMINAL_SPACING )/MEDIUM_CAR_SPEED+DOWNSTAIRS_SPORTS_TIME;
|
|
|
+
|
|
|
if ( time_min == 0 )
|
|
|
{
|
|
|
time_min=t_min;
|
|
@@ -477,13 +505,17 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB1(message::P
|
|
|
parkingspace_index_id=i;
|
|
|
}
|
|
|
}
|
|
|
+ std::cout << " ------left-------" << std::endl;
|
|
|
+ std::cout << " time = " << t_min ;
|
|
|
+ std::cout << " time_min = " << time_min;
|
|
|
+ std::cout << " t_parkspace_id = " << t_parkspace_id << std::endl<< std::endl<< std::endl;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
|
float time=(terminal_id+2)*TERMINAL_SPACING/MEDIUM_CAR_SPEED + DOWNSTAIRS_SPORTS_TIME +
|
|
|
(all_big_parkspace_data.parkspace_info_ex(i).parkingspace_floor_id()-2)*all_big_parkspace_data.parkspace_info_ex(i).parkingspace_height()/THE_ELEVATOR_SPEED + ELEVATOR_MOVEMENT_TIME +
|
|
|
- all_big_parkspace_data.parkspace_info_ex(i).parkingspace_index_id()%15*all_big_parkspace_data.parkspace_info_ex(i).parkingspace_width()/MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
|
|
|
+ (t_parkspace_id % 15==0?15:t_parkspace_id % 15)*all_big_parkspace_data.parkspace_info_ex(i).parkingspace_width()/MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
|
|
|
if ( time_min == 0 )
|
|
|
{
|
|
|
time_min=time;
|
|
@@ -498,6 +530,10 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB1(message::P
|
|
|
parkingspace_index_id=i;
|
|
|
}
|
|
|
}
|
|
|
+ std::cout << " ------left-------" << std::endl;
|
|
|
+ std::cout << " time = " << time ;
|
|
|
+ std::cout << " time_min = " << time_min;
|
|
|
+ std::cout << " t_parkspace_id = " << t_parkspace_id << std::endl<< std::endl<< std::endl;
|
|
|
}
|
|
|
}
|
|
|
++i;
|
|
@@ -549,15 +585,15 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB2(message::P
|
|
|
int i = 0;
|
|
|
while (i < all_min_parkspace_data.parkspace_info_ex_size())
|
|
|
{
|
|
|
- int room_id=all_min_parkspace_data.parkspace_info_ex(i).parkingspace_index_id();
|
|
|
+ int t_parkspace_id=all_min_parkspace_data.parkspace_info_ex(i).parkingspace_index_id();
|
|
|
//筛选出小型车位的中间部分(第一优先级)的空车位
|
|
|
- if (room_id % 15 >= 4 && room_id % 15 <= 12
|
|
|
+ if (t_parkspace_id % 15 >= 4 && t_parkspace_id % 15 <= 12
|
|
|
&& all_min_parkspace_data.parkspace_info_ex(i).parkingspace_status() == message::Parkspace_status::eParkspace_empty)
|
|
|
{
|
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
|
float time = (6-terminal_id+2) * TERMINAL_SPACING / MEDIUM_CAR_SPEED + DOWNSTAIRS_SPORTS_TIME +
|
|
|
(all_min_parkspace_data.parkspace_info_ex(i).parkingspace_floor_id() - 2) *all_min_parkspace_data.parkspace_info_ex(i).parkingspace_height() /THE_ELEVATOR_SPEED +ELEVATOR_MOVEMENT_TIME +
|
|
|
- ( (15-all_min_parkspace_data.parkspace_info_ex(i).parkingspace_index_id() % 15)==15?0:(15-all_min_parkspace_data.parkspace_info_ex(i).parkingspace_index_id() % 15) ) *all_min_parkspace_data.parkspace_info_ex(i).parkingspace_width() / MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
|
|
|
+ ( 15-t_parkspace_id % 15 ) *all_min_parkspace_data.parkspace_info_ex(i).parkingspace_width() / MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
|
|
|
if (time_min == 0)
|
|
|
{
|
|
|
time_min = time;
|
|
@@ -571,6 +607,10 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB2(message::P
|
|
|
parkingspace_index_id=i;
|
|
|
}
|
|
|
}
|
|
|
+ std::cout << " ------right-------" << std::endl;
|
|
|
+ std::cout << " time = " << time ;
|
|
|
+ std::cout << " time_min = " << time_min;
|
|
|
+ std::cout << " t_parkspace_id = " << t_parkspace_id << std::endl<< std::endl<< std::endl;
|
|
|
}
|
|
|
++i;
|
|
|
}
|
|
@@ -589,16 +629,16 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB2(message::P
|
|
|
int i = 0;
|
|
|
while (i < all_min_parkspace_data.parkspace_info_ex_size())
|
|
|
{
|
|
|
- int room_id=all_min_parkspace_data.parkspace_info_ex(i).parkingspace_index_id();
|
|
|
+ int t_parkspace_id=all_min_parkspace_data.parkspace_info_ex(i).parkingspace_index_id();
|
|
|
|
|
|
//筛选出一号车库的小型车位的中间部分(第一优先级)的空车位
|
|
|
- if ((room_id % 15 >= 1 && room_id % 15 <= 3 || room_id % 15 == 13 || room_id % 15 ==14 || room_id % 15 ==0 )
|
|
|
+ if ((t_parkspace_id % 15 >= 1 && t_parkspace_id % 15 <= 3 || t_parkspace_id % 15 == 13 || t_parkspace_id % 15 ==14 || t_parkspace_id % 15 ==0 )
|
|
|
&& all_min_parkspace_data.parkspace_info_ex(i).parkingspace_status() == message::Parkspace_status::eParkspace_empty)
|
|
|
{
|
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
|
float time = (6-terminal_id+2) * TERMINAL_SPACING / MEDIUM_CAR_SPEED + DOWNSTAIRS_SPORTS_TIME +
|
|
|
(all_min_parkspace_data.parkspace_info_ex(i).parkingspace_floor_id() - 2) *all_min_parkspace_data.parkspace_info_ex(i).parkingspace_height() /THE_ELEVATOR_SPEED +ELEVATOR_MOVEMENT_TIME +
|
|
|
- ( (15-all_min_parkspace_data.parkspace_info_ex(i).parkingspace_index_id() % 15)==15?0:(15-all_min_parkspace_data.parkspace_info_ex(i).parkingspace_index_id() % 15) ) *all_min_parkspace_data.parkspace_info_ex(i).parkingspace_width() / MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
|
|
|
+ ( (15-t_parkspace_id % 15)==15?0:(15-t_parkspace_id % 15) ) *all_min_parkspace_data.parkspace_info_ex(i).parkingspace_width() / MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
|
|
|
if (time_min == 0)
|
|
|
{
|
|
|
time_min = time;
|
|
@@ -612,6 +652,10 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB2(message::P
|
|
|
parkingspace_index_id = i;
|
|
|
}
|
|
|
}
|
|
|
+ std::cout << " ------right-------" << std::endl;
|
|
|
+ std::cout << " time = " << time ;
|
|
|
+ std::cout << " time_min = " << time_min;
|
|
|
+ std::cout << " t_parkspace_id = " << t_parkspace_id << std::endl<< std::endl<< std::endl;
|
|
|
}
|
|
|
++i;
|
|
|
}
|
|
@@ -639,16 +683,16 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB2(message::P
|
|
|
int i=0;
|
|
|
while(i<all_mid_parkspace_data.parkspace_info_ex_size())
|
|
|
{
|
|
|
- int room_id=all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_index_id();
|
|
|
+ int t_parkspace_id=all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_index_id();
|
|
|
|
|
|
//如果是六楼的中型车位的中间部分(第一优先级)
|
|
|
- if ( room_id >= 64 && room_id <= 72
|
|
|
+ if ( t_parkspace_id >= 64 && t_parkspace_id <= 72
|
|
|
&& all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_status() == message::Parkspace_status::eParkspace_empty )
|
|
|
{
|
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
|
float time=(6-terminal_id+2)*TERMINAL_SPACING/MEDIUM_CAR_SPEED + DOWNSTAIRS_SPORTS_TIME +
|
|
|
(all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_floor_id()-2)*all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_height()/THE_ELEVATOR_SPEED + ELEVATOR_MOVEMENT_TIME +
|
|
|
- ( ((15-all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_index_id()%15) ==15?0:(15-all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_index_id()%15)) )*all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_width()/MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
|
|
|
+ ( 15-t_parkspace_id % 15 )*all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_width()/MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
|
|
|
if ( time_min == 0 )
|
|
|
{
|
|
|
time_min=time;
|
|
@@ -663,6 +707,10 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB2(message::P
|
|
|
parkingspace_index_id=i;
|
|
|
}
|
|
|
}
|
|
|
+ std::cout << " ------right-------" << std::endl;
|
|
|
+ std::cout << " time = " << time;
|
|
|
+ std::cout << " time_min = " << time_min;
|
|
|
+ std::cout << " t_parkspace_id = " << t_parkspace_id << std::endl<< std::endl<< std::endl;
|
|
|
}
|
|
|
++i;
|
|
|
}
|
|
@@ -681,16 +729,16 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB2(message::P
|
|
|
int i=0;
|
|
|
while(i<all_mid_parkspace_data.parkspace_info_ex_size())
|
|
|
{
|
|
|
- int room_id=all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_index_id();
|
|
|
+ int t_parkspace_id=all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_index_id();
|
|
|
|
|
|
//如果是六楼的中型车位的侧边(第二优先级)
|
|
|
- if ( (room_id >=61 && room_id <= 63 || room_id % 15 == 13 || room_id % 15 ==14 || room_id % 15 ==0 )
|
|
|
+ if ( (t_parkspace_id >=61 && t_parkspace_id <= 63 || t_parkspace_id % 15 == 13 || t_parkspace_id % 15 ==14 || t_parkspace_id % 15 ==0 )
|
|
|
&& all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_status() == message::Parkspace_status::eParkspace_empty )
|
|
|
{
|
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
|
float time=(6-terminal_id+2)*TERMINAL_SPACING/MEDIUM_CAR_SPEED + DOWNSTAIRS_SPORTS_TIME +
|
|
|
(all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_floor_id()-2)*all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_height()/THE_ELEVATOR_SPEED + ELEVATOR_MOVEMENT_TIME +
|
|
|
- ( ((15-all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_index_id()%15) ==15?0:(15-all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_index_id()%15)) )*all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_width()/MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
|
|
|
+ ( (15-t_parkspace_id % 15) ==15?0:(15-t_parkspace_id % 15))*all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_width()/MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
|
|
|
if ( time_min == 0 )
|
|
|
{
|
|
|
time_min=time;
|
|
@@ -705,6 +753,10 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB2(message::P
|
|
|
parkingspace_index_id=i;
|
|
|
}
|
|
|
}
|
|
|
+ std::cout << " ------right-------" << std::endl;
|
|
|
+ std::cout << " time = " << time;
|
|
|
+ std::cout << " time_min = " << time_min;
|
|
|
+ std::cout << " t_parkspace_id = " << t_parkspace_id << std::endl<< std::endl<< std::endl;
|
|
|
}
|
|
|
++i;
|
|
|
}
|
|
@@ -732,17 +784,17 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB2(message::P
|
|
|
int i=0;
|
|
|
while(i<all_big_parkspace_data.parkspace_info_ex_size())
|
|
|
{
|
|
|
- int room_id=all_big_parkspace_data.parkspace_info_ex(i).parkingspace_index_id();
|
|
|
+ int t_parkspace_id=all_big_parkspace_data.parkspace_info_ex(i).parkingspace_index_id();
|
|
|
|
|
|
//筛选出大型车位的靠近电梯的右侧三排(第二优先级)的空车位
|
|
|
- if ( ( (room_id %15 >= 1 && room_id %15 <= 3) || (room_id>=34 && room_id<=42) || room_id % 15 == 13 || room_id % 15 ==14 || room_id % 15 ==0 )
|
|
|
+ if ( ( (t_parkspace_id %15 >= 1 && t_parkspace_id %15 <= 3) || (t_parkspace_id>=34 && t_parkspace_id<=42) || t_parkspace_id % 15 == 13 || t_parkspace_id % 15 ==14 || t_parkspace_id % 15 ==0 )
|
|
|
&& all_big_parkspace_data.parkspace_info_ex(i).parkingspace_status() == message::Parkspace_status::eParkspace_empty )
|
|
|
{
|
|
|
//如果是二楼车 则特殊处理
|
|
|
if ( all_big_parkspace_data.parkspace_info_ex(i).parkingspace_floor_id() == 2 )
|
|
|
{
|
|
|
// 二楼用时=| 目标车位到电梯的距离 - 终端到电梯的距离 | / 中跑车速度
|
|
|
- float t_min=abs( ((15-room_id%15)==15?0:(15-room_id%15))*all_big_parkspace_data.parkspace_info_ex(i).parkingspace_width()-(6-terminal_id+2)*TERMINAL_SPACING )/MEDIUM_CAR_SPEED+DOWNSTAIRS_SPORTS_TIME;
|
|
|
+ float t_min=abs( (t_parkspace_id%15==0?15:t_parkspace_id%15)*all_big_parkspace_data.parkspace_info_ex(i).parkingspace_width()-(terminal_id+2)*TERMINAL_SPACING )/MEDIUM_CAR_SPEED+DOWNSTAIRS_SPORTS_TIME;
|
|
|
if ( time_min == 0 )
|
|
|
{
|
|
|
time_min=t_min;
|
|
@@ -756,13 +808,17 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB2(message::P
|
|
|
parkingspace_index_id=i;
|
|
|
}
|
|
|
}
|
|
|
+ std::cout << " ------right-------" << std::endl;
|
|
|
+ std::cout << " time = " << t_min;
|
|
|
+ std::cout << " time_min = " << time_min;
|
|
|
+ std::cout << " t_parkspace_id = " << t_parkspace_id << std::endl<< std::endl<< std::endl;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//用时=目标终端到电梯口的距离/中跑车速度+(目标车位楼层-2)*楼层高度/电梯速度+电梯口到目标车位的距离/中跑车速度
|
|
|
float time=(6-terminal_id+2)*TERMINAL_SPACING/MEDIUM_CAR_SPEED + DOWNSTAIRS_SPORTS_TIME +
|
|
|
(all_big_parkspace_data.parkspace_info_ex(i).parkingspace_floor_id()-2)*all_big_parkspace_data.parkspace_info_ex(i).parkingspace_height()/THE_ELEVATOR_SPEED + ELEVATOR_MOVEMENT_TIME +
|
|
|
- ( (15-all_big_parkspace_data.parkspace_info_ex(i).parkingspace_index_id() % 15)==15?0:(15-all_big_parkspace_data.parkspace_info_ex(i).parkingspace_index_id() % 15) )*all_big_parkspace_data.parkspace_info_ex(i).parkingspace_width()/MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
|
|
|
+ ( (15-t_parkspace_id % 15)==15?0:(15-t_parkspace_id % 15) )*all_big_parkspace_data.parkspace_info_ex(i).parkingspace_width()/MEDIUM_CAR_SPEED + UPSTAIRS_SPORTS_TIME;
|
|
|
if ( time_min == 0 )
|
|
|
{
|
|
|
time_min=time;
|
|
@@ -777,6 +833,10 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB2(message::P
|
|
|
parkingspace_index_id=i;
|
|
|
}
|
|
|
}
|
|
|
+ std::cout << " ------right-------" << std::endl;
|
|
|
+ std::cout << " time = " << time ;
|
|
|
+ std::cout << " time_min = " << time_min;
|
|
|
+ std::cout << " t_parkspace_id = " << t_parkspace_id << std::endl<< std::endl<< std::endl;
|
|
|
}
|
|
|
}
|
|
|
++i;
|
|
@@ -825,13 +885,13 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB3(message::P
|
|
|
while (i < all_mid_parkspace_data.parkspace_info_ex_size())
|
|
|
{
|
|
|
//筛选中型车位缓冲区
|
|
|
- int room_id=all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_index_id();
|
|
|
- if ( room_id >= 19 && room_id <= 27
|
|
|
+ int t_parkspace_id=all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_index_id();
|
|
|
+ if ( t_parkspace_id >= 19 && t_parkspace_id <= 27
|
|
|
&& all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_status() == message::eParkspace_empty)
|
|
|
{
|
|
|
//只需计算端口到车位的距离
|
|
|
// 三楼中型用时=| 目标车位到电梯的距离 - 终端到电梯的距离 | / 中跑车速度
|
|
|
- float t_min=abs( room_id%15*all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_width()-(terminal_id+2)*TERMINAL_SPACING )/MEDIUM_CAR_SPEED+DOWNSTAIRS_SPORTS_TIME;
|
|
|
+ float t_min=abs( t_parkspace_id%15*all_mid_parkspace_data.parkspace_info_ex(i).parkingspace_width()-(terminal_id+2)*TERMINAL_SPACING )/MEDIUM_CAR_SPEED+DOWNSTAIRS_SPORTS_TIME;
|
|
|
if ( time_min == 0 )
|
|
|
{
|
|
|
time_min=t_min;
|
|
@@ -870,13 +930,13 @@ Error_manager Parkspace_manager::query_the_optimal_parkspace_serverB3(message::P
|
|
|
while (i < all_big_parkspace_data.parkspace_info_ex_size())
|
|
|
{
|
|
|
//筛选中型车位缓冲区
|
|
|
- int room_id=all_big_parkspace_data.parkspace_info_ex(i).parkingspace_index_id();
|
|
|
- if ( room_id >= 4 && room_id <= 12
|
|
|
+ int t_parkspace_id=all_big_parkspace_data.parkspace_info_ex(i).parkingspace_index_id();
|
|
|
+ if ( t_parkspace_id >= 4 && t_parkspace_id <= 12
|
|
|
&& all_big_parkspace_data.parkspace_info_ex(i).parkingspace_status() == message::eParkspace_empty)
|
|
|
{
|
|
|
//只需计算端口到车位的距离
|
|
|
// 二楼中型用时=| 目标车位到电梯的距离 - 终端到电梯的距离 | / 中跑车速度
|
|
|
- float t_min=abs( room_id%15*all_big_parkspace_data.parkspace_info_ex(i).parkingspace_width()-(terminal_id+2)*TERMINAL_SPACING )/MEDIUM_CAR_SPEED+DOWNSTAIRS_SPORTS_TIME;
|
|
|
+ float t_min=abs( t_parkspace_id%15*all_big_parkspace_data.parkspace_info_ex(i).parkingspace_width()-(terminal_id+2)*TERMINAL_SPACING )/MEDIUM_CAR_SPEED+DOWNSTAIRS_SPORTS_TIME;
|
|
|
if ( time_min == 0 )
|
|
|
{
|
|
|
time_min=t_min;
|