Skip to content

Commit f9d7bfc

Browse files
committed
gpush.sh
1 parent 5c7e34b commit f9d7bfc

File tree

4 files changed

+16
-180
lines changed

4 files changed

+16
-180
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ src/version/_version.h
66
v[0-9]*
77
ortools
88
build1
9+
gpush.sh
10+
bin_packing.cc
911

1012
# files are ignored on gh-pages
1113
doxy

include/drivers/or_tools/knapsack_driver.h

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Mail: [email protected]
66
77
Function's developer:
88
Copyright (c) 2022 Manas Sivakumar
9-
Mail:
9+
Mail: Manas Sivakumar
1010
1111
------
1212
@@ -39,11 +39,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
3939
# include <stddef.h>
4040
#endif
4141

42-
#include "c_types/vehicle_t.h"
43-
#include "c_types/matrix_cell_t.h"
42+
4443

4544
typedef struct PickDeliveryOrders_t PickDeliveryOrders_t;
46-
typedef struct Solution_rt Solution_rt;
45+
typedef struct Knapsack_rt Knapsack_rt;
4746

4847
#ifdef __cplusplus
4948
extern "C" {
@@ -55,16 +54,11 @@ extern "C" {
5554
bin_capacity INTEGER,
5655
max_cycles INTEGER,
5756
********************************************************/
58-
void do_pgr_pickDeliver(
57+
void do_knapsack(
5958
PickDeliveryOrders_t *pd_orders_arr, size_t total_pd_orders,
60-
Vehicle_t *vehicles_arr, size_t total_vehicles,
61-
Matrix_cell_t *matrix_cells_arr, size_t total_cells,
62-
63-
double factor,
64-
int max_cycles,
65-
int initial_solution_id,
59+
6660

67-
Solution_rt **return_tuples,
61+
Knapsack_rt **return_tuples,
6862
size_t *return_count,
6963

7064
char **log_msg,

src/or_tools/knapsack.c

Lines changed: 6 additions & 166 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
2424
#include "c_common/e_report.h"
2525
#include "c_common/time_msg.h"
2626

27-
27+
#include "c_types/knapsack_rt.h"
2828
#include "drivers/or_tools/knapsack_driver.h"
2929

3030
PGDLLEXPORT Datum
@@ -37,44 +37,10 @@ void
3737
process(
3838
char* weights_sql,
3939
char* values_sql,
40-
char* matrix_sql,
4140
int bin_capacity,
42-
double factor,
43-
int max_cycles,
44-
int initial_solution_id,
45-
46-
Solution_rt **result_tuples,
41+
42+
Knapsack_rt **result_tuples,
4743
size_t *result_count) {
48-
#if 0
49-
if (factor <= 0) {
50-
ereport(ERROR,
51-
(errcode(ERRCODE_INTERNAL_ERROR),
52-
errmsg("Illegal value in parameter: factor"),
53-
errhint("Value found: %f <= 0", factor)));
54-
(*result_count) = 0;
55-
(*result_tuples) = NULL;
56-
return;
57-
}
58-
59-
if (max_cycles < 0) {
60-
ereport(ERROR,
61-
(errcode(ERRCODE_INTERNAL_ERROR),
62-
errmsg("Illegal value in parameter: max_cycles"),
63-
errhint("Value found: %d <= 0", max_cycles)));
64-
(*result_count) = 0;
65-
(*result_tuples) = NULL;
66-
return;
67-
}
68-
69-
if (initial_solution_id < 0 || initial_solution_id > 7) {
70-
ereport(ERROR,
71-
(errcode(ERRCODE_INTERNAL_ERROR),
72-
errmsg("Illegal value in parameter: initial"),
73-
errhint("Value found: %d <= 0", initial_solution_id)));
74-
(*result_count) = 0;
75-
(*result_tuples) = NULL;
76-
return;
77-
}
7844

7945
pgr_SPI_connect();
8046

@@ -97,112 +63,13 @@ process(
9763
return;
9864
}
9965

100-
101-
Vehicle_t *vehicles_arr = NULL;
102-
size_t total_vehicles = 0;
103-
get_vehicles_raw(vehicles_sql,
104-
&vehicles_arr, &total_vehicles,
105-
false);
106-
107-
if (total_vehicles == 0) {
108-
(*result_count) = 0;
109-
(*result_tuples) = NULL;
110-
111-
/* freeing memory before return */
112-
if (pd_orders_arr) {pfree(pd_orders_arr); pd_orders_arr = NULL;}
113-
if (vehicles_arr) {pfree(vehicles_arr); vehicles_arr = NULL;}
114-
115-
pgr_SPI_finish();
116-
ereport(ERROR,
117-
(errcode(ERRCODE_INTERNAL_ERROR),
118-
errmsg("No vehicles found")));
119-
return;
120-
}
121-
122-
PGR_DBG("total orders %ld", total_pd_orders);
123-
for (size_t i = 0; i < total_pd_orders; i++) {
124-
PGR_DBG("%ld %f pick %ld - %ld %ld %ld"
125-
"deliver %ld - %ld %ld %ld ",
126-
pd_orders_arr[i].id,
127-
pd_orders_arr[i].demand,
128-
129-
pd_orders_arr[i].pick_node_id,
130-
131-
pd_orders_arr[i].pick_open_t,
132-
pd_orders_arr[i].pick_close_t,
133-
pd_orders_arr[i].pick_service_t,
134-
135-
pd_orders_arr[i].deliver_node_id,
136-
137-
pd_orders_arr[i].deliver_open_t,
138-
pd_orders_arr[i].deliver_close_t,
139-
pd_orders_arr[i].deliver_service_t);
140-
}
141-
142-
143-
144-
PGR_DBG("total vehicles %ld", total_vehicles);
145-
for (size_t i = 0; i < total_vehicles; i++) {
146-
PGR_DBG("%ld %f %f , start %ld %ld %ld %ld "
147-
"end %ld %ld %ld %ld number %ld ",
148-
vehicles_arr[i].id,
149-
vehicles_arr[i].capacity,
150-
vehicles_arr[i].speed,
151-
152-
vehicles_arr[i].start_node_id,
153-
vehicles_arr[i].start_open_t,
154-
vehicles_arr[i].start_close_t,
155-
vehicles_arr[i].start_service_t,
156-
157-
vehicles_arr[i].end_node_id,
158-
vehicles_arr[i].end_open_t,
159-
vehicles_arr[i].end_close_t,
160-
vehicles_arr[i].end_service_t,
161-
162-
vehicles_arr[i].cant_v);
163-
}
164-
165-
Matrix_cell_t *matrix_cells_arr = NULL;
166-
size_t total_cells = 0;
167-
get_matrixRows_plain(matrix_sql, &matrix_cells_arr, &total_cells);
168-
169-
PGR_DBG("total matrix rows %ld", total_cells);
170-
for (size_t i = 0; i < total_cells; i++) {
171-
PGR_DBG("%ld %ld %f",
172-
matrix_cells_arr[i].from_vid,
173-
matrix_cells_arr[i].to_vid,
174-
matrix_cells_arr[i].cost);
175-
}
176-
177-
if (total_cells == 0) {
178-
(*result_count) = 0;
179-
(*result_tuples) = NULL;
180-
181-
/* freeing memory before return */
182-
if (pd_orders_arr) {pfree(pd_orders_arr); pd_orders_arr = NULL;}
183-
if (vehicles_arr) {pfree(vehicles_arr); vehicles_arr = NULL;}
184-
if (matrix_cells_arr) {pfree(matrix_cells_arr); matrix_cells_arr = NULL;}
185-
186-
ereport(WARNING,
187-
(errcode(ERRCODE_INTERNAL_ERROR),
188-
errmsg("No matrix found")));
189-
pgr_SPI_finish();
190-
return;
191-
}
192-
193-
194-
PGR_DBG("Total %ld orders in query:", total_pd_orders);
195-
PGR_DBG("Total %ld vehicles in query:", total_vehicles);
196-
PGR_DBG("Total %ld matrix cells in query:", total_cells);
197-
198-
19966
PGR_DBG("Starting processing");
20067
clock_t start_t = clock();
20168
char *log_msg = NULL;
20269
char *notice_msg = NULL;
20370
char *err_msg = NULL;
20471

205-
do_pgr_pickDeliver(
72+
do_knapsack(
20673
pd_orders_arr, total_pd_orders,
20774
vehicles_arr, total_vehicles,
20875
matrix_cells_arr, total_cells,
@@ -218,31 +85,7 @@ process(
21885
&notice_msg,
21986
&err_msg);
22087

221-
time_msg("pgr_pickDeliver", start_t, clock());
222-
223-
if (err_msg && (*result_tuples)) {
224-
pfree(*result_tuples);
225-
(*result_count) = 0;
226-
(*result_tuples) = NULL;
227-
}
228-
pgr_global_report(log_msg, notice_msg, err_msg);
229-
/* TODO(dev) remove unused includes */
230-
#include "c_common/orders_input.h"
231-
#include "c_common/vehicles_input.h"
232-
#include "c_common/matrixRows_input.h"
233-
#include "c_types/pickDeliveryOrders_t.h"
234-
#include "drivers/pgr_pickDeliver/pickDeliver_driver.h"
235-
#include "c_types/solution_rt.h"
236-
/* freeing memory before return */
237-
if (log_msg) {pfree(log_msg); log_msg = NULL;}
238-
if (notice_msg) {pfree(notice_msg); notice_msg = NULL;}
239-
if (err_msg) {pfree(err_msg); err_msg = NULL;}
240-
if (pd_orders_arr) {pfree(pd_orders_arr); pd_orders_arr = NULL;}
241-
if (vehicles_arr) {pfree(vehicles_arr); vehicles_arr = NULL;}
242-
if (matrix_cells_arr) {pfree(matrix_cells_arr); matrix_cells_arr = NULL;}
243-
24488
pgr_SPI_finish();
245-
#endif
24689
}
24790

24891

@@ -263,10 +106,7 @@ _vrp_knapsack(PG_FUNCTION_ARGS) {
263106
process(
264107
text_to_cstring(PG_GETARG_TEXT_P(0)),
265108
text_to_cstring(PG_GETARG_TEXT_P(1)),
266-
text_to_cstring(PG_GETARG_TEXT_P(2)),
267-
PG_GETARG_FLOAT8(3),
268-
PG_GETARG_INT32(4),
269-
PG_GETARG_INT32(5),
109+
PG_GETARG_INT32(2),
270110
&result_tuples,
271111
&result_count);
272112

@@ -286,7 +126,7 @@ _vrp_knapsack(PG_FUNCTION_ARGS) {
286126

287127
funcctx = SRF_PERCALL_SETUP();
288128
tuple_desc = funcctx->tuple_desc;
289-
result_tuples = (Solution_rt*) funcctx->user_fctx;
129+
result_tuples = (Knapsack_rt*) funcctx->user_fctx;
290130

291131
if (funcctx->call_cntr < funcctx->max_calls) {
292132
HeapTuple tuple;

src/or_tools/knapsack_driver.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
/*PGR-GNU*****************************************************************
22
File: pickDeliver_driver.cpp
3-
Copyright (c) 2015 pgRouting developers
3+
Copyright (c) 2022 pgRouting developers
44
55
Function's developer:
6-
Copyright (c) 2015 Celia Virginia Vergara Castillo
6+
Copyright (c) 2022 Manas Sivakumar
77
------
88
This program is free software; you can redistribute it and/or modify
99
it under the terms of the GNU General Public License as published by

0 commit comments

Comments
 (0)