原文: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随笔之线性规划的更多相关文章

  1. Matlab随笔之分段线性函数化为线性规划

    原文:Matlab随笔之分段线性函数化为线性规划 eg: 10x,            0<=x<=500 c(x)=1000+8x,    500<=x<=1000 300 ...

  2. Matlab随笔之矩阵入门知识

    原文:Matlab随笔之矩阵入门知识 直接输入法创建矩阵 – 矩阵的所有元素必须放在方括号“[ ]”内: – 矩阵列元素之间必须用逗号“,”或空格隔开,每行必须用“;”隔开 – 矩阵元素可以是任何不含 ...

  3. Matlab随笔之画图函数总结

    原文:Matlab随笔之画图函数总结 MATLAB函数画图 MATLAB不但擅长於矩阵相关的数值运算,也适合用在各种科学目视表示(Scientific visualization).本节将介绍MATL ...

  4. Matlab随笔之指派问题的整数规划

    原文:Matlab随笔之指派问题的整数规划 注:除了指派问题外,一般的整数规划问题无法直接利用Matlab函数,必须Matlab编程实现分支定界法和割平面解法. 常用Lingo等专用软件求解整数规划问 ...

  5. Matlab随笔之求解线性方程

    原文:Matlab随笔之求解线性方程 理论知识补充: %矩阵除分为矩阵右除和矩阵左除. %矩阵右除的运算符号为“/”,设A,B为两个矩阵,则“A/B”是指方程X*B=A的解矩阵X. %矩阵A和B的列数 ...

  6. Matlab随笔之插值与拟合(上)

    原文:Matlab随笔之插值与拟合(上) 1.拉格朗日插值 新建如下函数: function y=lagrange(x0,y0,x) %拉格朗日插值函数 %n 个节点数据以数组 x0, y0 输入(注 ...

  7. Matlab随笔之插值与拟合(下)

    原文:Matlab随笔之插值与拟合(下) 1.二维插值之插值节点为网格节点 已知m x n个节点:(xi,yj,zij)(i=1…m,j=1…n),且xi,yi递增.求(x,y)处的插值z. Matl ...

  8. Matlab随笔之判别分析

    原文:Matlab随笔之判别分析 从概率论角度,判别分析是根据所给样本数据,对所给的未分类数据进行分类. 如下表,已知有t个样本数据,每个数据关于n个量化特征有一个值,又已知该样本数据的分类,据此,求 ...

  9. MATLAB规划问题——线性规划和非线性规划

    1.线性规划 求线性规划问题的最优解有两种方法,一种方法是使用linprog命令,另一种是使用optimtool工具箱,下面分别介绍这两种方法. ①linprog命令 一般情况下,Linprog命令的 ...

随机推荐

  1. swift学习第七天:字典

    字典的介绍 字典允许按照某个键来访问元素 字典是由两部分集合构成的,一个是键(key)集合,一个是值(value)集合 键集合是不能有重复元素的,而值集合是可以重复的,键和值是成对出现的 Swift中 ...

  2. Annotation研究的一些学习资料

    转自chanyinhelv原文Annotation研究的一些学习资料 下面是我最近对Annotation研究的一些学习资料,收集于此,供大家学习之用. 一.Annotation要素类介绍 在GeoDa ...

  3. oracle listener.ora的host不能使localhost,而应该是该机器名,否则不能用ip地址进行连接

    # listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/lis ...

  4. Django之文章归档

    1.任务描述:将博文按照时间月份归档 2.源代码: views.py def getPage(request, article_list): paginator = Paginator(article ...

  5. mysql zip文件安装

    bin目录下执行mysqld -install再执行mysqld --initialize-insecure 启动服务:net start mysql

  6. ios开发视频播放后台下载功能实现 :1,ios播放视频 ,包含基于AVPlayer播放器,2,实现下载,iOS后台下载(多任务同时下载,单任务下载,下载进度,下载百分比,文件大小,下载状态)(真机调试功能正常)

    ABBPlayerKit ios开发视频播放后台下载功能实现 : 代码下载地址:https://github.com/niexiaobo/ABBPlayerKit github资料学习和下载地址:ht ...

  7. [React] Use React.cloneElement to Extend Functionality of Children Components

    We can utilize React.cloneElement in order to create new components with extended data or functional ...

  8. Erlang epmd的角色以及使用

    本文链接地址: Erlang epmd的角色以及使用 很多同学误会了epmd的作用,认为epmd就是erlang集群的协议,我来澄清下: Epmd是Erlang Port Mapper Daemon的 ...

  9. springMvc中restful风格的api路径中把小数点当参数,SpringMvc中url有小数点

    在springMvc web项目中restful风格的api路径中有小数点会被过滤后台拿不到最后一个小数点的问题, 有两种解决方案: 1:在api路径中加入:.+ @RequestMapping(&q ...

  10. 汉高澳大利亚matrix矩阵计算器

    我在梦中的超级计算机超级计算机锯,使用大量阵列的cpu记忆,完成并行计算.一个手机制造商由于使用普通机械提供的服务,往往造成停机.是铁道部列车网络售票的事实. 无法使用云服务.上万台计算机并行处理,因 ...