matlab学习-线性规划
[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<=20
3*x1+2*x2+4*x3<=42
3*x1+2*x2<=30
0<=x1;0<=x2;0<=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学习-线性规划相关推荐
- matlab学习——线性规划
matlab及lingo软件处理线性规划 文章目录 matlab及lingo软件处理线性规划 一.matlab线性规划求解 二.lingo求解线性规划问题 lingo可用来求解线性规划及非线性规划问题 ...
- matlab 线性规划_从零开始的matlab学习笔记——(37)线性规划——后传
matlab应用--求极限,求导,求积分,解方程,概率统计,函数绘图,三维图像,拟合函数,动态图,傅里叶变换,随机数,优化问题....更多内容尽在个人专栏:matlab学习 呼,终于将matlab的优 ...
- Matlab学习一本通,matlab基础教程
链接:https://pan.baidu.com/s/1uTCbiRfIxcrt6lmiy6_QlQ 提取码:f2dn Matlab学习一本通,matlab基础教程 <MATLAB R201 ...
- MATLAB学习笔记0:学习须知
阅读前请注意: 1. 该学习笔记是华中师范大学HelloWorld程序设计协会2021年寒假MATLAB培训的学习记录,是基于培训课堂内容的总结归纳.拓展阅读.博客内容由 @K2SO4钾 撰写.编辑, ...
- matlab 矩阵线性规划,MATLAB求解线性规划(含整数规划和0-1规划)问题
对于这类线性规划问题,数学理论已经较为完善,可以有多种方法求解此类问题.但写这篇文章的目的并不是为了介绍数学理论,我们这里主要讲解如果利用工具求解这一类线性规划问题. 最著名,同时也是最强大的数学最优 ...
- MATLAB解决线性规划问题,学会使用linprog函数,在一个实例中演示linprog函数各参数的用法
最近接触到了一个线性规划的题目,尝试用MATLAB解决,动手前想了很多思路,上网搜索了一下发现MATLAB中有专门的linprog函数专门解决线性规划问题,了解学习后果然十分方便.事实上,绝大部分的线 ...
- Matlab学习笔记——数据文件定位
写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. 目录 数据文件定位 1.fseek函数 2.ftell函数 3.feof函数 数据文件定位 1.fseek函数 用于改变 ...
- MATLAB学习笔记(二)
MATLAB学习笔记(二) 一.矩阵运算 矩阵分析 向量和矩阵的范数运算 矩阵的秩 矩阵的化零矩阵 矩阵的化简rref()函数 线性方程组 超定线性方程组求解 矩阵分解 1.对称正定矩阵的Choles ...
- MATLAB学习笔记(一)
MATLAB 一.安装的目录结构 二.常用的菜单及工具 布局 设置路径 设置工作路径 三.常用命令 四. 基础知识 数据类型 复数类型 `inf 和 NaN` 字符与字符串 函数句柄 结构体 结构体的 ...
最新文章
- 从硬件开始实践物联网-物联网弹幕器的灵感!
- 华为云网络覆盖全球2500+站点,打造高品质、低成本接入体验
- a标签实现不跳转点击
- 操作系统(李治军) L11内核级线程
- PHP如何实现HTML页面静态化
- python logger_Python:logging 的巧妙设计!
- Sentinel服务熔断配置fallback和blockHandler_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0052
- C程序设计语言现代方法15:编写大型程序
- Python程序提示出现File stdin,line 1错误解决方法
- IDL实现高分一号数据辐射定标TASK(二)
- Java建造者模式(Builder模式)
- 机器学习(十七):网格搜索(Grid Search)和SVM
- c语言写的贪吃蛇在哪能运行,有没有可以帮我写c语言贪吃蛇的代码 cmd运行的
- Spring boot2.0 JpaRepository findOne的使用
- 界面自动化测试工具-Ksend
- css炫酷标题,炫酷 CSS 背景效果的 10 个代码片段
- 华为鸿蒙HarmonyOS 简介
- Borderlands 3 for Mac 无主之地3
- 下载 傅立叶变换 冷建华pdf_傅里叶变换_PDF图书下载_冷建华_免费PDF电子书下载_第一图书网...
- 虚拟机安装Linux系列教材 (二)- 关闭Hiper-V
热门文章
- python from numpy import,python zeros()使用(from numpy import *)-Go语言中文社区
- esp32 怎么分配freertos 堆栈大小_深度解剖~ FreeRtos阅读笔记2 任务创建、内核链表初始化...
- python flask html模板,python flask web开发实战 Jinja2模板
- linux 查看端口 程序,linux开发:Linux下查看端口占用
- java中date加1s_是否有一个java库将描述时间度量(例如“1d 1m 1s”)的字符串转换为毫秒?...
- 什么是单模单纤/双纤光纤收发器?
- java输出链表的值_[剑指offer] 从尾到头打印链表(三种方法) java
- 错误:在keystone中无法找到默认角色user_第四章 keystone认证组件安装1
- 创建二级索引_Mysql创建索引
- python解析多层嵌套json_Python爬虫解析多个嵌套JSON,多级,json