Я занимаюсь домашней проблемой, связанной с локальным поиском. Я хотел бы перезапустить поиск, используя новое начальное состояние через некоторое время. Для этого я включил условие времени в мой цикл while.while цикл с временным условием не заканчивается
void run_local_search()
{
while (time(NULL) - timer < (tim * 60) - 1) // tim is some user defined time in minutes. I've initialized timer in my main function right before calling the run_local_search().
{
struct state initial; // Declaring the initial state structure
start_state(&initial); // Generates a random starting state.
if (initial.profit > best.profit)
{
best = initial;
}
local_search(&initial);
}
}
Моей главная функция локального поиска
void local_search(state* s)
{
clock_t searchtime;
searchtime = clock(); // I initialize the clock right before the search loop here
while ((clock() - searchtime)/CLOCKS_PER_SEC < 2) // I want the loop to run for 2 seconds
{...}
cout << "Done" << endl;
}
Я обнаружил, что состояние структуры начального; оператор не повторно инициализирует исходную структуру через итерации цикла while. То же самое значение для начального переноса происходит в новой итерации цикла while, поэтому моя функция start_state, которая генерирует случайное значение, оказывается бесполезной! Как я могу это исправить?
Привет. Просить людей обнаружить ошибки в коде не особенно продуктивно. Вы должны использовать отладчик (или добавить заявления печати), чтобы изолировать проблему, отслеживая ход вашей программы и сравнивая ее с тем, что вы ожидаете. Как только двое расходятся, вы нашли свою проблему. (И затем, если необходимо, вы должны построить [минимальный тестовый сценарий] (http://sscce.org).) –
Покажите нам 'tim' и' timer', и, как упоминалось @OliCharlesworth, лучше иметь минимальный самодостаточные примеры. – mockinterface
Привет! Я добавил утверждения печати (я не показал их в коде), и я выделил проблему, связанную с тем, как структура (struct state initial;) инициализируется в цикле while. Кажется, он сохраняет постоянную ценность в итерациях цикла. Как я могу убедиться, что значение структуры можно переопределить и повторно инициализировать? – krandiash