24 #if defined(__MINGW32__) || defined(_MSC_VER)
36 #define PGR_LOGGER_LOC
37 #define PGR_LOGGER_FILE "/tmp/vrp-debug.log"
38 #include "../../common/src/pgr_logger.h"
44 PGR_LOGF(
"%s: %d\n",
"Depot ID",
id);
45 for (i = 0; i < order_count; i++) {
46 int id = orders[i].
id;
47 PGR_LOGF(
"%s: %d\n",
"Order ID",
id);
102 for (i = 0; i < vehicle_count; i++) {
105 int id = vehicles[i].
id;
119 for (i = 0; i < cost_count; i++) {
120 int fromId = costmatrix[i].
src_id;
121 int toId = costmatrix[i].
dest_id;
127 if (fromId == depotId)
129 else if (toId == depotId)
144 std::string strError;
147 loadOrders(orders, static_cast<int>(order_count), depot_id);
149 loadVehicles(vehicles, static_cast<int>(vehicle_count));
150 PGR_LOG(
"After load vehicles");
152 PGR_LOG(
"After load distance matrix");
156 catch(std::exception& e) {
157 *err_msg = (
char *) e.what();
161 *err_msg = (
char *)
"Caught unknown exception!";
176 for (
size_t i = 0; i < totalRoute; i++) {
180 *result_count = totRows;
182 for (
size_t i = 0; i < totalRoute; i++) {
183 ctour = solution.
getTour(static_cast<int>(i));
185 auto totalOrder = vecOrder.size();
189 (*results)[cnt].order_pos = 0;
191 (*results)[cnt].arrival_time = -1;
196 for (
size_t j = 0; j < totalOrder; j++) {
197 (*results)[cnt].order_id = vecOrder[j];
198 (*results)[cnt].order_pos =
static_cast<int>(j) + 1;
200 (*results)[cnt].depart_time = ctour.
getStartTime(static_cast<int>(j) + 1);
207 (*results)[cnt].order_pos =
static_cast<int>(totalOrder) + 1;
209 (*results)[cnt].arrival_time = ctour.
getStartTime(static_cast<int>(totalOrder) + 1);
210 (*results)[cnt].depart_time = -1;
214 catch(std::exception& e) {
215 *err_msg = (
char *) e.what();
219 *err_msg = (
char *)
"Caught unknown exception!";
int getStartTime(int pos)
std::vector< CTourInfo > getTourInfoVector()
void setOpenTime(int openTime)
CTourInfo & getTour(int pos)
bool getSolution(CSolutionInfo &solution, std::string &strError)
void setServiceTime(int serviceTime)
void setCloseTime(int closeTime)
void setOrderUnit(int orderUnit)
void setOpenTime(int openTime)
bool solveVRP(std::string &strError)
bool addOrder(COrderInfo orderInfo)
void setCloseTime(int closeTime)
void loadDistanceMatrix(vrp_cost_element_t *costmatrix, int cost_count, int depotId)
size_t getServedOrderCount()
bool addVehicle(CVehicleInfo vehicleInfo)
int find_vrp_solution(vrp_vehicles_t *vehicles, size_t vehicle_count, vrp_orders_t *orders, size_t order_count, vrp_cost_element_t *costmatrix, size_t cost_count, int depot_id, vrp_result_element_t **results, size_t *result_count, char **err_msg)
void setDepotLocation(Point location)
bool addDepot(CDepotInfo depotInfo)
std::vector< int > getOrderVector()
bool addOrderToOrderCost(int firstOrder, int secondOrder, CostPack cost)
bool addOrderToDepotCost(int depotId, int orderId, CostPack cost)
void setOrderId(int orderId)
void setCapacity(int capacity)
int getServiceTime(int order_id)
void setOrderLocation(Point location)
bool addDepotToOrderCost(int depotId, int orderId, CostPack cost)
void setCostPerKM(double cost)
void loadVehicles(vrp_vehicles_t *vehicles, int vehicle_count)
#define PGR_LOGF(format,...)
void loadOrders(vrp_orders_t *orders, int order_count, int depotId)