Cplex ограничить время фазы предварительного растворения

Поскольку файл-файл читает файл, он использует указатель, чтобы отслеживать, где он находится. Если вы прочитаете часть файла, а затем вернитесь к нему позже, он поднимется туда, где вы остановились. Если вы прочитаете весь файл и вернетесь к тому же файловому объекту, это будет похоже на чтение пустого файла, потому что указатель находится в конце файла, и читать его нечего. Вы можете использовать file.tell(), чтобы увидеть, где в файле указатель, и file.seek установить указатель. Например:

>>> file = open('myfile.txt')
>>> file.tell()
0
>>> file.readline()
'one\n'
>>> file.tell()
4L
>>> file.readline()
'2\n'
>>> file.tell()
6L
>>> file.seek(4)
>>> file.readline()
'2\n'

Кроме того, вы должны знать, что file.readlines() читает весь файл и сохраняет его как список. Это полезно знать, потому что вы можете заменить:

for line in file.readlines():
    #do stuff
file.seek(0)
for line in file.readlines():
    #do more stuff

на:

lines = file.readlines()
for each_line in lines:
    #do stuff
for each_line in lines:
    #do more stuff

Вы также можете перебирать файл по одной строке за раз, не сохраняя весь файл в памяти (это может быть очень полезно для очень больших файлов):

for line in file:
    #do stuff
1
задан abc 16 January 2019 в 22:13
поделиться

1 ответ

После быстрого взгляда на вашу модель (спасибо, что поделились этим), выясняется, что виновным является поведение по умолчанию параметра , нарушающего симметрию . В качестве обходного пути к вашей проблеме, если вы установите для параметра значение < = 2, тогда следует соблюдать ограничение по времени. Пожалуйста, дайте это попробовать. Более того, более новая версия CPLEX (в настоящее время находится в разработке), по-видимому, уже решает эту проблему, поэтому эта проблема должна быть решена в будущей версии CPLEX.

0
ответ дан rkersh 16 January 2019 в 22:13
поделиться