当前位置: 首页>編程日記>正文

基于Matlab解决线性规划问题

基于Matlab解决线性规划问题

目录

引入:怎样理解线性和非线性

1、线性规划

2、非线性规划

        1、有约束条件

        2、无约束条件

3、二次规划问题

4、笔者总结


引入:

线性与非线性,常用于区别函数y = f (x)对自变量x的依赖关系。线性函数即一次函数,其图像为一条直线。其它函数则为非线性函数,其图像不是直线

在数学上,线性关系是指自变量x与因变量yo之间可以表示成y=ax+b ,(a,b为常数),即说x与y之间成线性关系。

不能表示成y=ax+b ,(a,b为常数),即非线性关系,非线性关系可以是二次,三次等函数关系,也可能是没有关系

1、线性规划(linprog)

线性规划特征:成员变量都是一次项,并且有约束条件,求最大或者最小值

线性规划得标准形式要求目标函数最小化,约束条件取等式,变量非负,不符合条件得要转化为标准形式(最多情况是加负号),

f是x1,x2,x3求最大最小值成员变量前面的系数,如果要求最大值先要转化为标准形式,最后输出前加负号,以列向量呈现。

a是约束条件成员变量前面的系数,标准形式是小于等于,如果大于等于要转换加负号,同一个式子的系数以行向量呈现(,),不同式子是列向量(;)

b是约束条件的值,以列向量呈现

aeq,beq分别是相等情况的系数和值,如果约束条件没有用"[ ]"代替,不能省略

最后输出[x,y]=linprog(f,a,b,aeq,beq,lb,ub)   lb,ub分别是上下限一般由zeros(i,j)指的是i(变量数)行j列的零矩阵代替若有具体条件具体分析

f=[2;3;-5];
a=[-2 5 -1;1 3 1];
b=[-10;12];
aeq=[1 1 1];
beq=7;
[x,y]=linprog(-f,a,b,aeq,beq,zeros(3,1));
fprintf('x1=%.4f,x2=%.4f,x3=%.4f\nz:%.4f\n',x,-y);




2、非线性规划

        1、无约束条件 

 ①fminunc函数

 求无约束多变量函数的最小值

                     x = fminunc(fun,x0)

 x = fminunc(fun,x0)从x0点开始,尝试找到fun中描述的函数的一个局部最小x。点x0可以是标量、向量或矩阵。

fmincon函数是默认从你给定的x0为中心开始搜索,直至找到函数的最小值,并返回距离x0最近的函数最小值对应的x值

这样我们在计算的时候就必须预先判定函数最小值的对应的x值的大概范围
确保我们定的初值x0在所求的x附近,以减少计算量

MATLAB实现步骤

  1、定义函数,并且文件要与函数名一致

  2、定义脚本,先写x0[i,j],然后再调用函数,最后看工作区的结果


对比:

    fminbnd单变量函数在范围内求极小值

这里写图片描述

 

 


2、有约束条件(前提是非线性)

     ①fmincon函数

基本语法:[x,fval]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)

 

  




3、二次规划问题 

特征:二次规划是非线性规划的一种,若某非线性规划的目标函数为自变量x的二次函数,约束条件又全是线性的,就称之为二次规划

        标准形式——

 

 

 

首先,向量x是很容易写出的,因为f(x)包含两个变量x1和x2,因此

                                ​​​​​​​        ​​​​​​​        

 其次,向量f只与两个变量x1和x2的一次项有关,所以fTx=-2x1-6x2,因此

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

 本例中,,这是由于x1的平方项(即x1x1)系数为1/2,所以第1行第1列的元素为1=2*(1/2),x2的平方项(即x2x2)系数为1,所以第2行第2列的元素为2=2*1,x1x2项(即x2x1)的系数为-1,所以第1行第2列和第2行第1列的元素均为-1。

总结:设矩阵H第i行第j列的元素大小为H(i,j),二次项xixj的系数为a(i,j);

