【数学建模】数学规划问题

数学规划问题

A.a 概述

<1>什么是数学规划?
数学规划是运筹学的 ⼀个分⽀ , 其⽤来研究: 在给定的条件 下 (约束条件), 如何按照某 ⼀衡量指标 (⽬标函数)来寻求计划、 管理⼯作 中的优⽅案 。 (求 ⽬标函数在 ⼀定约束条件下的极值问题 。 )

<2>数学规划的一般形式
m i n ( 或 者 m a x ) z = f ( x ) min(或者max)\quad z=f(x) min(max)z=f(x) s . t . g i ( x ) < 0 , i = 1 , 2 , . . . , m ( 不 等 式 约 束 , ) s.t. g_i(x)<0, i=1, 2, ..., m(不等式约束,) s.t.gi(x)<0,i=1,2,...,m,也可能有等式约束 , 整数约束 或 两者皆有

x : 决 策 变 量 ( 一 般 有 多 个 自 变 量 ) x:决策变量(一般有多个自变量) x:

f ( x ) : 目 标 函 数 f(x):目标函数 f(x)

不 等 式 约 束 、 等 式 约 束 、 整 数 约 束 : 约 束 条 件 不等式约束、等式约束、整数约束:约束条件

例子:z为目标函数,x1x2x3为决策变量。
在这里插入图片描述

整数约束: x 1 , x 2 ∈ Z x_1, x_2\in Z x1,x2Z

<3>数学规划的分类

1 线性规划
如果⽬标函数 和 和约束条件均是决策变量的线性表达式 , 那么此时的数学规划问题就属于线性规划
1947年, 美国数学家丹⻬格 ( GB.Dantz.in)提出了 求解线性规划的单纯形法 , 奠定了这⻔学科的基础 。

2 ⾮线性规划
当⽬标函数和或者约束条件中有⼀个是决策变量 x 的⾮线性表达式, 那么 此时的数学规划问题就属于⾮线性规划 。
解决⾮线性规划要⽐线性规划困难得多 , ⽬前没有通⽤算法, ⼤多数算法都是在选定决策变量的初始值后 ,通过定的搜索⽅法 寻求优的决策变量。

3 整数规划
整数 规划是⼀类要求变量取整数值的数学规划,包括线性整数规划和非线性整数规划。
⽬前, 所流⾏的 求解整数规划 的算法往往只适⽤于线性整数规划, 所以本节学习 的求解均针对线性整数规划。

4 0-1规划
整数规划的特例 , 整数变量的 取值只能为 0 和 1 。

A.b 线性规划问题的求解

<1>MATLAB中线性规划的标准型式
m i n C T X ( 向 量 的 内 积 , C = [ C 1 C 2 . . . C n ] ) , X = [ x 1 x 2 . . . x n ] n 是 决 策 变 量 的 个 数 ) min C^TX(向量的内积,C= \begin{bmatrix} C1 \\C2\\.\\.\\.\\C_n \end{bmatrix} ),X=\begin{bmatrix} x1 \\x2\\.\\.\\.\\x_n \end{bmatrix} n是决策变量的个数) minCTX(C=C1C2...Cn)X=x1x2...xnn)

s . t . { A x ≤ b ( 不 等 式 约 束 ) A e q x = b e q ( 等 式 约 束 ) l b ≤ x ≤ u b ( 上 下 界 约 束 , 也 可 以 当 成 不 等 式 约 束 ) s.t.\begin{cases}Ax\le b(不等式约束)\\ A_{eq}x=b_{eq}(等式约束)\\ lb\le x \le ub(上下界约束,也可以当成不等式约束)\end{cases} s.t.AxbAeqx=beqlbxub

注意标准形式的符号,如果是求最大值,则将目标函数乘-1,如果约束的符号与上面标准形式展示的不同,则也用两边乘-来变成标准形式;
例子:

在这里插入图片描述

u b = [ i n f i n f i n f ] ( 可 以 不 用 写 ) ub=\begin{bmatrix}inf\\inf\\inf\end{bmatrix}(可以不用写) ub=infinfinf

如果题目给的约束不是大于等于或小于等于号,则需要根据对约束作一定的变换,如大于零可以写成大于等于0.00001。

<2>MATLAB求解线性规划的命令
[x, fval]=linprog[c, A, b, Aeq, beq, lb, ub, X0]

  • X0 表示给定Matlab迭代求解的初始值 ( ⼀般不⽤给)
  • C.A.b.Aeg.beq.lb.us 的意义和 标准型中 的意义 ⼀致
  • 若不存在不等式约束, 可⽤ " [ ] " 替代 A和b
  • 先不存在等式约束, 可⽤ " [ ] "替代 Aeq 和 beq
  • 若某个 x i x_i xi ⽆下界或 上界, 则 设置 l b ( i ) = − i n f , u b ( i ) = + i n f lb(i)=-inf,ub(i)=+inf lb(i)=infub(i)=+inf
  • 返回的X表示⼩值处的 x取值 ; fval表示最优解处时取得 的最小值。
  • 不是所有线性规划问题都有唯一解,可能无解或者无穷多解。
  • 如果求的是最大值,别忘了在最后给fval取反。

A.c 整数规划

整数规划分为:

  • 线性整数规划 Matlab可进⾏求解 ,线性的意思 :在线性规划的基础上 , 加⼊决策变量取整数的条件)
  • ⾮线性整数规划: ⽆特定算法, 只能⽤近似算法 , 如蒙特卡罗模拟 、 智能算法
  • 0- 1规划 : 特殊的整数规划 , Matlab中也只能求解线性01规划, 对于⾮线性 0-1规划也只能近似求解 。

