Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 矩阵中最大非重叠数的极小化_Algorithm_Matrix_Mathematical Optimization - Fatal编程技术网

Algorithm 矩阵中最大非重叠数的极小化

Algorithm 矩阵中最大非重叠数的极小化,algorithm,matrix,mathematical-optimization,Algorithm,Matrix,Mathematical Optimization,我正在寻找一个有效的解决方案,从矩阵中选择非重叠值,而不考虑成本最小化。匈牙利算法通过选择成本最小的组合来解决分配问题。然而,我想要一个最大化数的最小化 例如: J1 J2 J3 w1 | 5 4 5 | w2 | 3 2 5 | w3 | 1 5 2 | 匈牙利人将选择 W3 --> J1 = 1 W2 --> J2 = 2 W1 --> J3 = 5 总成本=1+2+5=8 但是,最大数量为5 我希望将组合选择为 W1 --> J2 = 4 W

我正在寻找一个有效的解决方案,从矩阵中选择非重叠值,而不考虑成本最小化。匈牙利算法通过选择成本最小的组合来解决分配问题。然而,我想要一个最大化数的最小化

例如:

    J1 J2 J3
w1 | 5  4  5 |
w2 | 3  2  5 |
w3 | 1  5  2 |
匈牙利人将选择

W3 --> J1 = 1
W2 --> J2 = 2
W1 --> J3 = 5
总成本=1+2+5=8

但是,最大数量为5

我希望将组合选择为

W1 --> J2 = 4
W2 --> J1 = 3
W3 --> J3 = 2
总成本=4+3+2=9

但最大数量是4

因此,我期望的输出是: 4,3,2


而不是最小化成本。我想选择一个最小值和最大值的组合。

MIP型号是否适合您

如果表示矩阵
A
,添加二进制变量
x_ij
,表示是否选择了元素,并将
k
作为最大选择值,则以下操作将起作用(
i
j
作为行和列索引):

最大化
k
取决于

1。∑(j)∈ J) x_ij=1,∀我∈ I
(每行一个元素)

2。∑(i)∈ 一) x_ij=1,∀J∈ J
(每列一个元素)

3。K≤ A_ij*x_ij,∀我∈ 我∀J∈ J
k
小于或等于每个选定元素)

Minizing中的实现(使用给定数据):

给出:

k=4
x=[| 0, 1, 0 |
     1, 0, 0 |
     0, 0, 1 |]

你自己试过什么?你遇到了什么问题?StackOverflow旨在帮助您找到解决方案,并可能帮助您找到更有效的解决方案,但在不提供自己的解决方案的情况下征求对更好解决方案的意见绝对不是目的。我尝试使用蛮力迭代和赋值算法来解决它(匈牙利语)但我的任务不是最小化成本,所以我正在寻找一个智能解决方案,它可以解决更大的例子。可能的重复。我认为有一个答案是可以的。它可以作为一个起点。你能告诉我它是否适用于nxm矩阵,其中n=M如果是,如何在代码中合并如果
n>m
您将更改
1。∑(j)∈ J) x_ij
k=4
x=[| 0, 1, 0 |
     1, 0, 0 |
     0, 0, 1 |]