MATLAB多目標優化函數fminimax

一、算法原理

對於多目標優化問題,matlab提供了fminimax函數。

1、目標函數:  min Z  ,Z爲多目標優化函數

             s.t  A*x\leq b

                   Aeq*x= beq

                   C(x)\leq 0

                   Ceq(x)= 0

                   lb\leq x\leq ub

2、調用格式

x = fminimax(fun,x0)  
x = fminimax(fun,x0,A,b)
x = fminimax(fun,x0,A,b,Aeq,beq)
x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub)
x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
x = fminimax(problem)

fun爲多目標函數文件,x0爲初始點,A爲等式約束係數矩陣,Aeq爲等式約束稀疏矩陣,lb,ub分別爲最優解x的下限和上限,nonlcon爲非線性約束,option爲選項設置,返回值x爲最優點。
[x,fval] = fminimax(...),返回解x處目標函數fun的值。
[x,fval,maxfval] = fminimax(...),返回在解x中求值的輸入fun中目標函數的最大值。
[x,fval,maxfval,exitflag] = fminimax(...),返回一個值exitflag,該值描述了fminimax的退出條件。
[x,fval,maxfval,exitflag,output] = fminimax(...),返回包含有關優化信息的結構輸出。
[x,fval,maxfval,exitflag,output,lambda] = fminimax(...),返回結構lambda,其字段包含解x處的拉格朗日乘數。

3、 如圖所示,求到A,B,C,D,E五個點的距離都比較近的點。

例二、存在不等式約束,其解的範圍爲[5,6]即x1∈(5,6)  x2∈(5,6)。

例三、存在等式約束,其解在x1-x2+1=0這條直線上。

例四、存在非線性約束,其解在x1^2-x1-x2+2=0,圓心爲(5,5)半徑爲3的圓內。

matlab代碼

%% 最大最小化
function d=demo_9_23_1(x) %目標函數文件
d(1)=sqrt((x(1)-2)^2+(x(2)-10)^2);
d(2)=sqrt((x(1)-5)^2+(x(2)-13)^2);
d(3)=sqrt((x(1)-8)^2+(x(2)-9)^2);
d(4)=sqrt((x(1)-3)^2+(x(2)-8)^2);
d(5)=sqrt((x(1)-6)^2+(x(2)-6)^2);

%% x = fminimax(fun,x0)
x0=[5;5];
[x,fval]=fminimax(@demo_9_23_1,x0)

%例二,存在不等式約束
%% x = fminimax(fun,x0,A,b)  有線性不等式約束 
x0=[5.5;5.5];
A=[1 0;
   -1 0;
   0 1;
   0 -1;];
b=[6;-5;6;-5];
[x,fval]=fminimax(@demo_9_23_1,x0,A,b)
%例三 粗壯乃等式約束
%% x = fminimax(fun,x0,A,b,Aeq,beq) %線性等式約束
x0=[5.5;5.5];
Aeq=[1 -1;];
beq=[-1];
[x,fval]=fminimax(@demo_9_23_1,x0,[],[],Aeq,beq)
%例二的不等式約束也可以寫成如下形式
%% x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub) %解向量的上下限
x0=[5.5;5.5];
[x,fval]=fminimax(@demo_9_23_1,x0,[],[],[],[],[5;5],[6;6])
%例四。非線性約束
%% x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon) %非線性約束
%nonlcon存放非線性約束
x0=[5.5;5.5];
[x,fval]=fminimax(@demo_9_23_1,x0,[],[],[],[],[],[],@demo_9_23_2)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章