【发布时间】:2011-10-03 14:13:26
【问题描述】:
我手头有一个分配问题,我想知道应用本地搜索技术来达到理想的解决方案有多合适(搜索空间非常大)。
我有一个有向图(流程图),我想在二维平面上以一种非常清晰、易于理解且易于人眼阅读的方式进行可视化。所以;我将为每个顶点分配 (x,y) 位置。我正在考虑使用模拟退火、遗传算法或您可以建议的任何此类方法来解决这个问题
输入: 图 G = (V,E)
输出: 一组作业,{(xi, yi) for each vi in V}。换句话说,每个顶点将被分配一个位置 (x, y),其中坐标都是整数并且 >= 0。
这些是我将用来判断解决方案的标准(我欢迎任何建议):
- 相交边的数量应该最少,
- 所有边沿一个方向流动(即从左到右),
- 高角度分辨率(两条边形成的最小角度 事件在同一个顶点),
- 小面积 - 最不重要。
此外;我有一个手工制作的初始配置(将位置分配给顶点)。它非常混乱,这就是我尝试自动化该过程的原因。
我的问题是,
使用本地搜索技术有多明智?可能性有多大 它会产生预期的结果吗?
我应该从什么开始?模拟退火,遗传算法 还是别的什么?
我应该在开头随机播种还是使用初始 配置开始?
或者,如果您已经知道类似的实现/伪代码/事物,请指点我。
任何帮助将不胜感激。谢谢。
编辑:它不需要很快 - 不是实时的。此外; |V|=~200,每个顶点平均有大约 1.5 个出边。该图没有断开的组件。它确实涉及循环。
【问题讨论】:
-
主要任务是画图吗?已经有大量关于绘图的研究,您可能应该先阅读一下……如果这不是您的主要任务,那么只需使用一些现有的库来完成绘图部分。
-
您是否找到了一种解决方案,如何在基因中存储坐标和边缘以创建不那么复杂的遗传算法?我的意思是您决定将其存储为具有 1,0 值的字符串,或者您找到了如何存储坐标和边的解决方案?
标签: algorithm graph genetic-algorithm