Вот вопрос, который не дает мне спать уже несколько дней. Единственный вывод, который я сделал до сих пор, заключается в том, что Red Bull обычно не помогает программистам.
У меня есть сценарий в моем приложении, где у меня есть пара заданий (от 1 до 50). У задания есть адрес, и у меня есть следующие свойства адреса: почтовый индекс, широта и долгота.
У меня тоже есть таблица рабочих и у них тоже есть адреса. В то время как рабочие места или рабочие создаются с помощью экранов, я использую запросы Google Map, чтобы убедиться, что предоставленный почтовый индекс действителен и находится в Великобритании, поэтому все адреса проверены.
Я использую элемент управления планировщиком для отображения некоторых рабочих по оси Y и временной шкалы по оси X. Каждое задание имеет дату и может перемещаться вертикально в планировщике только в дату задания. Пользователь выбирает количество заданий и они отображаются в корзине рядом с планировщиком. Затем пользователь может перетаскивать задания на рабочих. Все это вручную, так что это работает.
Моя задача состоит в том, чтобы автоматизировать это, чтобы пользователь не делал ничего, кроме проверки и распределения заданий. Поэтому мне приходится автоматизировать процесс.
У каждого работника есть свойство под названием WillingMaximumDistanceTravel, которое представляет собой целое число, представляющее мили, рабочий готов путешествовать для работы.
Теперь вот головная боль: у меня более 1500 рабочих. У меня есть служебная функция, которая использует Json Convert от Newtonsoft для десериализации потока ответов от Google Maps. Мне нужно ввести почтовый индекс A и B.
Я также планирую ввести в БД новую таблицу для хранения найденных расстояний в виде почтового индекса A, почтового индекса B и расстояния. Поэтому, если я снова сравниваю одни и те же почтовые индексы, я просто вместо этого получу результат из БД и медленно, и в конечном итоге мне больше не нужно будет беспокоить Google, поскольку эта таблица будет очень полной.
Я не могу использовать простую формулу Хаверсина, так как путь вороньей мухи здесь не является моим требованием. Боль в этом заключается в том, что для расчета требуется много времени. Некоторые работники могут проехать более 10 миль, а некоторые — от 15 до 80. Я должен взять первое задание из списка и выполнить его со всеми подходящими рабочими в системе! Мне было интересно, что почтовый индекс Великобритании имеет шаблон. Если мы отсортируем список почтовых индексов Великобритании, сможем ли мы приблизительно оценить по буквенно-цифровому шаблону, где мы достигнем отметки в 100 миль, отметки в 200 миль и так далее?
Если кому-то интересен код, напишите, я вставлю.