<div dir="ltr"><div><div><div>Dear Steve,<br></div>I am out of town in village, I will come back to you soon with my thoughts.<br><br></div>Regards<br></div>Roni<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">
On Sun, Apr 13, 2014 at 6:28 AM, Stephen Woodbridge <span dir="ltr"><<a href="mailto:woodbri@swoodbridge.com" target="_blank">woodbri@swoodbridge.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Roni,<br>
<br>
I hope you and your family are doing well.<br>
I am well but have been very busy. I'm between some contracts at the moment and I am looking at the TRSP improvements you did quite a ways back to add the reverse cost and routing from nodes A-B-C-...<br>
<br>
Looking at multi_dijkstra it seems that I should be able to mimic that code based on how you clean up after each route A-B to restart for B-C and create a similar function that computes one to many destinations, A-B, A-C, A-D, etc.<br>

<br>
What do you think?<br>
<br>
So for integrating this code, I probably need to implement a family of additional functions like:<br>
<br>
<br>
Existing functions:<br>
<br>
pgr_trsp(text, integer, integer, boolean, boolean)<br>
-- node to node<br>
<br>
pgr_trsp(text, integer, integer, boolean, boolean, text)<br>
-- node to node with restrictions<br>
<br>
pgr_trsp(text, integer, double precision, integer, double precision, boolean, boolean)<br>
-- edge to edge<br>
<br>
pgr_trsp(text, integer, double precision, integer, double precision, boolean, boolean, text)<br>
-- edge to edge with restrictions<br>
<br>
pgr_trsp(text, integer[], boolean, boolean, text)<br>
-- array of nodes **this gets changed to use new code (1)**<br>
<br>
pgr_trsp(text, integer[], float8[], boolean, boolean, text)<br>
-- array of edges **this gets changed to use new code (2)**<br>
<br>
(1) should plug directly into your code. I currently do this in C by calling your old code multiple times, but it will be more efficient to change this to call multi_dijkstra because we only build the graph once.<br>
<br>
(2) I currently do this in C by making multiple calls to your old code. The multi_dijkstra only accepts nodes, not edges, so I'll look at making a version that can be called by edges. Unless you want to do that :)<br>

<br>
Then I think I would like to add a new argument to (1) and (2) above "boolean onetomany" and if it is true then we compute A-B, A-C, A-D, ... and if it is false it will compute A-B-C-...<br>
<br>
I'll have to think about how to return the results, but that should not be too hard.<br>
<br>
TODO:<br>
<br>
1. create function to support multi_dijkstra with edges<br>
2. create new function onetomany_dijkstra for nodes<br>
3. create new function onetomany_dijkstra for edges<br>
4. update C code wrappers to support the above<br>
5. develop test cases<br>
6. write the documentation<br>
7. check it in<br>
<br>
Ok that is a bunch of work! Maybe I'll start with just getting (1) done so it calls your new code, and write a test case for that. Then tackle the rest.<br>
<br>
Thoughts?<br>
<br>
-Steve<br>
</blockquote></div><br></div>