test_OptimizerEvolutionary.cpp 896 B

123456789101112131415161718192021222324252627
  1. #include <gtest/gtest.h>
  2. #include <json.hpp>
  3. //#define private public
  4. #include "OptimizerEvolutionary.h"
  5. #include <ModuleMath.h>
  6. #include <ModuleSwitch.h>
  7. using namespace mdd;
  8. TEST(OptimizerEvolutionary, OptimizeSimpleFormula) {
  9. //optimize f(x)=x^2
  10. std::vector<std::string> inputs;
  11. std::shared_ptr<ModuleMath> f1 = std::make_shared<ModuleMath>(MathOperation::MULTIPLY);
  12. OptimizerEvolutionary optimizer(f1, 3);
  13. inputs = f1->getInputIDs();
  14. json limit;
  15. limit["min"] = { -10 };
  16. limit["max"] = { 10 };
  17. limit["step"] = { 1 };
  18. optimizer.addModifier(inputs[0], limit);
  19. optimizer.addModifier(inputs[1], limit);
  20. optimizer.addReader(f1->getOutputIDs()[0]);
  21. optimizer.setEvaluation("out0");
  22. json res = optimizer.update();
  23. //std::cout << res.dump() << std::endl;
  24. EXPECT_EQ(res[0]["value"][0].get<int>()* res[1]["value"][0].get<int>(),-100);
  25. }