【数学建模】优化模型——规划模型

这篇具有很好参考价值的文章主要介绍了【数学建模】优化模型——规划模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在数学建模中,优化类问题是很常见的一种问题。这种问题里面通常涉及多个变量约束条件,并需要在这些变量和条件之下优化某个函数。最常见的例子就是,“达到最好效果”、“取得最大利润”、“极大降低风险”等等。遇到这类字眼,应首先考虑优化模型求解。

对于优化类模型,又细分为不同的算法来解决问题。常见的算法有:规划模型微分方程模型图论网络优化概率智能优化算法等。其中,规划模型是最基础的模型,是其他算法底层的根本原理,因此要想深入掌握其他模型,首先要学会规划模型。这篇文章就详细介绍一下规划模型。
【数学建模】优化模型——规划模型,数学建模

1 概述

1.1 什么是数学规划

数学规划是运筹学的一个分支,用来研究:在给定的条件(约束条件)下,如何按照某一衡量指标(目标函数)来寻求计划、管理、工作中的最优方案。通俗来讲就是:求目标函数在一定约束条件下的极值问题

1.2 一般形式

m i n ( o r min(or min(or m a x ) max) max) z = f ( x ) z=f(x) z=f(x)
s . t . ( s u b j e c t s.t.(subject s.t.(subject t o ) to) to) g i ( x ) ≤ 0 , i = 1 , 2 , . . . g_i(x)≤0,i=1,2,... gi(x)0,i=1,2,...
其中, x x x决策变量(一般多个), f ( x ) f(x) f(x)目标函数

这样的形式有些抽象,下面详细展开各类数学规划问题。

2 线性规划

目标函数 f ( x ) f(x) f(x)和约束条件均是决策变量的线性表达式——线性规划(Linear Programming)。
举个例子:
【数学建模】优化模型——规划模型,数学建模
我们使用Matlab中的内置函数linprog来求解,底层实现原理为单纯形法,不做过多展开。这里需要一定的线性代数基础,先来看一下函数原型:

[x, fval] = linprog(c, A, b, Aeq, beq, lb, ub, X0)

解释一下其参数:

  1. X0表示给定matlab迭代求解的初始值(一般不用给出);
  2. c,A,b,Aeq,beq,lb,ub为标准型,下面详细说明;
  3. 返回值x表示最小值处x的取值,fval表示最优解处取得的最小值;

标准型
【数学建模】优化模型——规划模型,数学建模

注意事项

  1. 若不存在不等式约束(即$ A X ≤ b )或 ∗ ∗ 等式约束 ∗ ∗ (即 AX≤b)或**等式约束**(即 AXb)或等式约束(即AeqX=beq$)可以用”[]“代替A、b、Aeq、beq;
  2. 若某个x无下界或上界,可以用-inf(无穷小)和inf(无穷大)来约束;
  3. 不是所有问题都有唯一解,可能无解有无穷多解
  4. 如果求的是 m a x max max,可以先将目标函数两侧取负号化为标准型 m i n min min,再进行求解。

根据标准型,给出上面例子的matlab代码:

clear; clc
c = [-5 -4 -6]'; % '表示转置
A = [1, -1, 1
     3, 2, 4
     3, 2, 0];
b = [20 42 30]';
lb = [0 0 0]';
[x fval] = linprog(c, A, b, [], [], lb) % ub作为缺省参数,可以省略

运行即可得到结果:最小值fval为-78

3 非线性规划

顾名思义,目标函数和约束条件中存在非线性表达式。下面是一道例题:
【数学建模】优化模型——规划模型,数学建模
我们使用Matlab中的内置函数fmincon来求解。下面是函数原型:

[x, fval] = fmincon(@fun, X0, A, b, Aeq, beq, lb, ub, @nonlfun, option)

注意事项

  1. 非线性规划中初始值X0的选取非常重要,因为其算法最终得到的是一个局部最优解
  2. 要求解全局最优解,建议使用蒙特卡罗模拟得到一个蒙特卡罗解,然后用这个解作为初始值来求全局最优解;
  3. option选项可以给定求解的算法,一共有四种:interior-point(内点法);SQP(序列二次规划法);active-set(有效集法)以及trust-region-reflective(信赖域反射算法),各有各的优点,建议都都尝试一下
  4. @fun表示目标函数,需要编写一个独立的文件来存储目标函数:
    function f = fun(X)
    	% f = ...
    end
    
  5. @nonlfun表示非线性约束部分,同样需要编写一个独立文件:
    function [C, Ceq] = nonlfun(X)
    	% C = [非线性不等式约束1;
    		   ...
    		   非线性不等式约束n;]
    	% Ceq = [非线性等式约束1;
    		     ...
    		     非线性等式约束m;]
    end
    

