非凸函数求解

目录

0.题目如下

1.枚举法

2.贪心法

3.数学表达并优化

①转换成目标函数

②是否凸函数

③近似算法


0.题目如下

非凸函数求解_第1张图片

1.枚举法

从一个集合开始罗列,并查看是否满足条件,如果不满足就继续罗列两个集合的组合,一直到找到答案为止。该方法时间复杂度高,但一定能保证找到全局最优解。

非凸函数求解_第2张图片

 

2.贪心法

从最多的集合的组合开始,一个一个删除,如果删除后仍能满足条件,就在这个基础上尝试删除下一个,一直到组合中所有的集合都不能被删除为止。该方法效率非常高,但是不能保证全局最优。

非凸函数求解_第3张图片

 

3.数学表达并优化

①转换成目标函数

根据题目,我们可以把目标转换成“函数”+“限制条件”的形式。

根据下图,我们设定变量xi:某集合是否被选中,如果是1,则被选中,如果是0,则未选中。

我们的条件:选的集合不可能是空的,因此xi>=1;xi只能从0和1里面选。

非凸函数求解_第4张图片

 

②是否凸函数

根据凸函数定义,首先定义域要是凸集,也就是给定两个点x1,x2,有α*x1+(1-α)*x2也在定义域内。由于x只能取0和1,因此定义域不是凸集。

该函数不是凸函数,因此需要其他办法解决。

非凸函数求解_第5张图片

 

③近似算法

目标函数,限制条件都是线性的,因此这属于线性规划问题(定义域只能选0或1),integer linear programming,但定义域不符合凸函数条件,因此我们可以将问题进行松弛化:

通过近似的算法得到近似最优解的解。

我们把定义域设置为[0,1],这样就成为了一个标准的线性规划问题,求解出结果后,我们设定一个阈值,比如0.5,大于0.5的取1,小于0.5的取0,这样就得到了最终0,1的结果。

非凸函数求解_第6张图片

 该方法也不能保证找到全局最优解。但对于非凸函数来说,已经没有其他更好的办法了。

你可能感兴趣的:(机器学习基础,人工智能,算法,非凸函数)