_sda.py 文件源码

python
阅读 21 收藏 0 点赞 0 评论 0

项目:sdaopt 作者: sgubianpm 项目源码 文件源码
def visiting(self, x, step, temperature):
        dim = x.size
        if step < dim:
            # Changing all coordinates with a new visting value
            visits = np.array([self.visit_fn(
                temperature) for _ in range(dim)])
            upper_sample = self.rs.random_sample()
            lower_sample = self.rs.random_sample()
            visits[visits > self.tail_limit] = self.tail_limit * upper_sample
            visits[visits < -self.tail_limit] = -self.tail_limit * lower_sample
            x_visit = visits + x
            a = x_visit - self.lower
            b = np.fmod(a, self.b_range) + self.b_range
            x_visit = np.fmod(b, self.b_range) + self.lower
            x_visit[np.fabs(
                x_visit - self.lower) < self.min_visit_bound] += 1.e-10
        else:
            # Changing only one coordinate at a time based on Markov chain step
            x_visit = np.copy(x)
            visit = self.visit_fn(temperature)
            if visit > self.tail_limit:
                visit = self.tail_limit * self.rs.random_sample()
            elif visit < -self.tail_limit:
                visit = -self.tail_limit * self.rs.random_sample()
            index = step - dim
            x_visit[index] = visit + x[index]
            a = x_visit[index] - self.lower[index]
            b = np.fmod(a, self.b_range[index]) + self.b_range[index]
            x_visit[index] = np.fmod(b, self.b_range[
                index]) + self.lower[index]
            if np.fabs(x_visit[index] - self.lower[
                    index]) < self.min_visit_bound:
                x_visit[index] += self.min_visit_bound
        return x_visit
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号