目录
数学规划概述
数学规划是运筹学的一个分支,其研究目的在给定的条件下(称为约束条件),按照某一衡量指标(称为目标函数)来寻求计划、管理工作中的最优方案(称为最优解)。
规划问题又被认为是求解目标函数在一定约束条件下的极值问题。
一般数学形式
目标函数
约束条件,下标i表示第i各约束条件
x称为决策变量
分类
按照目标函数,约束条件以及决策变量,规划问题可以分为
- 线性规划,目标函数和约束条件都是决策变量的线性表达式
- 非线性规划,目标函数和约束条件含有决策变量的非线性表达式
- 整数规划,约束条件中限制某些或全部决策变量为整数,有线性整数规划模型和非线性证书规划模型之分
- 0-1规划,约束条件中限制某些或全部决策变量为0或1,可看作特殊的整数规划模型
- 多目标规划问题,目标函数不止一个,通常没有绝对的最优解,只有满意解
线性规划
线性规划是指数学规划模型中的目标函数,约束条件全部为严格的线性表达式,并且对决策变量是否为整数没有限制
完整数学模型
- 目标函数,其中为同一维度的列向量。
- 约束条件,第一个式子称为不等式约束,第二个不等式称为等式约束,第三个不等式称为上下界约束
如果是求取目标函数的最大值,可以对目标函数取负,求其最小值的最优解,也即是原来的目标函数的最优解
MATLAB求解
[x,fval]=linprog(C,A,b,Aeq,beq,lb,ub,x0);
% x0表示迭代求解的初始值,但可以不给
%
% 若不存在不等式约束,则令A=[],b=[]
%
% 若不存在等式约束,则灵Aeq=[],beq=[]
%
% 若第i个决策变量没有上界或下界,则灵lb(i)=-inf或ub(i)=+inf
%
% 返回值x表示目标函数取最小值时x的取值
%
% fval表示目标函数取得的最小值
非线性规划
完整数学模型
- 目标函数
- 约束条件
MATLAB求解
[x,fval]=fmincon(@fun,x0,A,b,Aeq,beq,lb,ub,@nonlfun,option)
%非线性规划的算法求解出来的是一个局部最优解,故非线性规划中对于初始值x0的选取非常重要
%如果需要求解全局最优解,有两种思路:
%①给定不同的初始值,在里面找到一个最优解‘
%②先用蒙特卡洛模拟,得到一个蒙特卡洛解,然后用这个解作为迭代初值x0
%option选项可以给定求解的算法,有四种可选择,'interior-point(内点法)','sqp(序列二次规划%法)','active-set(有效集法)','trust-region-reflective(信赖域反射算法)'
%@fun表示目标函数,要编写一个独立的m文件,存储目标函数
整数规划
MATLAB求解
[x,fval]=intlinprog(C,intcon,A,b,Aeq,beq,lb,ub);
%intcon参数表示决策变量中哪些限制为整数
%其余参数与线性规划求解器linprog的参数相同
最大最小化
完整数学模型
目标函数
约束条件
MATLAB求解
[x,fval]=fminimax(@Fun,x0,A,b,Aeq,beq,lb,ub,@nonlfun,option)
% 大写@Fun表示该参数与fmincon的@fun有所不同
% @Fun参数表示目标函数用一个函数向量表示
% 即
% f=zeros(m,1)
% f(1)=...
% f(2)=...
% 返回值x为决策变量的取值
% 返回值fval为目标函数向量的极小最优解
多目标规划
完整数学模型
目标函数
约束条件
对目标函数进行加权后转化为一个目标函数,即可用常规的规划求解
根据目标函数之间的权重系数,对权重系数进行敏感性分析,即更改权重,观察规划结果。