[x,fval,exitflag,output,lambda]=linprog(f,a,b,aeq,beq,lb,ub)
其中f、x、b、beq、lb、ub为向量,a、aeq为矩阵。

min z=f
s.t. a*x<=b
           aeq*x=beq
           lb<=x<=ub
x:线性规划最优解
fval:线性规划最优值
exitflag:输出标志 1 成功 -1 失败
output:算法和迭代情况
lambda: 存储情况

函数 linprog

格式 x = linprog(f,A,b)   %求min f ' *x   sub.to  ax<=b线性规划的最优解。
     x = linprog(f,A,b,Aeq,beq)   %等式约束,若没有不等式约束,则A=[ ],b=[ ]。
            x = linprog(f,A,b,Aeq,beq,lb,ub)   %指定x的范围,若没有等式约束 ,则Aeq=[ ],beq=[ ]
          x = linprog(f,A,b,Aeq,beq,lb,ub,x0)   %设置初值x0
          x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options)    % options为指定的优化参数
     [x,fval] = linprog(…)   % 返回目标函数最优值,即fval= f ' *x。
     [x,lambda,exitflag] = linprog(…)   % lambda为解x的Lagrange乘子。
     [x, lambda,fval,exitflag] = linprog(…)   % exitflag为终止迭代的错误条件。
     [x,fval, lambda,exitflag,output] = linprog(…)   % output为关于优化的一些信息

说明 若exitflag>0表示函数收敛于解x,exitflag=0表示超过函数估值或迭代的最大数字,exitflag<0表示函数不收敛于解x;若lambda=lower 表示下界lb,lambda=upper表示上界ub,lambda=ineqlin表示不等式约束,lambda=eqlin表示等式约束,lambda中的非0元素表示对应的约束是有效约束;output=iterations表示迭代次数,output=algorithm表示使用的运算规则,output=cgiterations表示PCG迭代次数。

例1: 求下面的优化问题
min       -5*x1-4*x2-6*x3
sub.to     x1-x2+x3&lt;=20
           3*x1+2*x2+4*x3&lt;=42
           3*x1+2*x2&lt;=30
           0&lt;=x1;0&lt;=x2;0&lt;=x3;

>>f = [-5; -4; -6];

>>A =  [1 -1  1;3  2  4;3  2  0];

>>b = [20; 42; 30];

>>lb = zeros(3,1);

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

结果为:

x =      %最优解

0.0000

15.0000

3.0000

fval =     %最优值

-78.0000

exitflag =     %收敛

1

output =

iterations: 6   %迭代次数

cgiterations: 0

algorithm: 'lipsol'   %所使用规则

lambda =

ineqlin: [3x1 double]

eqlin: [0x1 double]

upper: [3x1 double]

lower: [3x1 double]

>> lambda.ineqlin

ans =

0.0000

1.5000

0.5000

>> lambda.lower

ans =

1.0000

0.0000

0.0000

表明:不等约束条件2和3以及第1个下界是有效的

例2:max z=x1+x2
S.T. -2x1+x2<=4;
           x1-x2<=2
x1,x2>=0

f=[-1,-1]';
a=[-2 1:1 -1];
b=[4 2]
lb=zeros(2,1);
[x,fval,exitflag,output,lambda]=linprog(f,a,b,[],[],lb)

ck=ckab(q,w,p)
检查不等式约束时q=a,w=b       ck>=0满足 否则不满足
检查等式约束时       q=aeq,w=beq       ck=0满足 否则不满足

funv1(f,p)
f为多元线性齐次函数,它以列矩阵形式表示;
p表示相应的自变量的值,仍以列矩阵形式表示
在输出部分,为多元线性齐次方程f在p点的值

funv2(f,p)
f为多元线性齐次函数,它以字符串表示;
p表示相应的自变量的值,仍以列矩阵形式表示
在输出部分,为多元线性齐次方程f在p点的值

例3:
min z= -x(2)+2x(3)
s.t.x(1)-2x(2)+x(3)=2
x(2)-3x(3)+x(4)=1
x(2)-x(3) +x(5)=2
x(j)>=0 j=1,...5
x(4)和x(5)是不是松弛变量啊?不是的话,就是以下程序。

clear;clc
fmin=[0;-1;2;0;0]; %min z= -x(2)+2x(3)
Aeq=[1 -2 1 0 0 %s.t.x(1)-2x(2)+x(3)=2
0 1 -3 1 0 %x(2)-3x(3)+x(4)=1
0 1 -1 0 1] %x(2)-x(3) +x(5)=2 ;
beq=[2;1;2];

st=[0 0 0 0 0];
b=[0];
lb=zeros(5,1);
[x,fval,exitflag,output,lambda]=linprog(fmin,st,b,Aeq,beq,lb)

运行结果:
x =

6.5000
2.5000
0.5000
0.0000
0.0000

fval =
-1.5000

如果是松弛变量,则程序为:

clear;clc
fmin=[0;-1;2]; %min z= -x(2)+2x(3)
Aeq=[1 -2 1]%s.t.x(1)-2x(2)+x(3)=2

st=[0 1 -3 %x(2)-3x(3)+x(4)=1
0 1 -1] %x(2)-x(3) +x(5)=2 ;
beq=[2];
b=[1;2];
lb=zeros(3,1);
[x,fval,exitflag,output,lambda]=linprog(fmin,st,b,Aeq,beq,lb)

