Например, в приложении с графическим интерфейсом вы начинаете решать в фоновом (рабочем) потоке. В этом сценарии вы можете остановить решатель асинхронно, вызвав solver.terminateEarly()
из другого потока, обычно потока пользовательского интерфейса, когда вы нажимаете кнопку остановки.
Если это не то, что вы ищете, читайте дальше.
При условии, что под вычислением вы на самом деле подразумеваете время, затраченное на решение, у вас есть несколько вариантов, как остановить решатель. Помимо асинхронного завершения, описанного в первом абзаце, вы можете использовать синхронное завершение:
Синхронное завершение определяется перед запуском решателя и выполняется либо с помощью конфигурации решателя XML, либо с помощью API SolverConfig
. См. документацию OptaPlanner для других условий завершения.
И наконец, если вы говорите о подсчете очков , и вычисление очков за один ход (изменение решения) занимает слишком много времени, тогда вы наверняка делаете что-то не так. Чтобы OptaPlanner мог эффективно выполнять поиск в пространстве решений, вычисление должно быть быстрым (не менее 1000 вычислений в секунду).
Например, в случае проблемы с маршрутизацией транспортного средства, время вождения или дорожные расстояния должны быть известны в момент начала решения. Вы не должны замедлять вычисление баллов тяжелыми вычислениями, которые можно сделать заранее.
Существует несколько преимуществ для инфраструктуры RESX:
Существует также один конкретный недостаток к подходу RESX:
Я хотел бы уточнить немного о той последней точке. Возьмите, например, модель перевода Facebook. Facebook имеет довольно простой способ для людей обеспечить и голосовать по переводам различных ресурсов. Если бы они хранятся в базе данных, было бы возможно использовать их после надлежащего редакционного процесса, не восстанавливая и повторно развертывая приложение. С моделью RESX блоки ресурсов должны будут быть, восстанавливают и повторно развернутый, который, возможно, высоко достаточно стоил в зависимости от процесса развертывания.
Таким образом, прежде, чем решить, что процесс локализации использовать, я посмотрел бы на решение того, кто собирается сделать локализацию и чем был бы процесс развертывания для localizaed ресурсов после того, как главное приложение уже развертывается.
Править: Я забыл упоминать, что эти соображения являются ортогональными к выбору платформы ASP.NET (MVC или WebForms).
Если Вы собираетесь использовать Resx и не использовать Управление сервером, как Вы находитесь в MVC, почему бы не расширить Вспомогательные методы MVC, таким образом, можно создать локализованные маркировки и текст? Затем просто назовите текст от ресурса во вспомогательном методе.
например,' <% =Html. CultureLabel ("ResouceId") %>'
или' <% =Html. CultureButton ("Имя", "ResouceId", HtmlButtonType. Кнопка) %>'
Просто мысль.
Также руководящая глобализация сайта НАМНОГО легче с resx для текста.
Я сказал бы "да", resx файлы все еще хороший вариант для новых приложений. Я не думаю ASP.NET, MVC в особенности изменяет что-либо о хранении Ваших строк.
То, что является большим об использовании ресурсов,
Я рекомендую файлы ресурсов для "строк сайта", которые отличаются, чем большие блоки данных, которые Вы могли бы отредактировать на частой основе. Таким образом для полной рекомендации, я сказал бы что файлы ресурсов использования (resx для запуска) для кнопок, маркировок, и т.д., и CMS для мясистого содержания.