我有两个带有while循环的函数,第一个循环的结果在第二个循环中用作直到条件,但是在主程序中调用两个函数时,它仅执行第一个函数,甚至不输入第二个功能只是给我第一个循环的结果。
在第一个函数self.user_association()
中使用PULP进行了线性优化,尽管这是导致问题的原因,但这不是因为在第二个函数中调用循环函数block_estimated_access_link()
时它只是工作很好,但是我的程序不能那样工作,因为正如我所说,我在第二个循环中使用了第一个循环的结果。这是代码,有人可以告诉我我做错了什么还是到底是什么问题?
def block_Estimation_ACCESS_LINK(self):
while (self.iteration < self.Iter_max):
self.User_association()
self.estimated_access_power()
self.calcul_alpha()
self.calcul_rate_am()
self.User_association()
self.iteration += 1
def block_bg_power_allocation(self):
EPS = 0.0000000000001
RamTot = 0
while (self.iteration < self.Iter_maxB):
self.calcul_power_backhaul()
print('backhaul Pok=', self.p_ok)
self.calcul_delta()
self.calcul_rok()
for i in self.station:
for j in self.users:
self.Ram = numpy.delete(self.Ram, self.Ram[0])
RamTot = sum(self.Ram)
if EPS <= (self.Rok[i] - sum(self.Ram[i])):
self.iteration += 1
def main(self):
self.block_Estimation_ACCESS_LINK()
self.block_bg_power_allocation()
答案 0 :(得分:0)
在第一个功能中,您需要执行以下操作:
self.iteration += 1
然后,在第二个功能中,停止条件为:
while (self.iteration < self.Iter_maxB):
因此,第一个函数会将self.iteration
递增到self.Iter_max
。现在,如果self.Iter_maxB
与self.Iter_max
的值相同,则第二个函数循环将永远不会执行。我怀疑这就是这里正在发生的事情。检查这两个变量。
如果您想同时执行这两个循环,修复方法将是这样的:
def main(self):
self.block_Estimation_ACCESS_LINK()
self.iteration = 0
self.block_bg_power_allocation()