Matlab的最优化实现方法之线性规划:linprog
一、概述
????????所謂最優化方法,即指采用數學方法研究系統的優化途徑及方案,為決策者提供科學決策的依據,諸如低成本、高回報、長壽命等問題。
? ? ? ? 最優化問題的數學描述:
????????
? ? ? ? 1、優化模型的三要素:變量、目標函數、約束條件;
? ? ? ? 變量(Variables):設計變量之間要求線星獨立,不存在確定的數學關系;依據設計變量的數量,將優化問題分為一維問題、N維問題,依據設計變量的離散性,分為離散優化和連續優化。
? ? ? ? 目標函數(objective functions):描述系統功能的函數,在滿足約束條件下達到極小或極大;依據目標函數的數量可將其分為單目標優化和多目標優化。
? ? ? ? 約束條件(constraint function):依據約束條件的類型分為有約束問題和無約束問題,依據約束方程與設計變量的關系分為線型約束和非線性約束,除此外,又有等式約束和不等式約束等。
????????2、Matlab所提供的優化函數:
????????
| 函數 | 描述 |
| linprog | 線性規劃 |
| fminbnd | 有邊界的標量非線性最小化 |
| fmincon | 有約束的非線性最小化 |
| quadprog | 二次規劃 |
| fminsearch | 無約束非線性最小化 |
| fgoalattain | 多目標規劃 |
| fminmax | 最大最小化 |
| fseminf | 半無限問題 |
? ? ? ? 除了上述函數以外,MATLAB還提供了優化工具箱(Optimization Toolbox),可視化交互函數的options,界面如下:
二、線性規劃:linprog
? ? ? ? 諸如線性規劃的研究已較為成熟,有單純形法、加快求解時間的修正單純形法、自變量有邊界條件的有界單純形法、以及為避免死循環而生的大M法;MATLAB提供的用于研究線型規劃(目標函數與約束函數均是線性無關的)問題的函數為linprog。
????????
? ? ? ? 上式中,目標函數f具有n個設計變量,即c、x、lb、ub為n維列向量;優化問題具有p個不等式約束、q個等式約束,即A為p×n維矩陣、Aeq為q×n維矩陣。
? ? ? ? Example 01:
????????
? ? ? ? Matlab code:
? ? ? ? %構建約束等式矩陣、約束不等式矩陣:
? ? ? ? A=[1,-1,1;3,2,4;3,2,0];
? ? ? ? b=[20;42;30];
? ? ? ? Aeq=[];
????????beq=[];
? ? ? ? %構建設計變量邊界條件:
? ? ? ? lb=[0;0;0];
? ? ? ? ub=[inf;inf;inf];
? ? ? ? %初始條件
? ? ? ? x0=[1;1;3];
? ? ? ? %構建目標函數
? ? ? ? ?f=[-5,-4,-6];%(Matlab中用系數矩陣表征多項式)
????????%調用優化函數linprog
? ? ? ? options=optimoptions(@linprog,'Algorithm','interior-point','Display','iter');
? ? ? ? [x,fval,exitflag,output]=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)
? ? ? ? 運行后顯示結果如下:
????????
?????????
?????????
? ? ? ??
總結
以上是生活随笔為你收集整理的Matlab的最优化实现方法之线性规划:linprog的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言中fork,C语言fork函数学习
- 下一篇: 机器人学导论二