#ifndef MISC_H
#define MISC_H
+#include <stdlib.h>
+
// #define VERBOSE
typedef float scalar_t;
#include <iostream>
#include <fstream>
-#include <stdlib.h>
using namespace std;
}
int main(int argc, char **argv) {
- int nb_locations = 1000;
- int nb_time_steps = 1000;
+ int nb_locations = 6;
+ int nb_time_steps = 5;
int motion_amplitude = 1;
Tracker *tracker = new Tracker(nb_time_steps, nb_locations);
cout << endl;
}
+ {
+ ofstream dot("graph.dot");
+ tracker->print_graph_dot(&dot);
+ cout << "Wrote graph.dot." << endl;
+ }
+
delete tracker;
exit(EXIT_SUCCESS);
void MTPGraph::print_dot(ostream *os) {
(*os) << "digraph {" << endl;
- (*os) << " node[shape=circle];" << endl;
+ // (*os) << " node [shape=circle];" << endl;
+ (*os) << " " << _source->id << " [peripheries=2];" << endl;
+ (*os) << " " << _sink->id << " [peripheries=2];" << endl;
for(int k = 0; k < _nb_edges; k++) {
Edge *e = _edges + k;
// (*os) << " " << e->origin_vertex->id << " -> " << e->terminal_vertex->id
// << ";"
// << endl;
if(e->occupied) {
- (*os) << " " << e->origin_vertex->id << " -> " << e->terminal_vertex->id
+ (*os) << " " << e->origin_vertex->id << " -> " << e->terminal_vertex->id
<< " [style=bold,color=black,label=\"" << e->length << "\"];" << endl;
} else {
- (*os) << " " << e->origin_vertex->id << " -> " << e->terminal_vertex->id
+ (*os) << " " << e->origin_vertex->id << " -> " << e->terminal_vertex->id
<< " [color=gray,label=\"" << e->length << "\"];" << endl;
}
}
_nb_locations * 2 +
// The edges from the source to the entrances and from the exists
// to the sink (in every time frames but the first and last)
- (_nb_time_steps - 2) * (nb_exits + nb_entrances) +
+ (_nb_time_steps - 1) * (nb_exits + nb_entrances) +
// The edges for the motions, between every pair of successive
// frames
(_nb_time_steps - 1) * nb_motions +
}
}
- for(int t = 1; t < _nb_time_steps-1; t++) {
+ for(int t = 0; t < _nb_time_steps; t++) {
for(int l = 0; l < _nb_locations; l++) {
- if(_entrances[l]) {
+ if(t > 0 && _entrances[l]) {
node_from[e] = source;
node_to[e] = 1 + (2 * (t + 0) + 0) * _nb_locations + l;
_edge_lengths[e] = 0.0;
e++;
}
- if(_exits[l]) {
+ if(t < _nb_time_steps - 1 && _exits[l]) {
node_from[e] = 1 + (2 * (t + 0) + 1) * _nb_locations + l;
node_to[e] = sink;
_edge_lengths[e] = 0.0;
delete[] node_to;
}
-void Tracker::print_dot_graph(ostream *os) {
+void Tracker::print_graph_dot(ostream *os) {
int e = 0;
for(int t = 0; t < _nb_time_steps; t++) {
for(int l = 0; l < _nb_locations; l++) {
void set_as_exit(int location, int v);
void build_graph();
- void print_dot_graph(ostream *os);
+ void print_graph_dot(ostream *os);
void set_detection_score(int time, int location, scalar_t score);