liy*_*211 6 python algorithm graph python-3.x
我在化学优化程序中遇到的问题与以下问题相同.我找不到一个好的算法:
假设我得到N相同的自由移动具有已知初始经度,固定宽度和具有固定位置的M个相同"障碍"的正方形.
是否有算法可以获得这些方格的"最小"总水平移动:
"最小总移动量"通常描述移动之前和之后的位置差异.它可以是偏差的总和,或均方根偏差等,以较容易的为准.
它不必是在最低限度,但近一个需要有一个良好的优化.
我可能有50个方格和25个障碍物,所以蛮力太慢了.
我也找到了这篇文章.但它不适用于固定的障碍物,并不一定保持正方形的顺序.
这感觉是NP 难的(尽管我不确定;证明尝试可能基于对 Bin-packing 的一些减少)。
编辑: 好吧...也许有一个多项式解(对我来说是50/50;我知道这没有多大帮助)。在这种情况下,以下内容将有效,我认为足以有效地解决您的问题,但不确定通过一些通常是 NP 难的代理问题来解决它是否是一个好主意。
您可以通过(混合)整数编程来解决它,它可以用作精确求解器或提供经过验证的近似值。
x_i + L <= x_i+1对于所有连续对;也许更冗余的公式有帮助:对于所有排序对)
y_i = 1 iff x_i + L <= O_j_s(对于所有 i 对于所有 o;s = 左位置障碍)z_i = 1 iff O_j_e <= x_i + L(e = 右位置)y_i + z_i <= 1对于所有我)y, zx_i和以及每个块的起始位置:线性目标!这只是一个类似原型的想法。人们必须仔细定义重叠对您意味着什么(包含、排除;然后 StackOverflow 中描述了许多布尔方法:关键字:范围交集)。要制定指标约束,请查找整数编程指南或从此处开始。
| 归档时间: |
|
| 查看次数: |
287 次 |
| 最近记录: |