在博 弈 论 中 有 一 个 经 典 理 论 —— 最 大 最 小 策 略 ( Minimax strategy ) , 是 由 博 弈 论 奠 基 人 约翰·冯·诺伊曼在1928年提出的一种在理性行为基础上做的保守博弈策略:使得博弈者的最小收入最大化的策略。这个思想再实际问题中也有很多应用,比如:在投资规划中要确定最大风险的最低限度,所以对于每个xi,我们先求出目标值fi(x)的最大值,然后再在这些最大值中取最小值
一、数学模型建立:
其中C(x)<=0,Ceq(x)=0,为非线性不等式,其他的参数都与线性规划中的含义相同
二、利用fminimax函数求解
该函数与非线性规划函数用法基本一致,但注意目标函数需要用函数向量表示
典例:选址问题
我们易知两点之间直线最短,那现在我们肯定要考虑不同的中心,路程最远的情况下,哪个中心的情况下距离最短。则我们应该使用最大最小值规划法
- 模型建立
这里路程最远,肯定是按着网格线走对吧,那么我们可以列出函数表达式为:
2.约束条件
那么我们就可以利用fminimax函数进行求解
%选址问题
clear,clc
%给定初始值
x0=[6,6];
lb=[3,4];%决策变量上界,直接用逗号分隔表示不同决策变量的取值范围
ub=[8,10];%决策变量下界
[x,feval]=fminimax(@fun,x0,[],[],[],[],lb,ub);%此时要单独写一个fun函数
max = max(feval);%得到最大距离取到最小时的最大距离
注意这里参数fun我们需要单独写一个函数fun
%建立目标函数
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初始化用来存储得到的函数值
f=zeros(10,1);
for i=1:10
f(i)=abs(x(1)-a(i))+abs(x(2)-b(i));%这里x(1)表示x,x(2)表示y
end
end