Я разрабатываю какую-то эвристику для варианта проблемы маршрутизации транспортных средств на С ++.
После создания решения я хочу построить это решение. Решение представляет собой совокупность различных туров, начинающихся и заканчивающихся в общем депо. Поэтому у меня есть набор вершин со всеми координатами и ребрами, каждый из которых определяется двумя идентификаторами вершины. Кроме того, у меня, конечно, есть все расстояния между парами вершин.
Было бы полезно отобразить это в открывшемся дополнительном окне в моей программе, но запись графика в графический файл тоже должна быть в порядке.
Как проще всего это построить? Как бы вы с этим справились?
Сначала я попытался найти общие пакеты визуализации графов (graphviz, tulip, networkx (python)), но понял, что все они специализируются на компоновке графов (когда нет координат). Поправьте меня, если я ошибаюсь. Я не знаю, можно ли сказать этим пакетам, что у меня уже есть координаты, помогающие алгоритмам компоновки.
Следующее, что я попробовал, это библиотека CGAL с выводом geomview -> пока не повезло -> ubuntu вылетает geomview.
Еще один вопрос: лучше ли использовать некоторые библиотеки 2D-графиков без компоновки, рискуя получить график, который не очень хорош для просмотра (есть ли что-то большее, чем масштабирование?), или использовать некоторые библиотеки, основанные на алгоритмах компоновки (например, graphviz, tulip, networkx), скормить им расстояния между вершинами и надеяться, что алгоритмы компоновки сохраняют расстояния при построении графика в удобном для просмотра виде? em >
- Если это не компоновка-черчение, то какую библиотеку вы порекомендуете?
- Если для этого можно использовать построение чертежей на основе макета: как я могу использовать расстояния / координаты в этих библиотеках? А какую библиотеку порекомендуете?
Спасибо за все Ваши ответы!
Саша
РЕДАКТИРОВАТЬ: Я завершил реализацию прототипа с использованием библиотеки PLplot (http://plplot.sourceforge.net/). Результаты хороши, и на данный момент их должно хватить. Я обнаружил и выбрал эту библиотеку, потому что связанный проект (VRPH Software Package / Groer) использовал этот график и исходный код был распространен. Таким образом, реализация была выполнена в короткие сроки. API, на мой взгляд, немного неудобный и низкоуровневый. Может быть, есть более современные (может быть, не библиотека на основе c) библиотеки? MathGL? Дислин? Может и я их попробую.
Хорошая вещь в рисовании нескольких туров в задаче маршрутизации транспортного средства заключается в том, что «неплохие» алгоритмы, как правило, обнаруживают хорошие неперекрывающиеся и расходящиеся туры, что действительно полезно для глаз ;-)