#include "modelidentifier.h"
#include "genesorter.h"
#include "sortaction.h"
-
-typedef pair<ModelIdentifier::Model,double> modelpair;
-
-struct ScoreCmp {
- template<typename T>
- bool operator()(T s1, T s2){
- return s1.first < s2.first;
- }
-};
+#include "genealgorithms.h"
+#include "model.h"
int main(int argc, char** argv){
//TODO: Identify
ModelIdentifier mi(ann);
- map<ModelIdentifier::Model,double> scores = mi.identify(go);
- priority_queue<pair<double,ModelIdentifier::Model>,vector<pair<double,ModelIdentifier::Model> >, ScoreCmp > pq;
- for (map<ModelIdentifier::Model,double>::iterator m = scores.begin();
- m != scores.end(); ++m){
- if (m->second > 0){
- pq.push(pair<double,ModelIdentifier::Model>(m->second,m->first));
- }
- }
- while (pq.size() > 0){
- cout << "Model: " << mi.modelName(pq.top().second) << " score: " << pq.top().first << endl;
- pq.pop();
- }
+ priority_queue<pair<double,Model> > pq = mi.identify(go);
+ Model model = pq.top().second;
+ //while (pq.size() > 0){
+ cout << "Model: " << model.name() << " score: " << pq.top().first << endl;
+ //pq.pop();
+ //}
+
+ cout << "Distance: " << inversionDistance(go) << endl;
+ //copy(go.begin(), go.end(), ostream_iterator<int>(cout, " "));
+ //cout << endl;
//TODO: Chose a sorter
GeneSorter so;
//TODO: Sort
- GeneSorter::ActionList al = so.sort(go);
+ GeneSorter::ActionList al = so.sort(go,model);
+
+ double score = 0;
+ for (GeneSorter::ActionList::iterator sa = al.begin(); sa != al.end(); ++sa){
+ cout << "Action: " << sa->toString() << " model score: " << model.score(*sa,go) << endl;
+ score += model.score(*sa,go);
+ }
+ cout << "Avg score: " << score / al.size() << endl;
//TODO: Print result
return EXIT_SUCCESS;
}