标准型
【数学建模】优化模型——规划模型,数学建模
根据标准型,给出上面matlab代码:

% 文件fun.m
function f = fun(x)
    f = -x(1) ^ 2 - x(2) ^ 2 + x(1) * x(2) + 2 * x(1) + 5 * x(2);
end

% 文件nonlfun.m
function [c, ceq] = nonlfun(x)
    c = [(x(1) - 1) ^ 2 - x(2)];
    ceq = []; % 不存在非线性等式约束
end

% 文件main.m
clear; clc
format long g
x0 = [0, 0]; % 这里为了简便,随机给定一个初始值
A = [-2 3];
b = 6;
[x, fval] = fmincon(@fun, x0, A, b, [], [], [], [], @nonlfun)
fval = -fval

运行即可求解fval近似为-1。

改变求解算法的代码

% 以内点法为例
option = optimoptions('fmincon','Algorithm','interior-point')

4 整数规划

整数规划即为对数学规划加上变量取值必须为整数这一约束条件。其中,有线性整数规划和非线性整数规划两种问题。对于非线性整数规划,没有特定的算法来求解,只能使用近似算法(蒙特卡罗模拟、智能算法等),这里主要讲述线性整数规划。

对于线性整数规划,我们使用matlab内置函数intlinprog进行求解。其函数原型为:

[x, fval] = intlinprog(c, intcon, A, b, Aeq, beq, lb, ub) % 新版还有初始值参数X0,可以不指定

其参数含义和linprog类似,唯一不同的是intcon参数可以指定哪些变量是整数
例如:

% x1, x2, x3 其中x1,x3是整数
intcon = [1, 3];

0-1规划即在整数规划的基础上,变量取值只有0或1。典型例子为0-1背包问题,感兴趣的同学可以自行查阅相关题目。求解方法也很简单,只需要对约束变量的上下界设置为 [ 0 , 1 ] [0,1] [0,1]即可

由于整数规划求解函数和线性规划非常类似,这里就不进行例题演示。

5 最大最小化模型

这个模型起源于对策论中,在最不利的环境下,寻求最有利的策略的问题。下面是这类问题的一般数学模型:
【数学建模】优化模型——规划模型,数学建模
我们使用matlab中的内置函数fminimax来求解,下面是函数原型:

[x, fval] = fminimax(@Fun, X0, A, b, Aeq, beq, lb, ub, @nonlfun, option);

其函数参数和非线性规划函数fmincon类似,唯一不同的是第一个参数@Fun,代表目标函数 f 1 ( x ) , f 2 ( x ) , . . . , f m ( x ) f_1(x),f_2(x),...,f_m(x) f1(x),f2(x),...,fm(x),其作为一个向量表示,代码操作如下:

function f = Fun(x)
	f = zeros(m, 1)
	% f(1) = ...
	% f(2) = ...
	% ...
	% f(m) = ,,,
end

6 多目标规划

顾名思义,即在一个规划问题中有多个目标。这种情况下,我们需要对多木雕进行加权组合,把问题转化为单目标规划。举个例子:工厂生产时,既要考虑利润,也要考虑污染

注意事项

  1. 要将多个目标函数统一为最大化或最小化问题才可以进行加权组合
  2. 注意量纲问题,多个函数由于量纲不同,不能直接加权。例如,污染指标和利润指标明显不是一个数量级。常用做法是:用目标函数除以某一个常量,该常量是目标函数的一个取值,根据经验确定

【例题】
【数学建模】优化模型——规划模型,数学建模
首先要对目标函数进行加权组合,这里我们假设权重分别为0.4和0.6。用目标函数除以参考值以消除量纲:
f = 0.4 × f 1 30 + 0.6 × f 2 2 f=0.4×\frac{f_1}{30}+0.6×\frac{f_2}{2} f=0.4×30f1+0.6×2f2
然后就得到了一个单目标规划问题,根据上文的求解方法求解即可。

下面还有重要的一步就是进行敏感性分析。敏感性分析指的是从定量分析的角度研究有关因素发生变化对某一个或一组关键指标影响程度的一种不确定分析技术。说白了就是改变相关变量的数值来解释关键指标受影响大小的规律
在这个问题中,我们需要改变 f 1 f_1 f1 f 2 f_2 f2的权重,来观察对结果的影响。这里我们逐渐改变其权重,记录得到的 x 1 x_1 x1 x 2 的值 x_2的值 x2的值,最终得到的图像(代码部分交给大家自己实现):
【数学建模】优化模型——规划模型,数学建模

根据我们得到的结果,发现在0.333到0.334发生了突变,最后结合实际问题做出解释即可。文章来源地址https://www.toymoban.com/news/detail-824208.html

