非凸函数求解

目录

0.题目如下

1.枚举法

2.贪心法

3.数学表达并优化

①转换成目标函数

②是否凸函数

③近似算法


0.题目如下

1.枚举法

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

 

2.贪心法

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

 

3.数学表达并优化

①转换成目标函数

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

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

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

 

②是否凸函数

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

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

 

③近似算法

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

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

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

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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值