您的位置:首页 > 其它

机器学习-学习笔记 线性模型(二)

2017-07-14 19:30 351 查看
先来了解一下线性规划。

在MATLAB中,线性规划用linprog函数进行实现。

[b]linprog(f,A,b) 线性规划求最优解[/b]

[x,fval,exitflag,output,lambda] = linprog(f,A,b)

[x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq)

[x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb,ub)

[x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb,ub,x0)

[x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb,ub,x0,options)

其中f,A,b,是不可缺省的输入变量,x是不可缺省的输出变量。f为函数表达式的系数,A是不等式左边的表达式的系数,B是A对应不等式右边的常数项(注意这里的等式是小于等于)。Aeq和beq是等式约束条件的参数(跟上述的A和B相似,只不过是等式)。它是问题的解.vlb,vub均是向量,分别表示x的下界和上界,x0为x的起始点,options为optimset函数中定义的参数的值,fval是目标函数在解x处的值,代表返回的最优解的情况。lambda为在解x处的lagrange乘子.lambda.lower对应于vlb,lambda.upper对应于ulb,lambda.ineqlin是对应于线性不等式约束的,lambda.eqlin是对应于线性等式约束的.

exitflag是规划返回的状态:

1、一阶最优性条件满足容许范围

2、X的变化小于容许范围

3、目标函数的变化小于容许范围

4、重要搜索方向小于规定的容许范围并且约束违背小于options.TolCon

5、重要方向导数小于规定的容许范围并且约束违背小于options.TolCon

0、到达最大迭代次数或到达函数评价

-1、算法由输出函数终止

-2、无可行点

output是执行的相关信息(迭代次数, 算法(相关算法介绍))



举个例子

比如求下面这个问题的最优解



f = [-40; -50];
A = [1 2; 3 2; 0 2];
b = [30; 60; 24];
x = linprog(f,A,b,[],[],[0; 0], []);
disp(x);
disp(x(1) * 40 + 50 * x(2));


输入:



输出:



接着做个小实验,看看能不能写出来一元二次的

max z = x + x2 (5x <= 20; x2 <= 4; x >= 0)

f = [-1, -1];
A = [5; 1];
b = [20; 2];
x = linprog(f,A,b,[],[],[0], []);


发现会报下面这个错误。提示说,A的数量必须与f的相同。



那我们将代码改成下面这样

f = [-1, -1];
A = [5 0; 0 1];
b = [20; 4];
Aeq = [1 -1];
beq = [0];
x = linprog(f,A,b,Aeq,beq ,[0; 0], []);


写到这里就会发现,无法表示x1和x2的关系是次方的关系,所以呢, linprog只能求多元一次的,那么怎么求多元二次呢?

[b]quadprog(H,f) 二次规划求最优解[/b]

[x,fval,exitflag,output,lambda] = quadprog(H,f)

[x,fval,exitflag,output,lambda] = quadprog(H,f,A,b)

[x,fval,exitflag,output,lambda] = quadprog(H,f,A,b,Aeq,beq)

[x,fval,exitflag,output,lambda] = quadprog(H,f,A,b,Aeq,beq,lb,ub)

[x,fval,exitflag,output,lambda] = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0)

[x,fval,exitflag,output,lambda] = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options)

参数跟lineprog介绍一样。

具体用法看这里二次规划问题和MATLAB函数quadprog的使用

等我理解了再将自己的理解补上。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: