数学建模——最大最小化模型
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个函数向量