58 (errcode(ERRCODE_INTERNAL_ERROR),
59 errmsg(
"Illegal value in parameter: factor"),
60 errhint(
"Value found: %f <= 0", factor)));
62 (*result_tuples) = NULL;
67 elog(ERROR,
"Illegal value in parameter: max_cycles");
69 (*result_tuples) = NULL;
73 if (initial_solution_id < 0 || initial_solution_id > 6) {
74 elog(ERROR,
"Illegal value in parameter: initial");
76 (*result_tuples) = NULL;
84 size_t total_pd_orders = 0;
86 &pd_orders_arr, &total_pd_orders);
90 size_t total_vehicles = 0;
92 &vehicles_arr, &total_vehicles);
93 PGR_DBG(
"total vehicles %ld", total_vehicles);
96 for (
size_t i = 0; i < total_pd_orders; i++) {
97 PGR_DBG(
"%ld %f pick %f %f %ld - " 98 "%f %f %f deliver %f %f %ld - %f %f %f ",
100 pd_orders_arr[i].demand,
102 pd_orders_arr[i].pick_x,
103 pd_orders_arr[i].pick_y,
104 pd_orders_arr[i].pick_node_id,
106 pd_orders_arr[i].pick_open_t,
107 pd_orders_arr[i].pick_close_t,
108 pd_orders_arr[i].pick_service_t,
110 pd_orders_arr[i].deliver_x,
111 pd_orders_arr[i].deliver_y,
112 pd_orders_arr[i].deliver_node_id,
114 pd_orders_arr[i].deliver_open_t,
115 pd_orders_arr[i].deliver_close_t,
116 pd_orders_arr[i].deliver_service_t);
119 for (
size_t i = 0; i < total_vehicles; i++) {
120 PGR_DBG(
"%ld %f %f / %ld %f %f %f %f %f / %ld %f %f %f %f %f / %ld ",
122 vehicles_arr[i].capacity,
123 vehicles_arr[i].speed,
125 vehicles_arr[i].start_node_id,
126 vehicles_arr[i].start_x,
127 vehicles_arr[i].start_y,
128 vehicles_arr[i].start_open_t,
129 vehicles_arr[i].start_close_t,
130 vehicles_arr[i].start_service_t,
132 vehicles_arr[i].end_node_id,
133 vehicles_arr[i].end_x,
134 vehicles_arr[i].end_y,
135 vehicles_arr[i].end_open_t,
136 vehicles_arr[i].end_close_t,
137 vehicles_arr[i].end_service_t,
139 vehicles_arr[i].cant_v);
144 size_t total_cells = 0;
148 if (total_pd_orders == 0 || total_vehicles == 0 || total_cells == 0) {
150 (*result_tuples) = NULL;
154 PGR_DBG(
"Total %ld orders in query:", total_pd_orders);
155 PGR_DBG(
"Total %ld vehicles in query:", total_vehicles);
156 PGR_DBG(
"Total %ld matrix cells in query:", total_cells);
159 PGR_DBG(
"Starting processing");
160 clock_t start_t = clock();
161 char *log_msg = NULL;
162 char *notice_msg = NULL;
163 char *err_msg = NULL;
166 pd_orders_arr, total_pd_orders,
167 vehicles_arr, total_vehicles,
168 matrix_cells_arr, total_cells,
181 time_msg(
"pgr_pickDeliver", start_t, clock());
183 if (err_msg && (*result_tuples)) {
184 pfree(*result_tuples);
186 (*result_tuples) = NULL;
194 if (log_msg) pfree(log_msg);
195 if (notice_msg) pfree(notice_msg);
196 if (err_msg) pfree(err_msg);
197 if (pd_orders_arr) pfree(pd_orders_arr);
198 if (vehicles_arr) pfree(vehicles_arr);
199 if (matrix_cells_arr) pfree(matrix_cells_arr);
void time_msg(char *msg, clock_t start_t, clock_t end_t)
void pgr_global_report(char *log, char *notice, char *err)
notice & error
void pgr_SPI_finish(void)
void do_pgr_pickDeliver(PickDeliveryOrders_t customers_arr[], size_t total_customers, Vehicle_t *vehicles_arr, size_t total_vehicles, Matrix_cell_t *matrix_cells_arr, size_t total_cells, double factor, int max_cycles, int initial_solution_id, General_vehicle_orders_t **return_tuples, size_t *return_count, char **log_msg, char **notice_msg, char **err_msg)
void pgr_SPI_connect(void)