运行结果:
x =

6.5000
2.5000
0.5000

fval =
-1.5000

可以看出,无论是否加松弛变量x(4)和x(5),Matlab的结果都一样。

matlab学习-线性规划相关推荐

  1. matlab学习——线性规划

    matlab及lingo软件处理线性规划 文章目录 matlab及lingo软件处理线性规划 一.matlab线性规划求解 二.lingo求解线性规划问题 lingo可用来求解线性规划及非线性规划问题 ...

  2. matlab 线性规划_从零开始的matlab学习笔记——(37)线性规划——后传

    matlab应用--求极限,求导,求积分,解方程,概率统计,函数绘图,三维图像,拟合函数,动态图,傅里叶变换,随机数,优化问题....更多内容尽在个人专栏:matlab学习 呼,终于将matlab的优 ...

  3. Matlab学习一本通,matlab基础教程

    链接:https://pan.baidu.com/s/1uTCbiRfIxcrt6lmiy6_QlQ  提取码:f2dn  Matlab学习一本通,matlab基础教程 <MATLAB R201 ...

  4. MATLAB学习笔记0:学习须知

    阅读前请注意: 1. 该学习笔记是华中师范大学HelloWorld程序设计协会2021年寒假MATLAB培训的学习记录,是基于培训课堂内容的总结归纳.拓展阅读.博客内容由 @K2SO4钾 撰写.编辑, ...

  5. matlab 矩阵线性规划,MATLAB求解线性规划(含整数规划和0-1规划)问题

    对于这类线性规划问题,数学理论已经较为完善,可以有多种方法求解此类问题.但写这篇文章的目的并不是为了介绍数学理论,我们这里主要讲解如果利用工具求解这一类线性规划问题. 最著名,同时也是最强大的数学最优 ...

  6. MATLAB解决线性规划问题,学会使用linprog函数,在一个实例中演示linprog函数各参数的用法

    最近接触到了一个线性规划的题目,尝试用MATLAB解决,动手前想了很多思路,上网搜索了一下发现MATLAB中有专门的linprog函数专门解决线性规划问题,了解学习后果然十分方便.事实上,绝大部分的线 ...

  7. Matlab学习笔记——数据文件定位

    写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. 目录 数据文件定位 1.fseek函数 2.ftell函数 3.feof函数 数据文件定位 1.fseek函数 用于改变 ...

  8. MATLAB学习笔记(二)

    MATLAB学习笔记(二) 一.矩阵运算 矩阵分析 向量和矩阵的范数运算 矩阵的秩 矩阵的化零矩阵 矩阵的化简rref()函数 线性方程组 超定线性方程组求解 矩阵分解 1.对称正定矩阵的Choles ...

  9. MATLAB学习笔记(一)

    MATLAB 一.安装的目录结构 二.常用的菜单及工具 布局 设置路径 设置工作路径 三.常用命令 四. 基础知识 数据类型 复数类型 `inf 和 NaN` 字符与字符串 函数句柄 结构体 结构体的 ...

最新文章

  1. 从硬件开始实践物联网-物联网弹幕器的灵感!
  2. 华为云网络覆盖全球2500+站点,打造高品质、低成本接入体验
  3. a标签实现不跳转点击
  4. 操作系统(李治军) L11内核级线程
  5. PHP如何实现HTML页面静态化
  6. python logger_Python:logging 的巧妙设计!
  7. Sentinel服务熔断配置fallback和blockHandler_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0052
  8. C程序设计语言现代方法15:编写大型程序
  9. Python程序提示出现File stdin,line 1错误解决方法
  10. IDL实现高分一号数据辐射定标TASK(二)
  11. Java建造者模式(Builder模式)
  12. 机器学习(十七):网格搜索(Grid Search)和SVM
  13. c语言写的贪吃蛇在哪能运行,有没有可以帮我写c语言贪吃蛇的代码 cmd运行的
  14. Spring boot2.0 JpaRepository findOne的使用
  15. 界面自动化测试工具-Ksend
  16. css炫酷标题,炫酷 CSS 背景效果的 10 个代码片段
  17. 华为鸿蒙HarmonyOS 简介
  18. Borderlands 3 for Mac 无主之地3
  19. 下载 傅立叶变换 冷建华pdf_傅里叶变换_PDF图书下载_冷建华_免费PDF电子书下载_第一图书网...
  20. 虚拟机安装Linux系列教材 (二)- 关闭Hiper-V

热门文章

  1. python from numpy import,python zeros()使用(from numpy import *)-Go语言中文社区
  2. esp32 怎么分配freertos 堆栈大小_深度解剖~ FreeRtos阅读笔记2 任务创建、内核链表初始化...
  3. python flask html模板,python flask web开发实战 Jinja2模板
  4. linux 查看端口 程序,linux开发:Linux下查看端口占用
  5. java中date加1s_是否有一个java库将描述时间度量(例如“1d 1m 1s”)的字符串转换为毫秒?...
  6. 什么是单模单纤/双纤光纤收发器?
  7. java输出链表的值_[剑指offer] 从尾到头打印链表(三种方法) java
  8. 错误:在keystone中无法找到默认角色user_第四章 keystone认证组件安装1
  9. 创建二级索引_Mysql创建索引
  10. python解析多层嵌套json_Python爬虫解析多个嵌套JSON,多级,json