Matlab随笔之线性规划
LP(Linear programming,线性规划)是一种优化方法,在优化问题中目标函数和约束函数均为向量变量的线性函数,LP问题可描述为:
min x
s.t.
A·x b
Aeq·x=beq
vlb x vub
其中 ,b,beq均为向量,A,Aeq为矩阵,x为向量变量.矩阵A和向量b是线性不等式约束条件的系数,
Aeq和beq是等式约束条件的系数.
在MATLAB中,用于LP的求解函数为linprog.其调用格式为:
[x,fval,lambda]=linprog(f,A,b,Aeq,beq,vlb,vub,x0,options)
其中f,A,b,是不可缺省的输入变量,x是不可缺省的输出变量,它是问题的解.vlb,vub均是向量,分别表示x的下界和上界,x0为x的起始点,options为optimset函数中定义的参数的值,fval是目标函
数在解x处的值,lambda为在解x处的lagrange乘子.lambda.lower对应于vlb,lambda.upper对应于ulb,lambda.ineqlin是对应于线性不等式约束的,lambda.eqlin是对应于线性等式约束的.
例子1
>>% 求解下列线性规划问题
% max z=2x1+3x2-5x3
% s.t. x1+x2+x3=
% 2x1-5x2+x3>=
% x1+3x2+x3<=
% x1,x2,x3>= f=[;;-];%目标函数列矩阵
A=[-,,-;,,];%不等矩阵
b=[-;];
Aeq=[,,];%相等矩阵
beq=;
x=linprog(-f,A,b,Aeq,beq,zeros(,));
%zeros(m,n)产生m×n的double类零矩阵,zeros(n)产生n×n的全0方阵
value=f'*x%目标值,其值等于[x,y]=linprog(-f,A,b,Aeq,beq,zeros(3,1))的-y
Optimization terminated. value = 14.5714 >> x x = 6.4286
0.5714
0.0000 >>
例子2
>> % 求解下列线性规划问题
% min z=2x1+3x2+x3
% s.t. x1+4x2+2x3>=
% 3x1+2x2>=
% x1,x2,x3>=
f=[;;];
A=[-,-,-;-,-,];
b=[-;-];
x=linprog(f,A,b,[],[],zeros(,))%无等式,用[]代替
value=f'*x %其值等于[x,y]=linprog(f,A,b,[],[],zeros(3,1))的y
Optimization terminated. x = 0.8066
1.7900
0.0166 value = 7.0000 >>
例子3
% min z=|x1|+|x2|+|x3|+|x4|;
% s.t. x1-x2-x3+x4=;
% x1-x2+x3-*x4=;
% x1-x2-*x3+*x4=-0.5
%目标函数
objfun=@(x)abs(x())+*abs(x())+*abs(x())+*abs(x())
%等式约束
Aeq=[ - -
- –
- - ];
beq=[ -0.5]';
x0=[ ];%给一个初值 很关键
x=fmincon(objfun,x0,[],[],Aeq,beq) %下面是根据的需要改进的程序
依据:|x|=u+v,x=u-v(u,v>=0) min z=[ ]*[u1 u2 u3 u4 v1 v2 v3 v4];
s.t. A=[ - - - -
- - - -
- - - -] x=[u1 u2 u3 u4 v1 v2 v3 v4]' b=[ -0.5]' Ax=b
x>= %目标函数
f=[ ];
%等式约束
Aeq=[1 -1 -1 1
1 -1 1 -3
1 -1 -2 3];
Aeq=[Aeq,-Aeq];
beq=[ -0.5]';
%边界条件
lb=zeros(,);
%调用linprog
x=linprog(f,[],[],Aeq,beq,lb) Optimization terminated.
x =
0.2500
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.2500
Matlab随笔之线性规划的更多相关文章
- Matlab随笔之分段线性函数化为线性规划
原文:Matlab随笔之分段线性函数化为线性规划 eg: 10x, 0<=x<=500 c(x)=1000+8x, 500<=x<=1000 300 ...
- Matlab随笔之矩阵入门知识
原文:Matlab随笔之矩阵入门知识 直接输入法创建矩阵 – 矩阵的所有元素必须放在方括号“[ ]”内: – 矩阵列元素之间必须用逗号“,”或空格隔开,每行必须用“;”隔开 – 矩阵元素可以是任何不含 ...
- Matlab随笔之画图函数总结
原文:Matlab随笔之画图函数总结 MATLAB函数画图 MATLAB不但擅长於矩阵相关的数值运算,也适合用在各种科学目视表示(Scientific visualization).本节将介绍MATL ...
- Matlab随笔之指派问题的整数规划
原文:Matlab随笔之指派问题的整数规划 注:除了指派问题外,一般的整数规划问题无法直接利用Matlab函数,必须Matlab编程实现分支定界法和割平面解法. 常用Lingo等专用软件求解整数规划问 ...
- Matlab随笔之求解线性方程
原文:Matlab随笔之求解线性方程 理论知识补充: %矩阵除分为矩阵右除和矩阵左除. %矩阵右除的运算符号为“/”,设A,B为两个矩阵,则“A/B”是指方程X*B=A的解矩阵X. %矩阵A和B的列数 ...
- Matlab随笔之插值与拟合(上)
原文:Matlab随笔之插值与拟合(上) 1.拉格朗日插值 新建如下函数: function y=lagrange(x0,y0,x) %拉格朗日插值函数 %n 个节点数据以数组 x0, y0 输入(注 ...
- Matlab随笔之插值与拟合(下)
原文:Matlab随笔之插值与拟合(下) 1.二维插值之插值节点为网格节点 已知m x n个节点:(xi,yj,zij)(i=1…m,j=1…n),且xi,yi递增.求(x,y)处的插值z. Matl ...
- Matlab随笔之判别分析
原文:Matlab随笔之判别分析 从概率论角度,判别分析是根据所给样本数据,对所给的未分类数据进行分类. 如下表,已知有t个样本数据,每个数据关于n个量化特征有一个值,又已知该样本数据的分类,据此,求 ...
- MATLAB规划问题——线性规划和非线性规划
1.线性规划 求线性规划问题的最优解有两种方法,一种方法是使用linprog命令,另一种是使用optimtool工具箱,下面分别介绍这两种方法. ①linprog命令 一般情况下,Linprog命令的 ...
随机推荐
- JS冲突解决方法
Prototype jquery 冲突解决: 在页面中同时存在jquery 和 prototype ,当用到 $ 的时候,难免产生冲突,所以一定要区分开来: <script type=&qu ...
- DIKW模型与数据工程(了解)
DIKW 体系 DIKW体系是关于数据.信息.知识及智慧的体系,可以追溯至托马斯·斯特尔那斯·艾略特所写的诗--<岩石>.在首段,他写道:"我们在哪里丢失了知识中的智慧?又在哪里 ...
- 修改Linux中的用户名 分类: B3_LINUX 2014-07-24 11:40 440人阅读 评论(0) 收藏
需要修改2个文件: /etc/hosts /etc/sysconfig/network 然后重启 1.修改/etc/sysconfig/network NETWORKING=yes HOSTNAME= ...
- Spring-boot更改成war包的方式
转载至: https://blog.csdn.net/zhuwei_clark/article/details/82114102 Step1 修改启动类 Step2 修改配置文件为properti ...
- [Angular] Implementing a ControlValueAccessor
So when you need to create a ControlValueAccessor? When you want to use a custom component as form c ...
- SVN入门图解教程(超详细)
SVN入门图解教程(超详细) 一.总结 一句话总结: 二.SVN入门教程 1. 什么是SVN SVN全名Subversion,即版本控制系统.SVN与CVS一样,是一个跨平台的软件,支持大多数常见的操 ...
- html5-2 html实体和颜色有哪些
html5-2 html实体和颜色有哪些 一.总结 一句话总结:网站配色用安全色. 1.颜色用什么类型的颜色(安全色)? 直接百度搜 安全色 即可 2.html实体常用哪6个,头尾符号是什么? 头是取 ...
- 雷观(十):管理自己的任务列表(TodoList)很重要
由幼年,到青年,再到成年,你会发现自己有越来越多的事情要做.参加工作后,很可能要在多个战线上同时忙碌. 最常见的有,工作(可能会加班加点).爱情(不少人忙着恋爱,需要花费很多心思).个人娱乐(玩游戏看 ...
- Android中实现iPhone开关
前一段时间在做项目的时候遇到了一个问题,美工在设计的时候设计的是一个iPhone中的开关,但是都知道Android中的Switch开关和IOS中的不同,这样就需要通过动画来实现一个iPhone开关了. ...
- Linux中vim编辑器莫名下方出现H的问题
在使用vim编辑文件的时候,不知道自己是按了哪个快捷键,导致了,每次编辑文件时,下方命令行出现数字+H的格式命令,使得整个文件没法编辑,强制退出后进入不能解决问题,各种文件的编辑都不行,找不出原因,最 ...