def METHOD_NAME(self):
    # update x_{t+1/2}
    for x_paras in self.model_x.parameters():
        x_paras.data.mul_(self.topology[self.id])
    for client_id in self.neighbors_weight_dict.keys():
        model_x = self.neighbors_weight_dict[client_id]
        topo_weight = self.neighbors_topo_weight_dict[client_id]
        for x_paras, x_neighbor in zip(
            list(self.model_x.parameters()), list(model_x.parameters())
        ):
            temp = x_neighbor.data.mul(topo_weight)
            # print("topo_weight=" + str(topo_weight))
            # print("x_neighbor=" + str(temp))
            x_paras.data.add_(temp)
    # update omega
    self.omega *= self.topology[self.id]
    for client_id in self.neighbors_omega_dict.keys():
        self.omega += self.neighbors_omega_dict[client_id]
    # print(self.omega)
    # update parameter z (self.model)
    for x_params, z_params in zip(
        list(self.model_x.parameters()), list(self.model.parameters())
    ):
        # print("1.0 / self.omega=" + str(1.0 / self.omega))
        temp = x_params.data.mul(1.0 / self.omega)
        z_params.data.copy_(temp)