0

我是非线性编程的新手,我读到 mystic 在有效解决这类问题方面相当不错。我正在尝试实现这个数学模型(根据本文的多对象最大重叠匹配):

数学模型 大致如下:

"""
Maximize:
  sum_{i=1 to max i} sum_{j=1 to max j} C_{ij} z_{ij}
Subject to:
  4 - min(sum_{i=1 to max i}z_{ij},2) - min(sum_{j=1 to max j}z_{ij},2) >= z_ij
  C_{ij} >= z_{ij}
  z_{ij} in {0, 1}


where the decision variables are:
  C_{ij}: pixel overlap between i reference obj and j output object
defined as:
  C_{ij} = R_i intersect O_j (value in matrix)
and:
  z_{ij}: R_i is matched to O_j
"""

我认为这将类似于布尔示例。但我正在处理矩阵输入以找到最佳的最大匹配。Matches(z_ij) 可以是一对一、多对一、一对多的关系,但不能是多对多的。

示例矩阵输入 (C_ij)

[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 5600.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 6300.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 1600.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 2500.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 1200.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 4800.0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 1600.0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 2400.0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 1200.0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 300.0, 1000.0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 400.0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 2500.0, 600.0, 600.0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 1600.0, 800.0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1600.0, 1600.0, 1971.428571428571]] 

我不确定要放置什么边界以及如何设置 ieqn 约束以引用 z_ij

4

0 回答 0