注意就是x1x1,x2x2系数要乘以2

笔者总结 :

线性:

linprog  解决的是多元线性函数有约束条件下的的最大最小值问题

非线性:

除此之外共同点都是需要去定义目标函数且都是一次函数

fminunc 解决的是非线性多元无约束条件下的最大最小值问题

对比:fminbnd 解决得是非线性单元变量在给定得范围内得最大最小值

fmincon 解决的是非线性多元有约束条件下的最大最小值问题

二次规划:

quadprog 解决的是非线性且目标函数是二次,约束条件又是线性条件下的最大最小值问题

 

 

   

 


https://www.fengoutiyan.com/post/14035.html

相关文章:

  • 求解线性规划问题的主要方法
  • 线性规划问题解的形式有几种
  • 租金问题的线性规划
  • 线性规划问题的一般形式
  • 什么是线性规划问题
  • matlab解决线性规划问题
  • 线性规划分类
  • 线性规划原理
  • 鏡像模式如何設置在哪,圖片鏡像操作
  • 什么軟件可以把圖片鏡像翻轉,C#圖片處理 解決左右鏡像相反(旋轉圖片)
  • 手機照片鏡像翻轉,C#圖像鏡像
  • 視頻鏡像翻轉軟件,python圖片鏡像翻轉_python中鏡像實現方法
  • 什么軟件可以把圖片鏡像翻轉,利用PS實現圖片的鏡像處理
  • 照片鏡像翻轉app,java實現圖片鏡像翻轉
  • 什么軟件可以把圖片鏡像翻轉,python圖片鏡像翻轉_python圖像處理之鏡像實現方法
  • matlab下載,matlab如何鏡像處理圖片,matlab實現圖像鏡像
  • 圖片鏡像翻轉,MATLAB:鏡像圖片
  • 鏡像翻轉圖片的軟件,圖像處理:實現圖片鏡像(基于python)
  • canvas可畫,JavaScript - canvas - 鏡像圖片
  • 圖片鏡像翻轉,UGUI優化:使用鏡像圖片
  • Codeforces,CodeForces 1253C
  • MySQL下載安裝,Mysql ERROR: 1253 解決方法
  • 勝利大逃亡英雄逃亡方案,HDU - 1253 勝利大逃亡 BFS
  • 大一c語言期末考試試題及答案匯總,電大計算機C語言1253,1253《C語言程序設計》電大期末精彩試題及其問題詳解
  • lu求解線性方程組,P1253 [yLOI2018] 扶蘇的問題 (線段樹)
  • c語言程序設計基礎題庫,1253號C語言程序設計試題,2016年1月試卷號1253C語言程序設計A.pdf
  • 信奧賽一本通官網,【信奧賽一本通】1253:抓住那頭牛(詳細代碼)
  • c語言程序設計1253,1253c語言程序設計a(2010年1月)
  • 勝利大逃亡英雄逃亡方案,BFS——1253 勝利大逃亡
  • 直流電壓測量模塊,IM1253B交直流電能計量模塊(艾銳達光電)
  • c語言程序設計第三版課后答案,【渝粵題庫】國家開放大學2021春1253C語言程序設計答案
  • 18轉換為二進制,1253. 將數字轉換為16進制
  • light-emitting diode,LightOJ-1253 Misere Nim
  • masterroyale魔改版,1253 Dungeon Master
  • codeformer官網中文版,codeforces.1253 B
  • c語言程序設計考研真題及答案,2020C語言程序設計1253,1253計算機科學與技術專業C語言程序設計A科目2020年09月國家開 放大學(中央廣播電視大學)
  • c語言程序設計基礎題庫,1253本科2016c語言程序設計試題,1253電大《C語言程序設計A》試題和答案200901
  • 肇事逃逸車輛無法聯系到車主怎么辦,1253尋找肇事司機