2

我正在尝试找到一种解决优化问题的方法,如下所示:我有 22 个可以多次选择的不同对象。我有一个评估函数f,它接受多重性并计算总值。

f是线性(仿射)项分数的乘积,因此在允许的区域内是可微的,甚至是平滑的。

我想针对 22 个变量优化 f,附加条件是某些总和不能超过某些值(例如,如果 a,...,v 是我的变量,... a + e + i + m + q + s <= 9)。这样,所有的变量都是有界的。

如果 f 是严格单调的,这可以通过(最小修改)背包解决方案来最佳解决。然而,函数不是凸的。这意味着甚至不可能假设如果在一个空背包上拿一个对象 A 比 B 好,那么即使添加第三个对象 C 也可以这样选择(因为 C 可以将 B 的好处修改为比 A 更好)。这意味着不能使用贪心算法;

是否有类似的算法以最优(或至少接近最优)的方式解决此类问题?

编辑:根据要求,一个问题的例子(为简单起见,我选择了 5 个变量 a、b、c、d、e),例如,

f(a,b,c,d,e) = e*(a*0.45+b*1.2-1)/(c+d)

(每个变量只出现一次,如果这有帮助的话)另外,例如a+b+c=4d+e=3

问题是针对 a,b,c,d,e 作为整数进行优化。有很多优化算法适用于凸函数,但很少适用于非凸函数......

4

0 回答 0