2
2
from random import random ,uniform
3
3
import numpy as np
4
4
import matplotlib .pyplot as plt
5
- from coverage import Draw
5
+ # from coverage import Draw ##用户和基站的坐标已改成从文件中直接读取,不需要使用的时候随机生成了2017年5月15日09:19:37改
6
6
from SINR import distance
7
7
from numpy import log2
8
8
from memory_profiler import profile
44
44
45
45
macroAveragePower = macroPower / channelnum ##宏基站的信道平均功率
46
46
microAveragePower = picoPower / channelnum ##微基站的信道平均功率
47
- print "宏基站信道平均功率:%s,picomeanPower:%s" % (macroAveragePower ,microAveragePower )
47
+ # print "宏基站信道平均功率:%s,picomeanPower:%s"%(macroAveragePower,microAveragePower)
48
48
channelbandwidth = bandwidth / channelnum ##每个信道的带宽
49
49
50
50
#-----------------------------用 户 的 坐 标 位 置 和 基 站 的 坐 标 位 置 --------------------------------
51
- UserX ,UserY , BSX ,BSY = Draw (samples_num = usernum ,R = 500 )#接收用户坐标和基站坐标(不包括宏基站)
51
+ '''这些信息已经改成从文件中获取,不需要每次运行的时候重新生成了'''
52
+ # UserX,UserY, BSX,BSY = Draw(samples_num= usernum,R = 500)#接收用户坐标和基站坐标(不包括宏基站)2017年5月15日09:20:02改
52
53
53
54
'''
54
55
# ------------------------------------此 函 数 已 经 废 弃----------------------------------------
@@ -81,11 +82,11 @@ def readFile(*filename):
81
82
L1 = line1 .rstrip ("\n " ).split (" " )
82
83
bsx .append (float (L1 [1 ]))
83
84
bsy .append (float (L1 [2 ]))
84
- return userx ,usery ,bsx ,bsy
85
+ return userx ,usery ,bsx ,bsy ##基站坐标中不含有宏基站坐标
85
86
86
87
87
88
#---------------------------------定 义 分 类 函 数----------------------------------------------
88
- def classifyUser (r ,ux = UserX ,uy = UserY ,bsx = BSX ,bsy = BSY ):##定义一个分类函数
89
+ def classifyUser (r ,ux ,uy ,bsx ,bsy ):##定义一个分类函数
89
90
'''
90
91
将用户按照:是否处于某个基站覆盖范围分类,r基站的半径
91
92
基站坐标不能包含宏基站坐标,宏基站用户需等待所有其他类型的基站分类完毕之后才能得到
@@ -344,7 +345,8 @@ def channelAllocate(BSCover,bsx,bsy):
344
345
print "All channels are busy"
345
346
exit (0 )
346
347
except :
347
- print "Error"
348
+ print "Error"
349
+ exit (0 )
348
350
return BSchanAllocate
349
351
#------------------------------产 生 随 机 功 率 矩 阵 的 函 数 -----------------------------
350
352
def getPower (chanlist ):
@@ -373,11 +375,13 @@ def getPower(chanlist):
373
375
374
376
#------------------------------主 函 数 ---------------------------------------
375
377
if __name__ == "__main__" :
376
-
377
- # BSCover = classifyUser(r=100)
378
- #
379
- # BSX = BSX+[0.0]
380
- # BSY = BSY+[0.0]
378
+
379
+ filename = ['user.txt' ,'bs.txt' ]
380
+ UserX ,UserY ,BSX ,BSY = readFile (* filename )
381
+ BSCover = classifyUser (100 ,UserX ,UserY ,BSX ,BSY )
382
+ ####将宏基站的坐标加入到基站的坐标列表中
383
+ BSX = BSX + [0.0 ]
384
+ BSY = BSY + [0.0 ]
381
385
# ##将用户按照基站的覆盖范围分类之后,将宏基站的坐标加入到基站坐标列表中去
382
386
# # s = 0
383
387
# # for i in BSCover:
@@ -386,22 +390,19 @@ def getPower(chanlist):
386
390
# # print "len(i)=%d"%len(i)
387
391
# # print "sum user:%d"%s
388
392
#
389
- # An_k_s=[[0 for i in xrange(channelnum)] for j in xrange(TotalNum)]
390
- # BSchanAllocate = channelAllocate(BSCover,BSX,BSY)
391
- # for i in xrange(len(BSchanAllocate)):
392
- # print BSchanAllocate[i]
393
- # for j in xrange(len(BSchanAllocate[i])):
394
- # if BSchanAllocate[i][j]!=-1:
395
- # An_k_s[i][j]=1
396
- # # print "\n"
397
- # # for i in xrange(len(An_k_s)):
398
- # # print An_k_s[i]
399
- #
400
- # ##既然信道分配已经确定了,那么平均功率所组成的一个粒子可以算作一个初始化粒子,然后针对这些已经分配信道的的用户的信道功率多做几次(20次)功率随机分配,就会产生许多不同的初始化
393
+ An_k_s = [[0 for i in xrange (channelnum )] for j in xrange (TotalNum )]
394
+ BSchanAllocate = channelAllocate (BSCover ,BSX ,BSY )
395
+ for i in xrange (len (BSchanAllocate )):
396
+ print BSchanAllocate [i ]
397
+ for j in xrange (len (BSchanAllocate [i ])):
398
+ if BSchanAllocate [i ][j ]!= - 1 :
399
+ An_k_s [i ][j ]= 1
401
400
# print "\n"
402
- # p = getPower(BSchanAllocate)
403
- # for i in p:
404
- # print i
405
- filename = ['user.txt' ,'BS.txt' ]
406
- UserX ,UserY ,BSX ,BSY = readFile (* filename )
407
- print len (UserX ),len (BSX )
401
+ # for i in xrange(len(An_k_s)):
402
+ # print An_k_s[i]
403
+
404
+ ##既然信道分配已经确定了,那么平均功率所组成的一个粒子可以算作一个初始化粒子,然后针对这些已经分配信道的的用户的信道功率多做几次(20次)功率随机分配,就会产生许多不同的初始化
405
+ print "\n "
406
+ p = getPower (BSchanAllocate )
407
+ for i in p :
408
+ print i
0 commit comments