Commit b690d169 authored by Nguyen, Thien Minh's avatar Nguyen, Thien Minh
Browse files

Retrieve final adapt ansatz



Need support from xacc adapt algo to add the final circuit to compilation database.

Signed-off-by: default avatarThien Nguyen <nguyentm@ornl.gov>
parent 0cb1ce53
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -49,6 +49,8 @@ AdaptVqeWorkflow::execute(const QuantumSimulationModel &model) {
  auto opt_val = (*buffer)["opt-val"].as<double>();
  auto opt_params = (*buffer)["opt-params"].as<std::vector<double>>();
  auto opt_ansatz = (*buffer)["opt-ansatz"].as<std::vector<int>>();
  auto final_ansatz_name = (*buffer)["final-ansatz"].as<std::string>();
  auto finalCircuit = xacc::getCompiled(final_ansatz_name);

  return {
      {"opt-val", opt_val},
@@ -56,6 +58,7 @@ AdaptVqeWorkflow::execute(const QuantumSimulationModel &model) {
      {"energy", opt_val},
      {"opt-params", opt_params},
      {"opt-ansatz", opt_ansatz},
      {"circuit", finalCircuit}
  };
}
} // namespace qsim
+3 −2
Original line number Diff line number Diff line
@@ -34,16 +34,17 @@ TEST(AdaptVqeWorkflowTester, checkSimple) {

  FermionOperator H_vqe;
  H_vqe.fromString(str);
  std::cout << H_vqe.toString() << "\n";
  // std::cout << H_vqe.toString() << "\n";
  xacc::internal_compiler::qpu = xacc::getAccelerator("qsim");
  auto problemModel = qsim::ModelBuilder::createModel(&H_vqe);
  auto optimizer = createOptimizer("nlopt", {{"nlopt-optimizer", "l-bfgs"}, {"stopval", -1.137}});
  auto workflow = qsim::getWorkflow("adapt", {{"optimizer", optimizer},
                                              {"pool", pool_vqe},
                                              {"n-electrons", nElectrons}});
  set_verbose(true);
  auto result = workflow->execute(problemModel);
  std::cout << "Final energy: " << result.get<double>("energy") << "\n";
  auto final_ansatz = result.getPointerLike<xacc::CompositeInstruction>("circuit");
  std::cout << "HOWDY: \n" << final_ansatz->toString() << "\n";
}

int main(int argc, char **argv) {