Как использовать вложенные циклы for для перебора комбинаций — Python

Я хочу сделать следующее: 1) попробовать различные входные комбинации для поиска наилучшего результата 2) сбросить все массивы, как они были до каждого цикла кода

Каждая переменная, с которой я работаю, находится в массиве, таком как f[0,1,2,3,...]

Проблема, вероятно, заключается в сбросе переменных после каждой части прохода, так как первый проход работает нормально, но остатки первого прохода приводят к преждевременному прерыванию следующих итераций.

Вот псевдоним для моего метода. Так что очень просто, вероятно, проблема с тем, как Python обрабатывает данные (объектно-ориентированный).

index_save = index
for input1 in [0.1,0.2,0.3,...]
    for input2 in [10,20,30,...]
        for input3 in [-0.1,-0.2,-0.3,...]
            index = index_save  #To reset the index and thus all arrays
            while True:
                index = index + 1
                f[index] = *Function of inputs*
                result = *Function of f and inputs*
                if condition_met = true
                    break
            if result > result_best
                result_best = result
                inputs_best = [input1,input2,input3]

person def_proxy    schedule 20.12.2018    source источник


Ответы (1)


Получается ответ на мой вопрос следующий.

Использование вложенных циклов for для комбинаций грубой силы работает (очевидно). Использование метода, который я изложил в вопросе, работает для этого. Часть, требующая осторожности, — это убедиться, что вы успешно сбрасывали все переменные при каждом проходе. Это означает, что переменные, которые являются целыми числами, должны быть сброшены вручную. Это отличается от того, как я мог сбросить все массивы, просто сбросив индекс.

integer_save = integer
index_save = index
for input in range
    index = index_save
    integer = integer_save
    index = index + 1
    array[index] = (physics functions based on input)
    integer = (physics functions based on input)
person def_proxy    schedule 21.12.2018