цикл while не переходит к другому циклу while - PullRequest
0 голосов
/ 02 мая 2019

У меня есть две функции с циклом while, результаты первого цикла используются во втором как условие до, но при вызове двух функций в основном он выполняет только первую и даже не вводит вторая функция это просто дать мне результаты первого цикла.

в первой функции self.user_association() есть линейная оптимизация с использованием PULP i, хотя она и вызывает проблему, но не потому, что при вызове функции цикла 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()

1 Ответ

0 голосов
/ 02 мая 2019

В первой функции вы делаете это:

self.iteration += 1

И затем, во второй функции ваше условие остановки:

while (self.iteration < self.Iter_maxB):

Таким образом, первая функция будет увеличиваться *От 1007 * до 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()
...