matlab fminimax 例子,Matlab应用实例(8)—fminimax
說明: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),則數學模型為:
圖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)的距離。
圖?8-2需求點及供應中心
總結
以上是生活随笔為你收集整理的matlab fminimax 例子,Matlab应用实例(8)—fminimax的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 台式机没有显示计算机图标,为什么台式电脑
- 下一篇: 合并工具_你值得拥有这个PDF合并工具