凸优化【0】之为什么学习CVX与从宏观学习CVX
来源:互联网 发布:firefox json美化插件 编辑:程序博客网 时间:2024/05/17 08:50
凸优化(Convex Optimization,Convex简称CVX,Optimization简称OPT)
一、为什么要学习CVX?
1. 优化问题
生活中你经常会遇到一些这样的问题:怎么走到目的地的路最短;怎么安排效率最高;怎么分配让成本最少或者是利润最高;这些问题可以归属为优化问题或者规划问题。
优化问题形式如下: 给定函数f:A→R,寻找一个元素x0∈A,使得对于所有A中的x,f(x0)≤f(x)(最小化);或者f(x0)≥f(x)(最大化)。
你一定见过这个例子,举例说明:设a+b=8,求a、b之积最大值。
其实就是这个不等式而已:
但是我们采用求导寻极值的方法,设b=8-a,(i.e.),两数之积ab为求最值(优化)的目标函数,a+b=8为约束条件(等式约束以及不等式约束)。
f(a)=a(8-a),对a求导(不再阐述过程)
2. CVX的重要性
凸优化问题是优化问题的一个重要分支,之所以要研究CVX,是因为CVX有一套非常完备的求解算法,如果能够将某个优化问题确认或者转化为CVX,那么能够快速给出最优解。有人的疑问就是非凸优化怎么办,事实上在非凸优化中CVX同样可以起作用,因为很多非凸优化问题可以转化为凸优化问题来解决。一旦将一个实际问题表述为凸优化问题,大体上意味着相应问题已经得到彻底解决。
凸优化的容易解决体现在一旦找到了一个局部最优解,那么它一定是最好的那个解(即全局最优的)。这句话怎么理解呢?首先即将介绍的凸集(任意两点solution的凸组合仍然在集合里),这样就可以保证算法在迭代过程中不会出现solution不在可行域的情况。凸集结合凸函数,具有非常好的性质【局部最优解即是全局最优解】。
在MATLAB或python等框架中利用现成的软件包来解决CVX问题,e.g. cvx (MATLAB),cvxopt (python).。
近年来凸优化在很多热门领域有所应用,e.g.信号处理、算法设计、机器学习、深度学习等。因此CVX就非常重要,有句玩笑话可以这么说:学好凸优化,走遍天下都不怕。
二、CVX要学些什么?
凸优化在大多数看来是深不可测的math理论,而学习CVX的基础关键是高等数学和线性代数。CVX的核心体系主要是凸集->凸函数->凸优化。
1. 凸集
2.凸函数
3.凸优化问题
4.凸优化问题求解
5.对偶问题(将一般优化问题转化为凸优化问题的有效手段)
- 凸优化【0】之为什么学习CVX与从宏观学习CVX
- 斯坦福大学Stephen P. Bold的凸优化工具包CVX-学习
- 凸优化工具箱cvx
- cvx 学习笔记
- 凸优化——CVX
- CVX:基于matlab的凸优化包
- 凸优化工具包CVX快速入门
- 凸优化工具包CVX的安装注册
- Matlab中凸优化工具包CVX的安装、注册与使用
- matlab凸优化工具箱——cvx简介
- CVX coding
- CVX基础
- cvx error
- 在matlab中运用cvx与Mosek
- 与cvx的恩怨情仇
- 解决Field II以及CVX凸优化工具箱在MATLAB环境下Invalid MEX File Error
- 用CVX实现SVM
- matlab调用CVX工具包
- 为数据库添加映射
- 6520.html
- iOS开发,两个app之间相互跳转(URL Scheme)
- Linux 学习(三)
- B
- 凸优化【0】之为什么学习CVX与从宏观学习CVX
- python傻瓜瓜入门
- Codeforces Round #425 (Div. 2) A.Sasha and Sticks
- 使用Git上传本地项目到oschina
- 边界值三点分析法
- java换行符
- java synchronized详解 转自网上资源
- jdk定时任务简述
- js中函数的参数