def __init__(self): # Base Station self.n_antennas = f.get_codebook().shape[ 0] # number of transmit antennas self.codebook_size = f.get_codebook().shape[1] # number of codes self.n_power_levels = 5 # number of discrete power levels self.n_actions = self.codebook_size * self.n_power_levels # number of available actions to choose self.bs_power = 38 # maximum transmit power of base stations # Channel self.angular_spread = 3 / 180 * np.pi # angular spread self.multi_paths = 4 # number of multi-paths self.rho = 0.64 # channel correlation coefficient self.noise_power = f.dB2num(-114) # noise power # Cellular Network self.cell_radius = 200 # cell radius self.n_links = 19 # number of simulated direct links in the simulation self.inner_cell_radius = 10 # inner cell radius # Simulation self.slot_interval = 0.02 # interval of one time slot self.random_seed = 2019 # random seed to control the simulated cellular network self.total_slots = 100000 # total time slots in the simulation self.U = 5 # number of neighbors taken into consideration
def __init__(self): # Base Station self.n_antennas = f.get_codebook().shape[0] self.codebook_size = f.get_codebook().shape[1] self.n_power_levels = 5 self.n_actions = self.codebook_size * self.n_power_levels self.bs_power = 38 # Channel self.angular_spread = 3 / 180 * np.pi self.multi_paths = 4 self.rho = 0.64 self.noise_power = f.dB2num(-114) # Cellular Network self.cell_radius = 200 self.n_links = 19 self.inner_cell_radius = 10 # Simulation self.slot_interval = 0.02 self.random_seed = 2020 self.total_slots = 100000 self.U = 5
def __init__(self, location, index): self.location = location self.index = index self.n_antennas = Config().n_antennas self.dqn = DQN() self.max_power = f.dB2num(Config().bs_power) self.codebook = f.get_codebook() self.powerbook = np.arange( Config().n_power_levels) * self.max_power / ( Config().n_power_levels - 1) self.code_index = random.randint(0, Config().codebook_size - 1) self.power_index = random.randint(0, Config().n_power_levels - 1) self.code = self.codebook[:, self.code_index] self.power = self.powerbook[self.power_index] self._init_params_()
import numpy as np from config import Config import random import time import functions as f import scipy.io as sio import os os.environ['MKL_NUM_THREADS'] = '1' c = Config() random.seed(c.random_seed) np.random.seed(c.random_seed) K = c.n_antennas M = c.n_links p_max = f.dB2num(c.bs_power) codebook = f.get_codebook() noise_power = c.noise_power cn = CN() utility = [] cn.draw_topology() rate_m = [] for _ in range(c.total_slots): print(_) H = cn.get_H() # fp algorithm y, y_next = np.zeros(M, dtype=np.complex), np.zeros(M, dtype=np.complex) W, W_next = np.zeros((K, M), dtype=np.complex), np.zeros((K, M), dtype=np.complex) gamma, gamma_next = np.zeros(M), np.zeros(M) sum_throughput, sum_throughput_next = 0, 0