test_Ansys.cpp 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. #include <gtest/gtest.h>
  2. #include <json.hpp>
  3. #include <httplib.h>
  4. //#define private public
  5. #include <math.h>
  6. #include <thread>
  7. /*
  8. using namespace mdd;
  9. TEST(ModuleHTTP, test_ansys_sql_server) {
  10. std::shared_ptr<ModuleSQL> sql = std::make_shared<ModuleSQL>("../../../lib/test/db/materials.db");
  11. std::shared_ptr<ModuleHTTP> http = std::make_shared<ModuleHTTP>("", "localhost", 8888);//../../../lib/test/server/server-ansys.py
  12. auto sql_inputs = sql->getInputIDs();
  13. auto sql_outputs = sql->getOutputIDs();
  14. auto http_inputs = http->getInputIDs();
  15. auto http_outputs = http->getOutputIDs();
  16. sql->getInput(sql_inputs[0])->setValue() = { 1 };
  17. //test http
  18. std::cout << "http-TEST" << std::endl;
  19. for (size_t i = 0; i < http_inputs.size(); i++)
  20. {
  21. std::cout << http->getInput(http_inputs[i])->getValue()[0] << std::endl;
  22. }
  23. for (size_t i = 2; i < sql_outputs.size(); i++)//0: ID 1: Name
  24. {
  25. http->getInput(http_inputs[i - 2])->connect(sql->getOutput(sql_outputs[i]));
  26. }
  27. http->getInput(http_inputs.back())->setOptimizability(true);
  28. limits limit;
  29. limit.min = { 0, 0, 0, 0, 0, 0 };
  30. limit.max = { 90, 90, 90, 90, 90, 90 };
  31. limit.rule = "val[0] != val[5] || val[1] != val[4] || val[2] != val[3]";
  32. http->getInput(http_inputs.back())->setLimits() = limit;
  33. //http->getInput(http_inputs.back())->setValue().clear();
  34. http->getInput(http_inputs.back())->setValue() = { 90,90,0,90,0,90 };
  35. http->getOutput(http_outputs[3])->setOptimizability(true);
  36. sql->update();
  37. //test SQL
  38. std::cout << "SQL-TEST" << std::endl;
  39. for (size_t i = 2; i < sql_outputs.size(); i++)
  40. {
  41. std::cout<< sql->getOutput(sql_outputs[i])->getValue()[0] <<std::endl;
  42. }
  43. http->update();
  44. EXPECT_FLOAT_EQ(http->getOutput(http_outputs[3])->getValue()[0], 0.31204228291286723);
  45. }
  46. TEST(ModuleHTTP, test_configurations) {
  47. std::shared_ptr<ModuleSQL> sql = std::make_shared<ModuleSQL>("../../../lib/test/db/materials.db");
  48. std::shared_ptr<ModuleHTTP> http = std::make_shared<ModuleHTTP>("", "localhost", 8888);//../../../lib/test/server/server-ansys.py
  49. auto sql_inputs = sql->getInputIDs();
  50. auto sql_outputs = sql->getOutputIDs();
  51. auto http_inputs = http->getInputIDs();
  52. auto http_outputs = http->getOutputIDs();
  53. sql->getInput(sql_inputs[0])->setValue() = { 1 };
  54. for (size_t i = 2; i < sql_outputs.size(); i++)//0: ID 1: Name
  55. {
  56. http->getInput(http_inputs[i - 2])->connect(sql->getOutput(sql_outputs[i]));
  57. }
  58. http->getInput(http_inputs.back())->setOptimizability(true);
  59. limits limit;
  60. limit.min = { 0, 0, 0, 0, 0, 0 };
  61. limit.max = { 90, 90, 90, 90, 90, 90 };
  62. limit.rule = "val[0] != val[5] or val[1] != val[4] or val[2] != val[3]";
  63. http->getInput(http_inputs.back())->setLimits() = limit;
  64. http->getOutput(http_outputs[3])->setOptimizability(true);
  65. std::shared_ptr<ProcessorStandard> processor = std::make_shared<ProcessorStandard>();;
  66. processor->addModule(sql);
  67. processor->addModule(http);
  68. auto mods = processor->getModuleIDs();
  69. OptimizerEvolutionary optimizer(processor, 3, 20, 0.13, 5);
  70. optimizer.setEvaluation("out0");
  71. //auto res = optimizer.update();
  72. OptimizerEvolutionary::Individual ind;
  73. ind.dna = { { 0,90,90,90,90,90 } };
  74. std::cout << "{ 0,90,90,90,90,90 }: " << optimizer.evaluateFitness(ind) << std::endl;
  75. ind.dna = { { 90,90,90,90,90,0 } };
  76. std::cout << "{ 90,90,90,90,90,0 }: " << optimizer.evaluateFitness(ind) << std::endl;
  77. ind.dna = { { 90,0,0,0,0,0 } };
  78. std::cout << "{ 90,0,0,0,0,0 }: " << optimizer.evaluateFitness(ind) << std::endl;
  79. ind.dna = { { 0,0,0,0,0,90 } };
  80. std::cout << "{ 0,0,0,0,0,90 }: " << optimizer.evaluateFitness(ind) << std::endl;
  81. ind.dna = { { 0,0,0,0,0,0 } };
  82. std::cout << "{ 0,0,0,0,0,0 }: " << optimizer.evaluateFitness(ind) << std::endl;
  83. ind.dna = { { 90,90,90,90,90,90 } };
  84. std::cout << "{ 90,90,90,90,90,90 }: " << optimizer.evaluateFitness(ind) << std::endl;
  85. ind.dna = { { 0,0,90,90,90,90 } };
  86. std::cout << "{ 0,0,90,90,90,90 }: " << optimizer.evaluateFitness(ind) << std::endl;
  87. EXPECT_TRUE(ind.fitness <= 100.0);
  88. }
  89. TEST(ModuleHTTP, test_ansys_server) {
  90. std::shared_ptr<ModuleSQL> sql = std::make_shared<ModuleSQL>("../../../lib/test/db/materials.db");
  91. std::shared_ptr<ModuleHTTP> http = std::make_shared<ModuleHTTP>("", "localhost", 8888);//../../../lib/test/server/server-ansys.py
  92. auto sql_inputs = sql->getInputIDs();
  93. auto sql_outputs = sql->getOutputIDs();
  94. auto http_inputs = http->getInputIDs();
  95. auto http_outputs = http->getOutputIDs();
  96. sql->getInput(sql_inputs[0])->setValue() = { 1 };
  97. for (size_t i = 2; i < sql_outputs.size(); i++)//0: ID 1: Name
  98. {
  99. http->getInput(http_inputs[i - 2])->connect(sql->getOutput(sql_outputs[i]));
  100. }
  101. http->getInput(http_inputs.back())->setOptimizability(true);
  102. limits limit;
  103. limit.min = { 0, 0, 0, 0, 0, 0 };
  104. limit.max = { 90, 90, 90, 90, 90, 90 };
  105. limit.rule = "val[0] != val[5] or val[1] != val[4] or val[2] != val[3]";
  106. http->getInput(http_inputs.back())->setLimits() = limit;
  107. http->getOutput(http_outputs[3])->setOptimizability(true);
  108. std::shared_ptr<ProcessorStandard> processor = std::make_shared<ProcessorStandard>();;
  109. processor->addModule(sql);
  110. processor->addModule(http);
  111. auto mods = processor->getModuleIDs();
  112. OptimizerEvolutionary optimizer(processor, 3, 20, 0.13, 5);
  113. optimizer.setEvaluation("out0");
  114. auto res = optimizer.update();
  115. std::cout << optimizer.getBest().fitness << std::endl;
  116. std::cout << optimizer.evaluateFitness(optimizer.getBest()) << std::endl;
  117. EXPECT_TRUE(optimizer.getBest().fitness <= 100.0);
  118. }
  119. //*/