Beispiel #1
0
    def sample(self, bqm, num_reads=10, flux_biases=[], **kwargs):
        # we are altering the bqm if flux_biases given

        info = dict(problem_id=str(uuid4()))
        label = kwargs.get('label')
        if label is not None:
            info.update(problem_label=label)

        if not flux_biases:
            ss = SimulatedAnnealingSampler().sample(bqm, num_reads=num_reads)
            ss.info.update(info)
            return ss

        new_bqm = bqm.copy()

        for v, fbo in enumerate(flux_biases):
            self.flux_biases_flag = True
            new_bqm.add_variable(v, 1000. * fbo)  # add the bias

        response = SimulatedAnnealingSampler().sample(new_bqm, num_reads=num_reads)

        # recalculate the energies with the old bqm
        return dimod.SampleSet.from_samples_bqm([{v: sample[v] for v in bqm.variables}
                                                 for sample in response.samples()],
                                                bqm, info=info)
Beispiel #2
0
    def sample(self, bqm, num_reads=10, flux_biases=[]):
        # we are altering the bqm
        new_bqm = bqm.copy()

        for v, fbo in enumerate(flux_biases):
            self.flux_biases_flag = True
            new_bqm.add_variable(v, 1000. * fbo)  # add the bias

        response = SimulatedAnnealingSampler().sample(new_bqm,
                                                      num_reads=num_reads)

        energies = [
            bqm.energy(sample) for sample in response.samples(sorted_by=None)
        ]

        return dimod.Response.from_samples(response.samples(sorted_by=None),
                                           {'energy': energies}, {},
                                           bqm.vartype)
Beispiel #3
0
    def sample(self, bqm, num_reads=10, flux_biases=[]):
        # we are altering the bqm

        if not flux_biases:
            return SimulatedAnnealingSampler().sample(bqm, num_reads=num_reads)

        new_bqm = bqm.copy()

        for v, fbo in enumerate(flux_biases):
            self.flux_biases_flag = True
            new_bqm.add_variable(v, 1000. * fbo)  # add the bias

        response = SimulatedAnnealingSampler().sample(new_bqm,
                                                      num_reads=num_reads)

        # recalculate the energies with the old bqm
        return dimod.SampleSet.from_samples_bqm(
            [{v: sample[v]
              for v in bqm} for sample in response.samples()], bqm)