我有一个矩形地图,其中填充了不同大小的对象,每个对象都有一个相应的文本标签,该文本标签必须尽可能靠近它们放置,同时不与任何文本标签或对象重叠。如果需要,文本也可以旋转 90 度。 具体情况涉及在 PCB 板上放置文本,其中对象是组件,文本标签是名称。
我已经开始研究模拟退火等方法。
看来该问题可以建模为具有二元值变量的整数线性规划(ILP)问题(即每个变量必须等于 0 或 1)。
请注意,集合 Ij 是根据集合 Ji 计算的。
我们定义以下binary变量。
如果组件 i 的标签要占据位置 j,则xij 等于 1,否则对于 Ji
中的每个 i 和所有 j 等于 0ILP 问题通常具有要最大化或最小化的变量的线性函数。然而,在这里,任何可行的解决方案(即满足约束的任何解决方案)就足够了。配方如下。
最大0
须遵守:
对于所有 i,ΣjϵJixij
= 1 对于所有 j,ΣiϵIjxij
≤ 1第一组约束确保对于每个组件 i,其标签恰好放置在已识别的可能位置集中的一个位置中,Ji。
ILP 包将以最佳解决方案(实际上可以是任何可行解决方案)或确定不存在可行解决方案而终止。
尚不清楚是否可以使用 ILP 软件包在可接受的时间内解决该问题。这将取决于组件的数量和可接受的标签位置、ILP 包的效率以及通常找到可行解决方案的难度。