到了这里,关于【数学建模】优化模型——规划模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【优化数学模型】2. 动态规划DP方法的求解思路

    多阶段决策问题,就是要在允许的决策范围内,选择一个最优决策使整个系统在预定标准下达到最佳效果。 动态规划 (dynamic programming,DP) 是用来解决多阶段决策过程最优化的一种数量方法。其特点在于,它可以把一个n维决策问题变换为几个一维最优化问题,从而一个一个地去

    2024年02月21日
    浏览(30)
  • 数学建模 优化问题——数学规划

    优化问题 :在一系列客观或主观限制条件下,寻求使所关注的某个或多个指标达到最大(或最小)的决策 结构设计、资源分配、生产计划、运输方案中经常可见 通常的解决手段: 经验积累、主观判断 做试验、比优劣 建立数学模型,求解最优策略 解决优化问题的数学方法: 数

    2024年02月06日
    浏览(31)
  • 数学建模1:lingo软件求解优化模型

    本次数学建模学习笔记系列,以代码学习为主,附带建模及论文亮点记录 由于队友为两位经济学小伙伴,因此以大数据类型题目为主要学习方向 注:论文代码资料来源网络 1、结构清晰(后附该论文前两问的目录结构) 2、lingo求解优化模型,涉及函数循环与求和 3、表格很好

    2024年02月08日
    浏览(41)
  • 数学建模:BP神经网络模型及其优化

    🔆 文章首发于我的个人博客:欢迎大佬们来逛逛 设 x 1 , x 2 , . . . , x i x_1,x_2,...,x_i x 1 ​ , x 2 ​ , ... , x i ​ 为输入变量, y y y 为输出变量, u j u_j u j ​ 为隐藏层神经元 的输出, f 为 激活函数 的映射关系。 设 v i j v_{ij} v ij ​ 为第 i i i 个输入变量与第 j j j 个隐藏层神经

    2024年02月11日
    浏览(34)
  • 数学模型之整数规划(0-1规划)

    常见的规划问题大体四类 1.线性规划 2.非线性规划 3.整数规划 (0 1规划) 4.动态规划 提示: 规划中的变量(部分或全部)限制为整数时,称为整数规划。若在线性规划模型中, 变量限制为整数,则称为整数线性规划。目前所流行的求解整数规划的方法,往往只适 用于整数

    2024年01月19日
    浏览(28)
  • 【2023数学建模国赛】A题定日镜场的优化设计模型建立

    2023年全国大学生数学建模竞赛A题定日镜场的优化设计,目前已写出第四版国赛A题思路和模型详细公式,目录如下: 一、 问题重述... 1 二、 问题分析... 1 三、 模型假设... 6 四、 问题一模型的建立和求解... 6 4.1 定日镜场坐标系的建立... 6 4.2 定日镜相关参数及顶点坐标计算

    2024年02月09日
    浏览(27)
  • 2020年数维杯数学建模C题 垃圾转运优化模型设计求解全过程文档及程序

    原题再现:    随着我国人口的不断增加及城镇化进程的快速推进,城市面临了众多公共管理方面的难题。如生活垃圾、废气废水及排泄物等等的处理问题。截止2019年底我国拥有十多个千万规模以上的大型城市,城镇人口数量达到了8.48亿人。    数据统计结果表明我国的

    2024年02月07日
    浏览(26)
  • 数学模型:Python实现非线性规划

    上篇文章:整数规划 文章摘要:非线性规划的Python实现。 参考书籍:数学建模算法与应用(第3版)司守奎 孙玺菁。 PS:只涉及了具体实现并不涉及底层理论。学习底层理论以及底层理论实现:可以参考1.最优化模型与算法——基于Python实现 渐令 粱锡军2.算法导论(原书第3版)

    2024年02月08日
    浏览(45)
  • 【报童模型】随机优化问题&&二次规划

    参考文献:https://github.com/parthiv-borgohain/Newsvendor-Model—Stochastic-Programming 面对需求的不确定性,报童模型是做库存优化的常见模型。而标准报童模型假设价格是固定的,此时求解一个线性规划问题,可以得到最优订货量,这种模型存在局限性。因为现实世界中价格与需求存在一

    2024年02月13日
    浏览(35)
  • 优化模型:MATLAB非线性规划

    1.1 非线性规划的定义 非线性规划(Nonlinear Programming,NLP) 是一种数学规划方法,用于解决含有非线性目标函数和/或非线性约束条件的优化问题。它是线性规划的一种扩展形式,更加广泛适用于复杂实际问题。 非线性规划的目标是最小化(或最大化)一个非线性目标函数,

    2024年02月04日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包