CXXFLAGS = -Wall -I/usr/include/cairo $(OPTIMIZE_FLAG) $(PROFILE_FLAG) $(CXXGLPK)
-all: mtp
+all: mtp random-graph
TAGS: *.cc *.h
etags --members -l c++ *.cc *.h
+random-graph: \
+ random-graph.o
+ $(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)
+
mtp: \
mtp.o
$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)
// EXAMPLE: ./mtp ./graph2.txt | dot -T pdf -o- | xpdf -
-// #define VERBOSE
+#define VERBOSE
#include <iostream>
#include <fstream>
Vertex *v, *tv;
scalar_t d;
+#ifdef VERBOSE
+ cout << "find_shortest_path" << endl;
+#endif
+
#ifdef DEBUG
+ scalar_t residual_error = 0.0;
+#endif
for(int n = 0; n < nb_vertices; n++) {
for(Edge *e = vertices[n].root_edge; e; e = e->next) {
if(e->work_length < 0) {
- cerr << "DEBUG error in find_shortest_path: Edge work lengths have to be positive."
- << endl;
- abort();
+#ifdef DEBUG
+ residual_error -= e->work_length;
+#endif
+ e->work_length = 0.0;
}
}
}
+#ifdef DEBUG
+ cout << "DEBUG residual_error " << residual_error << endl;
#endif
for(int v = 0; v < nb_vertices; v++) {
source, sink,
result_edge_occupation);
- dot_print(nb_vertices, nb_edges,
- vertex_from, vertex_to, edge_lengths,
- source, sink,
- result_edge_occupation);
+ // dot_print(nb_vertices, nb_edges,
+ // vertex_from, vertex_to, edge_lengths,
+ // source, sink,
+ // result_edge_occupation);
delete[] result_edge_occupation;
delete[] edge_lengths;
--- /dev/null
+
+////////////////////////////////////////////////////////////////////
+// START_IP_HEADER //
+// //
+// Written by Francois Fleuret //
+// Contact <francois.fleuret@idiap.ch> for comments & bug reports //
+// //
+// END_IP_HEADER //
+////////////////////////////////////////////////////////////////////
+
+#include <iostream>
+#include <fstream>
+#include <cmath>
+#include <stdio.h>
+#include <stdlib.h>
+
+using namespace std;
+
+int main(int argc, char **argv) {
+ int nb_locations = 20;
+ int nb_time_steps = 20;
+
+ int nb_vertices = nb_time_steps * nb_locations + 2;
+ int nb_edges = 2 * nb_locations + (nb_time_steps - 1) * (nb_locations * nb_locations);
+ int source = 0;
+ int sink = nb_vertices - 1;
+
+ cout << nb_vertices << " " << nb_edges << endl;
+ cout << source << " " << sink << endl;
+ cout << endl;
+
+ for(int l = 0; l < nb_locations; l++) {
+ cout << source
+ << " "
+ << l + 1
+ << " "
+ << drand48() * 2 - 1
+ << endl;
+ }
+
+ for(int t = 0; t < nb_time_steps - 1; t++) {
+ for(int l = 0; l < nb_locations; l++) {
+ for(int m = 0; m < nb_locations; m++) {
+ cout << 1 + (t * nb_locations + l)
+ << " "
+ << 1 + ((t+1) * nb_locations + m)
+ << " "
+ << drand48() * 2 - 1
+ << endl;
+ }
+ }
+ }
+
+ for(int l = 0; l < nb_locations; l++) {
+ cout << 1 + ((nb_time_steps-1) * nb_locations + l)
+ << " "
+ << sink
+ << " "
+ << drand48() * 2 - 1
+ << endl;
+ }
+}