目标规划类模型

总述

  • 1.线性规划的短处
    在这里插入图片描述

  • 2.求解目标规划的思路
    a.加权系数法

    • 为每一目标赋一个权系数,把多目标模型转化成单一目标的模型。但困难是要确 定合理的权系数,以反映不同目标之间的重要程度。

    b.优先等级法

    • 将各目标按其重要程度不同的优先等级,转化为单目标模型。

目标规划的数学模型

目标规划的相关概念

  1. 正、负偏差变量
    在这里插入图片描述

  2. 绝对(刚性)约束和目标约束
    在这里插入图片描述

  3. 优先因子与权系数
    在这里插入图片描述

  4. 目标规划的目标函数
    在这里插入图片描述

例子

题目:
在这里插入图片描述
解:
在这里插入图片描述

目标规划的一般数学模型

在这里插入图片描述
注意:建立目标规划的数学模型时,需要确定目标值、优先等级、权系数等,它们具有一定的主观性和模糊性,可以用专家评定法给以量化

扫描二维码关注公众号,回复: 9584306 查看本文章

求解目标规划的序贯算法

  • 核心根据优先级的先后次序,目标规划问题分解成一系列的单目标规划问题,然后再依次求解
  • 对于k=1,2,…,q,求解单目标规划
    在这里插入图片描述

例子

在这里插入图片描述
在这里插入图片描述
解:
在这里插入图片描述
在这里插入图片描述

lingo求解

  1. 求第一级目标
medel:
sets: !定义集合;
variable/1..2/:x;
S_Con_Num/1..4/:g,dplus,dminus;
S_con(S_Con_Num,Variable):c; !类似二维数组;
endsets
data: !所需的数据;
g=1500 0 16 15;
c=200 300 2 -1 4 0 0 5;
enddata
min=dminus(1); !要求dminus最小,满足题意;
2*x(1)+2*x(2)<12;
@for(S_Con_Num(i): @sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i)=g(i));
end

在这里插入图片描述

  1. 求第二级目标
model:

sets:
variable/1..2/:x;
S_Con_Num/1..4/:g,dplus,dminus;
S_con(S_Con_Num,Variable):c;
endsets
data:
g=1500 0 16 15;
c=200 300 2 -1 4 0 0 5;
enddata
min=dminus(2)+dplus(2);
2*x(1)+2*x(2)<12;
@for(S_Con_Num(i): @sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i)=g(i));
dminus(1)=0;  ! 一级目标约束,为了不影响这级的计算 ;
@ for(variable:@ gin(x));
end

在这里插入图片描述
3. 求第三级目标

model:

sets:
variable/1..2/:x;
S_Con_Num/1..4/:g,dplus,dminus;
S_con(S_Con_Num,Variable):c;
endsets
data:
g=1500 0 16 15;
c=200 300 2 -1 4 0 0 5;
enddata
min=3*dplus(3)+3*dminus(3)+dplus(4);!三级目标函数;
2*x(1)+2*x(2)<12;
@for(S_Con_Num(i): @sum(Variable(j):c(i,j)*x(j))+dminus(i)-dplus(i)=g(i));
dminus(1)=0;  ! 一级目标约束,为了不影响这级的计算 ;
dplus(2)+dminus(2)=0;!二级目标约束;
@ for(variable:@ gin(x));
end

在这里插入图片描述

多目标规划的Matlab解法

在这里插入图片描述

fgoalattain()函数

在这里插入图片描述

例题1

在这里插入图片描述
在这里插入图片描述
代码:

a=[ -1 -1 0 0;
    0 0 -1 -1;
    3 0 2 0;
    0 3 0 3;];
b=[-30 -30 120 48]';
c1=[-100 -90 -80 -70]; %用于求解单个函数的目标值
c2=[0 3 0 2];
fun = @ (x) [c1;c2]*x %用匿名函数定义目标向量
[x1,g1]=linprog(c1,a,b,[],[],zeros(4,1)) % 用于求解第一个目标函数的额目标值
[x2,g2]=linprog(c2,a,b,[],[],zeros(4,1)) % 用于求解第二个目标函数的额目标值
g3=[g1;g2]; %目标goal的值
[x,fval]=fgoalattain(fun,rand(4,1),g3,abs(g3),a,b,[],[],zeros(4,1)) %这里权重weight=目标goal的绝对值

发布了34 篇原创文章 · 获赞 18 · 访问量 5114

猜你喜欢

转载自blog.csdn.net/qq_43786066/article/details/104599509