当前位置: 首页 > news >正文

数学建模——最大最小化模型

1.概念

最大最小化模型(Maximin Model)是一种优化方法,旨在最大化最坏情况下的收益或最小化最坏情况下的损失

常见的现实问题有:

求最大值的最小化问题

最大风险的最低限度

最小化最坏情况下的损失等

2.一般数学模型 

\underset{x}{min}\left \{ max[f_1(x)],max[f_2(x)] ,...,max[f_m(x)]\right \}(找最大值里面最小的)

s.t.\left\{\begin{matrix} Ax\leq b \\ Aeq\cdot x=beq \\ C(x)\leq 0 \\ Ceq(x)=0 \\ VLB\leq X\leq VUB \end{matrix}\right.

3.例题

 建立模型:

\underset{(x,y)}{min}\left \{ \underset{i}{max}[|x-a_i|+|y-b_i|] \right \}

s.t.\left\{\begin{matrix} 4\leq x \leq 16 \\ 3\leq y \leq 11 \end{matrix}\right.

函数套用:

fminimax
fun把目标函数定义成一个单独的函数文件(min)
x0决策变量的初始值
A,b线性约束不等式变量系数矩阵和常数项矩阵(左侧系数和右侧向量,支持\leq or<
Aeq,beq线性约束等式变量系数矩阵和常数项矩阵(左侧系数和右侧向量)
lb,ub决策变量的最小与最大取值(变量上下界)
nonlcon非线性约束(包括不等式与等式)
option求解非线性规划使用的方法

注意:fminimax函数与非线性规划的函数用法基本上一样,但是目标函数需要用函数向量表示如:

function \; f=fun(x)

f=zero(m,1)

f(1)=\cdots

f(2)=\cdots

          \vdots

f(m)=\cdots

代码:

%最大最小值问题
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 向量 f
    x(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个函数向量

http://www.dtcms.com/a/305507.html

相关文章:

  • 关于mysql时间类型和java model的日期类型映射
  • anaconda和Miniconda安装包32位64位皆可,anaconda和Miniconda有什么区别?
  • 【33】C# WinForm入门到精通 ——表格布局器TableLayoutPanel【属性、方法、事件、实例、源码】
  • JetBrains Annotations:从入门到落地,彻底告别 NullPointerException
  • Vue路由钩子完全指南
  • Linux ARM 平台 C 语言操作 Excel 文件的常用库与工具汇总(支持 xls 和 xlsx)
  • 【 建模分析回顾】[MultiOutputClassifier]MAP - Charting Student Math Misunderstandings
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-51,(知识点:stm32,GPIO基础知识)
  • Java stream 并发问题
  • 2025年6月电子学会青少年软件编程(C语言)等级考试试卷(二级)
  • 潇洒郎: Kafka Ubuntu 安装部署,命令行或者python生产数据与消费数据(kafka-python)
  • makefile中include *.d文件的作用
  • 安全和AI方向的学习路线
  • aws(学习笔记第五十课) ECS集中练习(2)
  • 项目目标如何拆解,才能提高执行效率和效果
  • 获取TensorRT引擎文件(.engine)版本号的几种方法
  • GitPython02-Git使用方式
  • 【Datawhale AI夏令营】科大讯飞AI大赛(大模型技术)/夏令营:让AI理解列车排期表(Task3)
  • Elasticsearch 全文检索与过滤
  • MyBatis Plus Wrapper 详细分析与原理
  • 设计模式十四:适配器模式(Adapter Pattern)
  • MCP提示词工程:上下文注入的艺术与科学
  • 【计算机视觉与代码大模型全景解析:从理论基础到学习路线】
  • VSCode高效集成开发全流程优化
  • [论文阅读] 人工智能 + 软件工程 | 增强RESTful API测试:针对MongoDB的搜索式模糊测试新方法
  • Jaeger理论、实战、问题记录
  • Python 中使用 OpenCV 库来捕获摄像头视频流并在窗口中显示
  • RAG实战指南 Day 28:RAG系统缓存与性能优化
  • Web3:赛道划分与发展趋势解析
  • JDBC编程笔记