当前位置:   article > 正文

多目标规划以及Matlab实现_多目标规划matlab

多目标规划matlab

预备知识:

目标规划

Matlab优化工具箱的的相关函数(linprog,fmincon)

线性规划:

linprog

常用调用格式:

x = linprog(f,A,b)

x = linprog(f,A,b,Aeq,beq)

x = linprog(f,A,b,Aeq,beq,lb,ub)

[x,fval] = linprog(___)

x = linprog(f,A,b,Aeq,beq,lb,ub) 定义设计变量 x 的一组下界和上界,使解始终在 lb ≤ x ≤ ub 范围内。如果不存在等式,请设置 Aeq = [] 和 beq = []。

[x,fval] = linprog(___) 返回目标函数 fun 在解 x 处的值:fval = f'*x。

上面的调用格式是基于线性规划的标准型来的,任何线性规划都可以转化为标准型

 

线性规划标准型 

例1 

 

  1. % linprog
  2. A=[-2 5 -1;1 3 1];
  3. Aeq=[1 1 1];
  4. lb=[0;0;0];
  5. b=[-10;12];
  6. beq=[7];
  7. f=[-2;-3;5];
  8. [x,fval]=linprog(f,A,b,Aeq,beq,lb,[]);
  9. x,fval=-fval

x_1=6.4286,x_2=0.5714,x_3=0是最优解

最优解的值为f=14.5714

非线性规划:

fmincon

x = fmincon(fun,x0,A,b)

x = fmincon(fun,x0,A,b,Aeq,beq)

x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)

x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)

[x,fval] = fmincon(___)

执行最小化时,满足 nonlcon 所定义的非线性不等式 c(x) 或等式 ceq(x)。fmincon 进行优化,以满足 c(x) ≤ 0 和 ceq(x) = 0。如果不存在边界,请设置 lb = [] 和/或 ub = []。

fun:目标函数

x0:自变量的初始值

A,b,Aeq,beq:线性规划标准型的参数,若没有线性约束条件,这里填写[].

lb,ub是列向量,是自变量x的下界和上界,若没有上下界,填写[].

nonlcon:非线性约束条件,是一个含有自变量x的分量的列向量:

 创建一个m文件,命名为fun,m

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

 fun2.m

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

 main.m

[X,fval]=fmincon('fun',rand(3,1),[],[],[],[],zeros(3,1),[],'fun2')

运行结果 

 x1=0.5522,x2=1.2033,x3=0.9478f=10.6511

多目标规划:

理论部分:

传统的多目标规划有多种方法,下面我列举3个常用的方法

1.序贯法

序贯法是确定目标函数的重要性次序,根据次序,先求解第一个目标函数最优解对应的解空间,缩小定义域,使得第一个目标函数在当前定义域下的最优解不变差,反复这个过程,在依次求解后续目标函数的解空间,在这里我们保证,前面的目标函数解的最优性不被后面的目标函数影响,这就体现了重要性次序。

目标函数:这里设第i次求解时,定义域为D_i,,第i次求解时,f_i的最优解为f_i^*

Minf(x)=i=1rPifi(x)

xD0

第1次求解:

Minf1(x)

s.t.xD1

第2次求解:

Minf2(x)

s.t.xD2=D1{x|f1(x)f1}

第k次求解:

Minfk(x)

s.t.xDk=Dk1{x|fk1(x)fk1}

直到定义域变为空集

这是一个客观的算法

2.加权法

加权法是对每个目标函数加权处理

这里的约束条件是 minf(x)=i=1kωifi(x)

线性加权的权重通常需要专家来判定,主观性较强,但是这个模型比较直观,求解也相对简单,确定了权重后,就转化为单目标规划问题,利用前面单目标规划的代码即可解决问题

3.理想点法

多目标规划的每个目标函数都有最优解,我们记录每个目标函数的最优解,每个目标函数的最优解构成的向量称为理想解,重新构造一个目标函数,这个目标函数的目的是使自变量的取值在可行解的范围内,距离理想解最近。

MinZ=distance(f(x),f)

常见的距离是欧氏距离

MinZ=i=1r(fi(x)fi)

例题:

  1. fx1=[3;-2];
  2. a=[2 3;2 1];
  3. b=[18;10];
  4. lb=[0;0];
  5. ub=[];
  6. [x1,fav1]=linprog(fx1,a,b,[],[],lb,ub);
  7. fx2=[-4;-3];
  8. a=[2 3;2 1];
  9. b=[18;10];
  10. lb=[0;0];
  11. ub=[];
  12. [x2,fav2]=linprog(fx2,a,b,[],[],lb,ub);
  13. x0=[1;1];
  14. a=[2 3;2 1];
  15. b=[18;10];
  16. lb=[0;0];
  17. ub=[];
  18. x=fmincon('((-3*x(1)+2*x(2)-12)^2+(4*x(1)+3*x(2)-24)^2)^(1/2)',x0,a,b,[],[],lb,ub)
  19. f1=-3*x(1)+2*x(2)
  20. f2=4*x(1)+3*x(2)

求解结果:

x =

    0.5268

    5.6488

f1 =

    9.7171

f2 =

   19.0537

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/55631
推荐阅读
相关标签
  

闽ICP备14008679号