MATLAB线性规划学习笔记

线性规划的标准型

一般线性规划问题的数学表达式标准型:

在这里插入图片描述
其中z是目标函数,x是决策变量,c是决策权重。

a和b构成约束条件,用来约束决策变量。

一般线性规划问题的matlab标准型:

在这里插入图片描述
一般求解线性规划问题采用 matlab中的linprog函数。基本函数形式为 linprog(c,A,b),它的返回值是

向量x 的值。还有其它的一些函数调用形式(在 Matlab 指令窗运行 help linprog 可以看到所有的函数调

用形式),如:
在这里插入图片描述
这里fval 返回目标函数的值,LB 和UB 分别是变量x 的下界和上界,x 0 _{0} 0 是x 的初始值,

OPTIONS 是控制参数。

线性规划例题

例题1:线性回归问题的线性规划求解

在这里插入图片描述
通常的回归问题会采用最小二乘法解决。但是最小二乘法的有时候并不理想

在这里插入图片描述
其中 ϵ \epsilon ϵ为拟合值与真实值的偏差的大小。

为了建立线性规划模型,我们引入绝对离差的概念 。用d 1 i _{1i} 1i表示正离差,d 2 i _{2i} 2i表示负离差

(离差值均大于0)。则我们可以得到如下线性规划约束等式:
在这里插入图片描述
可以很容易推知,d 1 i _{1i} 1i+d 2 i _{2i} 2i就是第i组观测值y i _{i} i与拟合值之间的绝对离差。因此可以用线性规划问题解决绝对离差和的最小估计问题。
在这里插入图片描述
I n _{n} n为n阶单位矩阵

MATLAB代码求解如下:

clear all
x=[143,145,146,147,149,150,153,154,155,156,157,158,159,160,162,164]';
y=[88,85,88,91,92,93,93,95,96,98,97,96,98,99,100,102]';
n=ones(size(x));
Aeq=[n,x];
beq=y;
A=[];b=[];
k=length(x);
f=[0 0];
lb=[-100,-100];ub=[100,100];
for i=1:k%构造约束条件,和决策变量
p=zeros(k,2);
f=[f,1,1];
lb=[lb,0,0];
ub=[ub,100,100];
p(i,:)=[1,-1];
Aeq=[Aeq,p];
end
[d,fval]=linprog(f,A,b,Aeq,beq,lb,ub)
h=140:0.1:164;
g=d(1)+d(2).*h;
X=[n,x];
b=regress(y,X);%调用线性回归的regress函数
g1=b(1)+b(2).*h;
plot(x',y','*',h,g,'-',h,g1,'-','LineWidth',1);
legend('实际投点','绝对值偏差','regress函数')
grid on

x和y的值是网上找的一个线性回归问题的数据。决策变量一共有34个,前两个为我们所需要的拟合直线

的系数,后面的变量均为正负离差值。就是b 0 _{0} 0,b 1 _{1} 1,d 11 _{11} 11,d 21 _{21} 21,d 12 _{12} 12,d 22 _{22} 22,…

这是Aeq的数据结构如下:
在这里插入图片描述
这是f的数据结构:
在这里插入图片描述
前两位归为0,是因为我们的目标函数中没有用到拟合直线的系数。
结果如下:在这里插入图片描述

例题2:飞机轰炸

在这里插入图片描述
这个题目的约束条件比较明了,关键是构造目标函数。从题意得出,一共有8种选择,记每种选择的成功概率为a i _{i} i,则根据概率论中独立事件的计算公式我们可以得到目标函数:

在这里插入图片描述
然而,线性规划只能接受线性的目标函数和约束条件,所以我们还要进一步将目标函数线性化。
在这里插入图片描述
这样就将问题转化为可以用matlab标准型求解的问题了。
代码如下:

pro=[0.1 0.08 0.2 0.16 0.15 0.12 0.25 0.2];
dist=[450 480 540 600];
oil=zeros(1,8);
for i=1:4
    oil(2*i-1)=dist(i)/2+dist(i)/4+200;%算出每种选择的耗油量
    oil(2*i)=dist(i)/3+dist(i)/4+200;
end
%[1重,1轻,2重,2轻。。。。]
pro1=log(1-pro);
f=pro1;
A=[1 0 1 0 1 0 1 0;
   0 1 0 1 0 1 0 1;
   oil];
b=[48;32;48000];
lb=zeros(1,8);
ub=100*ones(1,8);
[x,fval]=intlinprog(f,1:8,A,b,[],[],lb',ub')
k=1;
for i=1:8
    k=k*(1-pro(1))^x(i);
end
realpro=1-k;

在这里插入图片描述
最后结果显示,最优方案可以使概率极为接近1.

小结

本文给出了线性规划的基本模型,和简单的求解方法。第一道例题侧重于约束函数的构造以及决策变量的构造技巧,第二道例题侧重于将非线性问题线性化。

参考文献:【1】线性规划在多元线性回归中的解法及应用。张爱兰,唐虹。昆明理工大学学报(自然科学版)39卷第1期,2014年2月。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值