Matlab求解非線性規劃,fmincon函數的用法總結

Matlab求解非線性規劃,fmincon函數的用法總結

1.簡介

在matlab中,fmincon函數能夠求解帶約束的非線性多變量函數(Constrained nonlinear multivariable function)的最小值,便可以用來求解非線性規劃問題函數

matlab中,非線性規劃模型的寫法以下 $$ min\ f(x) \ s.t. \begin{equation}
\left{
\begin{array}{lr}
A \cdot x \leq b \ Aeq\cdot x =beq\ c(x)\leq0 \ ceq(x)=0 \ lb \leq x \leq ub
\end{array}
\right.
\end{equation} \ ~\ f(x)是標量函數,x,b,beq是向量,A,Aeq是矩陣 \ c(x)和ceq(x)是向量函數 $$優化

2.基本語法

[x,fval]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)

x的返回值是決策向量x的取值,fval的返回值是目標函數f(x)的取值spa

fun是用M文件定義的函數f(x),表明了(非)線性目標函數code

x0是x的初始值io

A,b,Aeq,beq定義了線性約束 ,若是沒有線性約束,則A=[],b=[],Aeq=[],beq=[]function

lb和ub是變量x的下界和上界,若是下界和上界沒有約束,則lb=[],ub=[],也能夠寫成lb的各份量都爲 -inf,ub的各份量都爲infclass

nonlcon是用M文件定義的非線性向量函數約束變量

options定義了優化參數,不填寫表示使用Matlab默認的參數設置語法

3.實例

示例,求下列非線性規劃: $$ min\ f(x)=x_1^2+x_2^2+x_3^2+8\ s.t. \begin{equation}
\left{
\begin{array}{lr}
x_1^2-x_2+x_3^2\geq0\ x_1+x_2^2+x_3^2\leq20\ -x_1-x_2^2+2=0\ x_2+2x_3^2=3\ x_1,x_2,x_3\geq0 \end{array}
\right.
\end{equation} $$ (1)編寫M函數fun1.m 定義目標函數:程序

function f=fun1(x);
f=x(1).^2+x(2).^2+x(3).^2+8;

(2)編寫M函數fun2.m定義非線性約束條件:

function [g,h]=fun2(x);
g=[-x(1).^2+x(2)-x(3).^2
    x(1)+x(2).^2+x(3).^3-20];
h=[-x(1)-x(2).^2+2
    x(2)+2*x(3).^2-3];

(3)編寫主程序函數

[x,y]=fmincon('fun1',rand(3,1),[],[],[],[],zeros(3,1),[],'fun2')

所得結果爲: $$ x_1=0.5522,x_2=1.2033,x_3=0.9478\ 最小值y=10.651 $$

相關文章
相關標籤/搜索