<1>MATLAB线性整数规划求解
[x, fval]=linprog[c, A, b, Aeq, beq, lb, ub, x0] 线性规划
[x, fval]intlinprog[c, intcon, A, b, beq, lb, ub] 线性整数规划

注意:

  • intlinprog不能指定初始值
  • intcon参数可以指定哪些决策变量是整数。

例如:决策变量x1,x2,x3中,x1和x3是整数,则intion=[1,3]

<2>MATLAB线性0-1规划求解
仍然使用intlinpro函数,只不过在lb和ub上做文章。
例如
三个决策变量x1,x2,x3中,x1和x3是0-1变量,x2不限制,则 i n t c o n = [ 1 , 3 ] , l b = [ 0 − i n f 0 ] , u b = [ 1 i n f 1 ] intcon=[1,3], lb=\begin{bmatrix}0\\-inf\\0\end{bmatrix},ub=\begin{bmatrix}1\\inf\\1\end{bmatrix} intcon=[1,3],lb=0inf0ub=1inf1

A.d 非线性规划问题的求解

<1>MATLAB中非线性规划的标准型
m i n f ( x ) min f(x) minf(x)
s . t . { A x ≤ b , A e q x = b e q ( 线 性 条 件 ) C ( x ) ≤ 0 , C e q ( x ) = 0 ( 非 线 性 条 件 ) l b ≤ x ≤ u b s.t.\begin{cases}Ax\le b,Aeqx=beq(线性条件)\\ C(x)\le 0,Ceq(x)=0(非线性条件)\\lb\le x \le ub \end{cases} s.t.AxbAeqx=beq线C(x)0Ceq(x)=0线lbxub
注意:可能对部分决策变量有约束;注意标准型的负号

例子:
在这里插入图片描述
<2>MATLAB求解非线性规划的函数
[x, fval]=fmincon(@fun, x0, A, b, Aeq, beq, lb, ub, @nonfun, option)

  • ⾮线性规划中对于初始值 x0 的选取⾮常重要 , 因为⾮线性规划的算法 求解出来的 是⼀个局部优解 。 (线性规划不存在 这个 问题 )
  • 如果要求" 全局优解" ,有两种思路 : 1 给定不同的初始值 , 在⾥⾯找到⼀个优解 ; 2 先⽤蒙特卡罗 模拟, 得到⼀个蒙特卡罗解 , 然后 将这个解作为初始值来求优解 。
  • " option" 选项可以给定求解 的算法, ⼀共有四种 : interior-point (内点法) 、 sqp序列⼆次规划法) 、 active-set (有效集法) 以及 trust-region-reflective (信赖域 反射算法) 。
option=optimoptions('fmincon','Algorithm','以上算法名')
  • 不同的算法有其各⾃的优缺点和适⽤情况 , 我们 可以改变求解 的算法来看求解的结果是否变 好 了 。
  • "@fun"表示⽬标函数,我们要编写⼀个独⽴的 m ⽂件来存⽬标 函数 :
function f=fun(x)
	%x是一个向量
	% f=x1+x2+x3代码写成x(1)+x(2)+x(3)
	f=...
  • nonlfun " 表示⾮线性部分的约束 , 我们同样得编写⼀个独⽴的 m ⽂件任⽼存⾮线性约束条件 :
function [C, Ceq]=nonlfun(x)
	C=[非线性不等式约束1;
	    。。。
	    非线性不等式约束p;]
	Ceq=[非线性等式约束1...
	     非线性等式约束q]

A.e 最大最小化模型

<1>模型的一般模型
在博弈论中,我们常常遇到这样的问题:在最不利的条件下,寻求最有利的策略。在实际问题也有许多求最大值的最小化问题,例如急救中心选址问题就是要规划其到所有地点最大距离的最小值,在投资规划中要确定最大风险的最低限度等。为此对每个 x ∈ R n x\in R^n xRn,我们先求各目标值 f i ( x ) f_i(x) fi(x)的最大值,然后再求这些最大值中的最小值。
最大最小化问题的一般数学模型:
在这里插入图片描述

<2>模型求解函数
[x,fval]=fminmax(@Fun,x0,A,b,Aeq,beq,lb,ub,@nolfun,option)

  • Fun是一个函数向量。
function f=Fun(x)
	f=zeors)m,1;
	f(1)=...
	f(2)=...
	..._

A.f 多目标规划

若⼀个规划问题中有多个 ⽬标,例如企业在保证利润⼤时也要保证⽣产时产⽣的污染少 这种情况下我们 可以对 多 ⽬标 函数进⾏ 加权组合, 使 问题变为单⽬标规划 , 然后再利⽤之前学的知识进⾏求解。
注意:
1 要先将多个⽬标函数统⼀ 为最⼤化或⼩化问题后才可以进⾏ 加权组合
2 如果⽬标函数的量纲 不 相同 , 则 需要对其进⾏标准化 后再进⾏加权, 标准化的⽅法 ⼀般是⽤ ⽬标 函数除以某⼀个常量, 该常量是这个⽬标函数的某个取值, 具体取何值可根据 经验确定
3 对多 ⽬标函数进⾏加权 求和时, 权重需要由该问题领域的专家给定 , 在实际建模 ⽐赛 中, 若 ⽆特殊说明, 我们令权重相同 。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二进制人工智能

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值