示例#1
0
 def verify_problem_answer(self, answer: models.ProblemAnswer):
     ans = decode_qp(
         msg=dict(answer=answer.dict(), type=self.problem_type.value))
     var = set(chain(*self.quadratic)) | self.linear.keys()
     self.assertEqual(set(ans['active_variables']), var)
     self.assertEqual(len(ans['energies']), len(ans['solutions']))
     self.assertEqual(sum(ans['num_occurrences']), self.params['num_reads'])
    def test_qp_response_decoding(self):
        res = decode_qp(copy.deepcopy(self.res_msg))

        self.assertEqual(res.get('format'), 'qp')
        self.assertEqual(res.get('num_variables'), self.res_num_variables)
        self.assertEqual(res.get('active_variables'), self.res_active_variables)
        self.assertEqual(res.get('solutions'), self.res_solutions)
        self.assertEqual(res.get('energies'), self.res_energies)
        self.assertEqual(res.get('num_occurrences'), self.res_num_occurrences)
    def _decode(self):
        """Choose the right decoding method based on format and environment."""

        if self._message['type'] not in ['qubo', 'ising']:
            raise ValueError('Unknown problem format used.')

        # If format is set, it must be qp
        if self._message.get('answer', {}).get('format') != 'qp':
            raise ValueError('Data format returned by server not understood.')

        # prefer numpy decoding, but fallback to python
        # TODO: we should really be explicit about numpy usage
        start = time.time()
        if _numpy:
            self._result = decode_qp_numpy(self._message,
                                           return_matrix=self.return_matrix)
        else:
            self._result = decode_qp(self._message)
        self.parse_time = time.time() - start

        self._alias_result()
        return self._result
示例#4
0
 def _decode_qp(self, msg):
     if _numpy:
         return decode_qp_numpy(msg, return_matrix=self.return_matrix)
     else:
         return decode_qp(msg)
 def test_offset_present_in_answer(self):
     res = decode_qp(copy.deepcopy(self.res_msg))
     self.assertEqual(res.get('offset'), self.res_offset)