matlab中的函数fmincon可用于求可以求取多元函数的极值,其约束包括五种:1、线性不等式
约束;2、线性等式约束;3、变量约束;4、非线性不等式约束;5、非线性等式约束。
其形式如下:
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
求解问题的标准型为
min F(X)
s.t
AX <= b(线性不等式约束)
AeqX = beq(线性等式约束)
G(x) <= 0(非线性不等式约束)
Ceq(X) = 0(非线性等式约束)
lb <= X <= ub(变量约束)
matalb实例:
func.m
clc
clear
close all
fun=@(x)x(1)^2+x(2)^2+8;
x0=rand(2,1);
A=[];
b=[];
Aeq=[];
beq=[];
vlb=[0,0];
vub=[];
exitflag=1;
[x,fval,exitflag]=fmincon(fun,x0,A,b,Aeq,beq,vlb,vub,'mycon')
mycon.m
function [g,ceq]=mycon(x)
g=-x(1)^2+x(2);
ceq=-x(1)-x(2)^2+2;
其中,func是目标函数;x0是给定的初值;A,b对应线性不等式约束;Aeq,beq对应线性等式约束;vlb,vub对应变量约束;mycon对应非线性不等式和等式约束