组合约束满足与优化

2024-04-29 16:17:20 发布

您现在位置:Python中文网/ 问答频道 /正文

问题

我创建了一组基于包平面相交的多边形。在

schermafbeelding 2018-10-11 om 16 50 39

现在我尝试通过组合优化来创建下面的流形。在

schermafbeelding 2018-10-11 om 16 50 51

  • 流形约束最终模型中的每条边都应关联到两个多边形。在
  • 优化权重每个多边形都有一个置信权,模型应该朝着最高的总体置信度进行优化
  • 优化简单性朝更少的角点优化(在同一平面上有更多的多边形)

尝试

{{{cd2>通过对每一个多边形的优化来选择最优解。在

但是,尝试使用python-constraint执行以下操作,但无法生成解决方案。在

import constraint
problem = constraint.Problem()
problem.addVariables(range(len(polygons)), [True, False])

for idx, polygon in enumerate(polygons):
    edge_adjacent_polygons = [polygon[a][b]['polygon'] for a, b in polygon.edges()]
    if all([len(adjacent_polygons) > 2 for adjacent_polygons in edge_adjacent_polygons]):
        for adjacent_polygons in edge_adjacent_polygons:
            problem.addConstraint(lambda *adjacent_polygons: sum(adjacent_polygons) == 2, adjacent_polygons)
    elif any([len(adjacent_polygons) == 2 for adjacent_polygons in edge_adjacent_polygons]) & \
        all([len(adjacent_polygons) >= 2 for adjacent_polygons in edge_adjacent_polygons]):
        problem.addConstraint(lambda idx: idx == True, [idx])
    else:
        problem.addConstraint(lambda idx: idx == False, [idx])

我的其他想法是在NetworkX中将其建模为一个图优化问题,并使用类似于min_weighted_vertex_cover的东西。或者使用jMetalPy库,但是我不清楚如何在这些方法中建模这个问题。在

问题

我理解这个问题结合了非线性优化和组合满足问题。我的问题是最重要的

  • 我的方法是正确的还是过于复杂?在
  • 有没有一种工具可以模拟这样的问题?在

最初的问题(和图片)来自我试图复制的一篇论文https://repository.kaust.edu.sa/handle/10754/627151。Gurobi使用的纸张是专有的。由于许可证的原因,我无法使用此解算器。在


Tags: lambdainforlen多边形流形平面problem