RunData.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #pragma once
  2. #include <string>
  3. #include <vector>
  4. #include <fstream>
  5. #include <QPoint>
  6. #include <map>
  7. #include <boost/multiprecision/cpp_int.hpp>
  8. #include <boost/multiprecision/cpp_dec_float.hpp>
  9. #include "GraphView.h"
  10. struct GraphDataPoint;
  11. struct SolutionPointData {
  12. int iteration;
  13. double objectiveFunction;
  14. int particleNumber;
  15. std::vector<bool> bitVec;
  16. };
  17. class RunData
  18. {
  19. public:
  20. std::string name;
  21. std::string information;
  22. std::vector<SolutionPointData> solutionVec;
  23. RunData();
  24. RunData(std::string filePath);
  25. std::vector<GraphDataPoint> bestSolutionPerIteration;
  26. std::vector<GraphDataPoint> averageSolutionPerItertion;
  27. std::vector<GraphDataPoint> minSolutionPerItertion;
  28. std::vector<GraphDataPoint> maxSolutionPerItertion;
  29. std::vector<GraphDataPoint> dotsForDistribution;
  30. std::vector<GraphDataPoint> testForBitField;
  31. std::map<int, std::vector<GraphDataPoint>> particleMap;
  32. private:
  33. bool badFileFlag = false;
  34. std::fstream fileStream;
  35. int actualLine = 0;
  36. void getLine(std::string& bufferString);
  37. void calculateBestAndAverageIter();
  38. void calculateParticleSolution();
  39. void calculateDotsForDistribution();
  40. void generateRandomBitFieldData();
  41. boost::multiprecision::cpp_int binominal(const int n, const int k);
  42. boost::multiprecision::cpp_int positionInPermutation(std::vector<bool>::iterator begin, std::vector<bool>::iterator end, int amountOfSetBits);
  43. };