matlab fminimax 例子,Matlab应用实例(8)—fminimax
发布日期:2021-06-24 16:13:50 浏览次数:4 分类:技术文章

本文共 1114 字,大约阅读时间需要 3 分钟。

说明:fminimax用来求最小的最大值,比如城市建设消防站点时,考虑到最主要的因素是到最远的地方的用时(可换算为距离)最小,比如A方案到6个区域的用时为(1,1,1,1,1,12),B方案到6个区域的用时为(3 4 3 2 3 5),则虽然A方案总体用时较少,但是B方案优于A方案,因为咋该问题中消防安全(对每个区域)权重最大。此时正好用到最小最大值问题。

【例1】设某城市有某种物品的10个需求点,第i个需求点Pi的坐标为(ai,bi),道路网与坐标轴平行,彼此正交。现打算建一个该物品的供应中心,且由于受到城市某些条件的限制,该供应中心只能设在x界于[5,8],y界于[5.8]的范围之内。问该中心应建在何处为好?

P点的坐标为:

ai

1

4

3

5

9

12

6

20

17

8

bi

2

10

8

18

1

4

5

10

8

9

解:设供应中心的位置为(x,y),要求它到最远需求点的距离尽可能小,此处采用沿道路行走计算距离(如图8-1),则数学模型为:

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

图8-1供应中心到需求点的行走路线图

用MATLAB的fminimax函数进行求解

fun011.m

function f=fun011(x)

m=[1 4 3 5 9 12 6 20 17 8];

n=[2 10 8 18 1 4 5 10 8 9];

str=[repmat('   (',10,1) num2str(m')  num2str(n') repmat(')',10,1)];

plot(m,n,'o')

text(m,n,cellstr(str))

hold on

for i=1:10

f(i)=abs(x(1)-m(i))+abs(x(2)-n(i));

end

主函数

fun011yunxing.m

clc

tic

x0=[6;6];

A=[-1 0;1 0;0 -1;0 1];

b=[-5;8;-5;8];

lb=[0;0];

ub=[];

[x,fva,maxfval,exitflag,output]=fminimax(@fun011,x0,A,b,[],[],lb,ub)

plot(x(1),x(2),'r *')

toc

解得:

x =

8

8

fva =

13     6     5    13     8     8     5    14     9     1

maxfval =

14

exitflag =

4

output =

iterations: 3

funcCount: 14

……

时间已过 0.670458秒。

求解的同时我们用图8-2描述了该问题,*点就是所求点。且最小的最大供应距离14为从供应中心(8,8)到需求点(20,10)的距离。

0818b9ca8b590ca3270a3433284dd417.png

图 8-2需求点及供应中心

转载地址:https://blog.csdn.net/weixin_33744799/article/details/116111054 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:php://filter利用条件,浅谈php://filter技巧
下一篇:matlab中多边形滤波器,几种常见空间滤波器MATLAB实现

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月18日 04时34分27秒