向量的最小子集,使得其和的每个分量都大于某个阈值

时间:2020-06-11 01:42:42

标签: algorithm optimization

假设我们有一个长度为n的向量的有限集S,这些向量具有正实数值和正实数t。我想找到S的最小子集M,以使向量之和的每个分量都大于t。

例如,如果我遇到以下问题,

t = 10
S = [[8, 2], [5, 5], [4, 3], [3, 9]]

最优解由两个向量组成

M = [[8, 2], [3, 9]]

因为

[8, 2] + [3, 9] = [11, 11] > [10, 10] 

并且没有单个矢量的每个分量都大于10。不一定有一个唯一的最佳子集,也没有一个完全满足标准的子集。

在我看来,这个问题可能与整数线性编程有关,但似乎不符合其标准格式。可能是问题是NP Hard,所以我也希望尝试近似解决方案的算法。

1 个答案:

答案 0 :(得分:1)

在我看来,这个问题可能与整数线性有关 编程,但似乎不符合其标准格式

我认为可以将其简单地实现为MIP模型:

enter image description here

此处x(i)指示是否选择了向量i

数据和结果如下所示:

----     33 PARAMETER t                    =           10  

----     33 PARAMETER S  

            j1          j2

i1           8           2
i2           5           5
i3           4           3
i4           3           9


----     33 VARIABLE x.L  select vectors

i1 1,    i4 1


----     33 VARIABLE numSelected.L         =            2  

为了测试,我还产生了一个更大的问题:

----     29 PARAMETER t                    =      100.000  

----     29 PARAMETER S  

              j1          j2          j3          j4          j5          j6          j7          j8          j9         j10

