1.概念
最大最小化模型(Maximin Model)是一種優化方法,旨在最大化最壞情況下的收益或最小化最壞情況下的損失。
常見的現實問題有:
求最大值的最小化問題
最大風險的最低限度
最小化最壞情況下的損失等
2.一般數學模型?
(找最大值里面最小的)
3.例題
?建立模型:
函數套用:
fminimax | |
fun | 把目標函數定義成一個單獨的函數文件(min) |
x0 | 決策變量的初始值 |
A,b | 線性約束不等式變量系數矩陣和常數項矩陣(左側系數和右側向量,支持 |
Aeq,beq | 線性約束等式變量系數矩陣和常數項矩陣(左側系數和右側向量) |
lb,ub | 決策變量的最小與最大取值(變量上下界) |
nonlcon | 非線性約束(包括不等式與等式) |
option | 求解非線性規劃使用的方法 |
注意:fminimax函數與非線性規劃的函數用法基本上一樣,但是目標函數需要用函數向量表示如:
? ? ? ? ??
代碼:
%最大最小值問題
x0=[6,6];
lb=[4,3];
ub=[16,11];
[x,fval]=fminimax(@minimaxFun,x0,[],[],[],[],lb,ub);
max(fval)
x
function f=minimaxFun(x)a=[2 5 7 9 11 12 15 18];b=[3 8 12 5 9 2 7 4];f=zeros(8,1);for i= 1:8f(i)=abs(x(1)-a(i))+abs(x(2)-b(i));end
end
解釋一下函數代碼:
1 function f = fun(x)
定義一個名為
fun
的函數,輸入參數是 2×1 向量 x,輸出是 8×1 向量 fx(1)
代表供應中心的橫坐標,x(2)
代表縱坐標。
2 a = [ 1 4 3 5 9 12 6 20 17 8];
行向量
a
存放 8 個需求點的 橫坐標
3 b = [ 2 10 8 18 1 4 5 10 8 9];
行向量
b
存放 8 個需求點的 縱坐標
4 f = zeros(10,1);
預分配 8×1 的零向量
f
,用來存 8 個距離值。
預分配可以提高 MATLAB 效率,也可避免動態增長數組。
5 for i = 1:10
6 f(i) = abs(x(1) - a(i)) + abs(x(2) - b(i));
7 end
循環 8 次,依次計算當前供應中心 (x(1), x(2)) 到第 i 個需求點的直角距離
公式:|x ? a?| + |y ? b?|
結果寫入f(i)
。該函數把 二維決策變量 (x,y) 映射到 8 個目標函數
fminimax
會把這 8 個數中的最大值作為要最小化的“最壞情況”目標,從而完成
min_(x,y) max_i |x?a?| + |y?b?|
的求解。這里其實就是完成了8個函數向量