多目标规划和最大最小化问题(含lingo解决

理想点法,线性加权和法(多目标规划)

matlab函数fminimax(这个是最大最小化问题)

多目标规划和最大最小化问题(含lingo解决_第1张图片

fminimax 

多目标规划和最大最小化问题(含lingo解决_第2张图片

%% 最大最小化模型  :   min{max[f1,f2,···,fm]}
x0 = [6, 6];      % 给定初始值
lb = [3, 4];  % 决策变量的下界
ub = [8, 10];  % 决策变量的上界
[x,feval] = fminimax(@Fun,x0,[],[],[],[],lb,ub)
max(feval)  %06-22记录 就记住吧人家这个函数内部就实现了,56行看一下,记住人家的格式足矣
%没必要深究了
% x =
%     8.0000    8.5000
% feval =
%    13.5000    5.5000    5.5000   12.5000    8.5000    8.5000    5.5000   13.5000    9.5000    0.5000
% 结论:
% 在坐标为(8,8.5)处建立供应中心可以使该点到各需求点的最大距离最小,最小的最大距离为13.5单位。

(Fun.m)文件
function f = Fun(x)
    a=[1 4 3 5 9 12 6 20 17 8];
    b=[2 10 8 18 1 4 5 10 8 9];
    %  函数向量
    f=zeros(10,1);
    for i = 1:10
        f(i) = abs(x(1)-a(i))+abs(x(2)-b(i));  
    end
end 

理想点法:

多目标规划和最大最小化问题(含lingo解决_第3张图片

多目标规划和最大最小化问题(含lingo解决_第4张图片

 书上p482也有

线性加权和法:略


lingo解决:

多目标规划和最大最小化问题(含lingo解决_第5张图片

model:
sets:
location/1..10/:a,b;
endsets

data:
a=1,4,3,5,9,12,6,20,17,8;
b=2,10,8,18,1,4,5,10,8,9;
enddata

min=@max(location(i):@abs(x-a(i))+@abs(y-b(i)));
!这里只用了max,我一开始还用了与for进行了嵌套,for在外在内怎么套都不行,
!发现去掉for就可以解出了,我认为是这个max自带for 的味道
@bnd(3,x,8);
@bnd(4,y,10);
end

多目标规划和最大最小化问题(含lingo解决_第6张图片

 结果和用matlab的结果一样,虽然x,y取值不同(lingo只给出一组解)

你可能感兴趣的:(数模,数模,lingo)