i1         1.717       8.433       5.504       3.011       2.922       2.241       3.498       8.563       0.671       5.002
i2         9.981       5.787       9.911       7.623       1.307       6.397       1.595       2.501       6.689       4.354
i3         3.597       3.514       1.315       1.501       5.891       8.309       2.308       6.657       7.759       3.037
i4         1.105       5.024       1.602       8.725       2.651       2.858       5.940       7.227       6.282       4.638
i5         4.133       1.177       3.142       0.466       3.386       1.821       6.457       5.607       7.700       2.978
i6         6.611       7.558       6.274       2.839       0.864       1.025       6.413       5.453       0.315       7.924
i7         0.728       1.757       5.256       7.502       1.781       0.341       5.851       6.212       3.894       3.587
i8         2.430       2.464       1.305       9.334       3.799       7.834       3.000       1.255       7.489       0.692
i9         2.020       0.051       2.696       4.999       1.513       1.742       3.306       3.169       3.221       9.640
i10        9.936       3.699       3.729       7.720       3.967       9.131       1.196       7.355       0.554       5.763
i11        0.514       0.060       4.012       5.199       6.289       2.257       3.961       2.760       1.524       9.363
i12        4.227       1.347       3.861       3.746       2.685       9.484       1.889       2.975       0.746       4.013
i13        1.017       3.839       3.241       1.921       1.124       5.966       5.114       0.451       7.831       9.457
i14        5.965       6.073       3.625       5.941       6.799       5.066       1.593       6.569       5.239       1.244
i15        9.867       2.281       6.757       7.768       9.325       2.012       2.971       1.972       2.463       6.465
i16        7.350       0.854       1.503       4.342       1.869       6.927       7.630       1.548       3.894       6.954
i17        8.458       6.127       9.760       0.269       1.874       0.871       5.404       1.269       7.340       1.132
i18        4.884       7.956       4.920       5.336       0.106       5.439       4.511       9.753       1.838       1.635
i19        0.246       1.778       0.613       0.166       8.357       6.017       0.270       1.961       9.507       3.355
i20        5.943       2.592       6.406       1.552       4.600       3.933       8.055       5.410       3.907       5.578
i21        9.328       3.488       0.083       9.488       5.719       3.336       9.837       7.665       1.101       9.948
i22        5.803       1.664       6.434       3.443       9.123       9.001       0.163       3.686       6.644       5.934
i23        0.346       8.418       9.321       5.080       2.996       4.966       0.449       7.737       5.330       7.468
i24        7.201       6.316       1.149       9.712       7.067       9.863       8.548       6.214       7.013       7.009
i25        7.907       6.102       0.543       4.852       0.525       6.986       1.948       2.260       8.136       9.917
i26        7.507       7.183       0.006       2.639       8.238       8.195       8.604       2.127       4.568       0.384
i27        3.230       4.399       3.153       1.348       8.110       4.168       1.418       4.655       2.830       8.957
i28        0.644       4.146       3.416       4.683       6.427       6.436       3.376       1.008       9.058       2.174
i29        9.189       4.518       0.899       3.742       4.150       4.042       1.117       7.511       8.034       0.237
i30        4.809       2.786       9.016       0.176       6.810       9.509       9.002       8.988       8.745       3.910
i31        5.042       8.313       6.021       0.822       5.778       5.932       6.838       1.588       3.318       3.159
i32        5.199       3.638       1.678       6.831       5.054       5.762       7.198       6.837       0.198       8.398
i33        7.100       1.555       6.107       6.616       1.944       3.635       6.239       7.314       4.140       1.575
i34        0.125       0.102       9.520       9.767       9.663       8.563       1.416       0.497       5.530       1.840
i35        9.942       8.091       3.062       0.874       4.305       3.497       1.173       5.860       4.455       4.123
i36        9.145       2.138       2.242       5.423       6.311       3.274       1.488       9.291       2.510       0.626
i37        3.101       0.402       8.212       2.310       4.100       3.026       4.449       7.160       5.932       1.312
i38        1.612       3.156       5.721       2.687       0.364       6.864       6.746       3.321       7.599       1.768
i39        6.825       6.730       8.312       5.152       2.830       5.554       4.140       0.734       8.060       3.327
i40        0.847       5.722       0.221       7.420       9.051       5.608       4.728       7.176       5.130       8.871
i41        7.715       1.401       2.645       6.826       4.498       9.655       9.579       8.992       3.275       4.571
i42        5.962       8.786       1.707       6.336       7.716       5.694       0.277       8.110       2.789       4.333
i43        3.363       5.886       5.744       5.434       5.782       9.772       3.215       7.630       9.625       9.490
i44        2.559       3.249       2.148       1.740       7.313       2.702       7.585       6.174       2.910       7.407
i45        0.078       8.665       0.151       4.283       3.586       7.049       4.159       5.498       3.450       6.996
i46        9.335       4.693       2.136       5.108       3.657       9.354       0.680       5.039       3.924       2.049
i47        5.295       5.891       3.458       2.529       5.477       5.475       0.583       3.777       9.741       3.798
i48        1.563       4.723       3.970       2.055       6.273       0.035       5.040       0.022       5.214       8.361
i49        0.721       7.606       2.901       2.449       4.360       3.688       5.534       0.747       9.094       0.487
i50        8.204       7.930       6.595       3.918       4.132       8.657       9.753       5.724       3.140       4.550
i51        3.710       4.198       0.853       8.145       5.092       7.344       8.244       4.145       9.244       3.941
i52        4.443       6.955       6.767       5.715       1.735       6.043       5.860       7.278       2.462       1.421
i53        8.912       4.428       1.143       9.036       3.339       9.960       4.645       5.305       1.904       1.991
i54        6.449       7.991       5.864       9.716       4.911       3.725       8.272       8.209       0.313       9.252
i55        0.031       6.180       0.067       4.056       6.563       6.155       2.634       0.704       0.460       1.603
i56        4.525       1.689       5.716       8.587       0.359       3.554       3.379       4.865       2.594       8.912
i57        8.493       6.345       9.865       7.579       5.079       7.678       8.321       5.839       5.751       5.567
i58        6.036       9.771       5.541       9.350       4.132       8.064       0.008       4.553       4.192       0.157
i59        0.820       5.988       5.552       6.180       8.851       1.899       4.281       1.665       8.863       6.765
i60        8.633       0.928       9.965       6.168       0.008       6.089       1.737       3.112       7.289       0.847
i61        4.420       6.591       4.845       3.182       9.140       1.842       8.721       4.561       4.589       1.241
i62        1.038       2.349       3.402       8.731       8.448       8.229       4.805       9.138       9.293       1.081
i63        3.506       8.600       3.405       2.131       9.264       3.607       8.760       1.481       4.560       2.683
i64        2.968       1.155       3.998       9.118       2.516       1.030       1.463       3.863       0.464       0.264
i65        1.540       0.727       8.286       3.998       4.172       9.721       2.434       3.620       6.303       2.429
i66        1.011       4.059       4.791       1.449       5.097       8.853       0.555       5.074       7.641       9.790
i67        7.204       8.719       2.995       7.539       8.438       4.682       6.549       3.781       3.589       2.545
i68        2.555       4.506       9.449       3.355       0.485       8.065       7.326       9.200       3.316       2.098
i69        0.471       8.830       0.928       8.369       4.638       0.002       1.566       7.050       2.803       6.356
i70        5.800       9.621       5.142       5.903       5.675       0.299       9.689       5.938       0.596       5.441
i71        1.274       4.205       8.814       7.166       3.136       9.930       0.553       6.191       8.044       2.966
i72        9.589       6.948       6.314       6.160       5.230       1.410       8.367       8.921       6.965       3.118
i73        3.558       7.611       1.364       7.166       9.637       4.419       2.645       4.442       3.967       3.669
i74        6.213       8.597       7.550       9.008       4.380       0.691       9.386       8.440       9.504       5.794
i75        0.352       4.074       0.574       5.320       1.124       8.938       2.417       6.422       2.908       8.136
i76        1.861       5.007       9.388       6.816       1.852       8.729       1.650       4.308       7.717       9.781
i77        9.445       2.488       8.865       8.844       9.649       7.491       6.476       7.484       5.232       6.861
i78        6.911       8.656       7.958       2.176       5.896       9.226       6.029       0.357       9.111       5.650
i79        3.248       3.901       2.993       2.190       8.217       1.527       9.505       0.319       7.345       1.105
i80        4.878       3.610       2.164       9.237       4.500       9.711       0.963       4.789       7.222       4.332
i81        1.582       1.007       8.055       3.987       1.171       8.744       1.449       1.777       5.452       4.686
i82        9.092       7.231       1.664       3.276       5.813       5.775       6.276       0.267       1.294       0.641
i83        3.111       5.785       8.098       6.792       7.357       3.386       2.242       9.000       8.294       3.162
i84        9.522       2.567       6.261       9.713       9.621       4.253       1.054       0.771       6.441       3.122
i85        5.952       6.064       6.337       9.582       0.823       1.254       6.052       7.415       8.475       3.525
i86        6.414       8.957       3.882       2.734       9.704       3.462       4.096       9.399       6.029       8.995
i87        2.847       2.222       5.748       5.095       5.575       3.442       3.983       7.762       0.282       3.624
i88        7.558       4.749       0.762       0.975       3.297       2.006       0.908       4.488       4.628       8.120
i89        4.500       9.543       1.226       4.066       8.864       7.032       8.749       5.551       2.556       2.592
i90        3.551       1.369       8.071       3.260       4.288       0.090       2.243       6.607       2.874       1.311
i91        4.071       1.616       8.618       3.777       8.886       2.700       7.774       4.228       4.299       2.491
i92        3.818       0.710       7.156       7.029       0.702       9.685       2.700       3.181       8.834       5.862
i93        3.821       9.730       6.708       9.511       7.183       4.436       8.797       4.698       4.639       3.714
i94        1.183       9.654       8.435       7.213       9.644       3.646       7.683       3.325       5.421       1.384
i95        3.137       0.799       9.342       4.943       6.789       6.916       0.547       2.402       8.827       1.006
i96        6.784       1.014       0.428       7.535       9.870       0.148       1.469       9.910       1.322       0.854
i97        1.859       7.902       8.645       7.479       3.895       7.950       6.210       7.614       5.803       6.636
i98        0.821       5.669       4.432       3.283       3.306       1.229       6.179       5.339       1.441       3.923
i99        0.148       8.708       2.455       8.032       0.840       9.872       5.583       6.819       8.596       5.867
i100       0.395       9.129       5.425       2.210       9.256       7.928       7.394       6.777       5.012       4.311


----     29 VARIABLE x.L  select vectors

i24 1,    i30 1,    i42 1,    i43 1,    i50 1,    i54 1,    i57 1,    i72 1,    i74 1,    i76 1,    i77 1,    i78 1,    i83 1
i84 1,    i86 1,    i93 1,    i97 1


----     29 VARIABLE numSelected.L         =           17  

此模型仍在1秒内解决。我敢肯定,存在更大的实例将变得更加难以解决。但是MIP求解器通常会很快找到好的解决方案,因此从某种意义上讲,MIP模型也可以用作启发式方法:只是更早停止(在证明最优性之前)。

相关问题