数学建模 | MATLAB学习 | 非线性规划
2018-02-04 16:45
811 查看
如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规划问题。一般说来,解非线性规划要比解线性规划问题困难得多。而且,也不像线性规划有单纯形法这一通用方法,非线性规划目前还没有适于各种问题的一般算法,各个方法都有自己特定的适用范围。
非线性规格的MATLAB解法
Matlab中的命令是
[x,fval]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
x的返回值是决策向量的取值,fval返回的是目标函数的取值,其中fun是用M文件定义的函数;x0是的初始值;A,b,Aeq,beq定义了线性约束Ax<=b, Aeq*x = beq ,如果没有线性约束,则A,b=[],Aeq=[],beq=[];lb和ub是变量的下界和上界,如果上界和下界没有约束,即无下界也无上界,则lb=[],ub=[],也可以写成
lb的各分量都为-inf,ub的各分量都为inf;nonlcon是用M文件定义的非线性向量函数c(x) , ceq(x);options定义了优化参数,可以使用Matlab缺省的参数设置。
实例:
最佳投资方案应是投资额最小而总收益最大的方案,所以这个最佳投资决策问题归结为总资金以及决策变量(取0或1)的限制条件下,极大化总收益和总投资之比。因此,其数学模型为
在一组等式或不等式的约束下,求一个函数的最大值(或最小值)问题,其中至少有一个非线性函数,这类问题称之为非线性规划问题。可概括为一般形式
对于一个实际问题,在把它归结成非线性规划问题时,一般要注意如下几点
(1)确定供选方案:首先要收集同问题有关的资料和数据,在全面熟悉问题的基础上,确认什么是问题的可供选择的方案,并用一组变量来表示它们。
(2)提出追求目标:经过资料分析,根据实际需要和可能,提出要追求极小化或极大化的目标。并且,运用各种科学和技术原理,把它表示成数学关系式。
(3)给出价值标准:在提出要追求的目标之后,要确立所考虑目标的“好”或“坏”的价值标准,并用某种数量形式来描述它。
(4)寻求限制条件:由于所追求的目标一般都要在一定的条件下取得极小化或极大化效果,因此还需要寻找出问题的所有限制条件,这些条件通常用变量之间的一些不等式或等式来表示。
解
(1)编写M函数fun1.m定义目标函数
function f=fun1(x);
f=sum(x.^2)+8;
(2)编写M函数fun2.m定义非线性约束条件
function [g,h]=fun2(x);
g=[-x(1)^2+x(2)-x(3)^2
x(1)+x(2)^2+x(3)^3-20]; %非线性不等式约束
h=[-x(1)-x(2)^2+2
x(2)+2*x(3)^2-3]; %非线性等式约束
(3)编写主程序文件如下
[x,y]=fmincon('fun1',rand(3,1),[],[],[],[],zeros(3,1),[],'fun2')
运行后得到
x =
0.5522
1.2033
0.9478
y =10.6511
非线性规格的MATLAB解法
Matlab中的命令是
[x,fval]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
x的返回值是决策向量的取值,fval返回的是目标函数的取值,其中fun是用M文件定义的函数;x0是的初始值;A,b,Aeq,beq定义了线性约束Ax<=b, Aeq*x = beq ,如果没有线性约束,则A,b=[],Aeq=[],beq=[];lb和ub是变量的下界和上界,如果上界和下界没有约束,即无下界也无上界,则lb=[],ub=[],也可以写成
lb的各分量都为-inf,ub的各分量都为inf;nonlcon是用M文件定义的非线性向量函数c(x) , ceq(x);options定义了优化参数,可以使用Matlab缺省的参数设置。
实例:
最佳投资方案应是投资额最小而总收益最大的方案,所以这个最佳投资决策问题归结为总资金以及决策变量(取0或1)的限制条件下,极大化总收益和总投资之比。因此,其数学模型为
在一组等式或不等式的约束下,求一个函数的最大值(或最小值)问题,其中至少有一个非线性函数,这类问题称之为非线性规划问题。可概括为一般形式
对于一个实际问题,在把它归结成非线性规划问题时,一般要注意如下几点
(1)确定供选方案:首先要收集同问题有关的资料和数据,在全面熟悉问题的基础上,确认什么是问题的可供选择的方案,并用一组变量来表示它们。
(2)提出追求目标:经过资料分析,根据实际需要和可能,提出要追求极小化或极大化的目标。并且,运用各种科学和技术原理,把它表示成数学关系式。
(3)给出价值标准:在提出要追求的目标之后,要确立所考虑目标的“好”或“坏”的价值标准,并用某种数量形式来描述它。
(4)寻求限制条件:由于所追求的目标一般都要在一定的条件下取得极小化或极大化效果,因此还需要寻找出问题的所有限制条件,这些条件通常用变量之间的一些不等式或等式来表示。
解
(1)编写M函数fun1.m定义目标函数
function f=fun1(x);
f=sum(x.^2)+8;
(2)编写M函数fun2.m定义非线性约束条件
function [g,h]=fun2(x);
g=[-x(1)^2+x(2)-x(3)^2
x(1)+x(2)^2+x(3)^3-20]; %非线性不等式约束
h=[-x(1)-x(2)^2+2
x(2)+2*x(3)^2-3]; %非线性等式约束
(3)编写主程序文件如下
[x,y]=fmincon('fun1',rand(3,1),[],[],[],[],zeros(3,1),[],'fun2')
运行后得到
x =
0.5522
1.2033
0.9478
y =10.6511
相关文章推荐
- MatLab建模学习笔记8——非线性规划问题求解
- MatLab建模学习笔记8——非线性规划问题求解
- MatLab建模学习笔记10——利用罚函数求解非线性规划问题
- MatLab建模学习笔记10——利用罚函数求解非线性规划问题
- 基于数学建模的数学实验学习笔记一 MATLAB软件基础
- 数学建模 | MATLAB学习 | 蒙特卡洛算法
- 使用Python scipy linprog 线性规划求最大值或最小值(使用Python学习数学建模笔记)
- 钢管下料问题用非线性整数规划的数学模型来建模以及用Lingo进行计算
- 【数学建模】MATLAB学习笔记——函数式文件
- 留学生作业代写 编程代写 有偿代写 python matlab数学建模 机器学习 深度学习 c# c++ 数学 算法 论文程序代写
- 数学建模 | MATLAB学习 | 线性规划
- 数学建模 | MATLAB学习 | 蒙特卡洛算法
- 数学建模常用Matlab/Lingo/c代码总结系列——非线性拟合
- octave学习数学建模(一 线性规划问题)
- 数学建模 | MATLAB学习 | 排队论
- 数学建模----Matlab学习总结一(学习两天的过程)
- [数学建模]线性规划与matlab解法
- 数学建模 | MATLAB学习 | 数组操作函数
- 数学建模--非线性规划
- 【数学建模集训系列】公交查询系统的matlab实现-站点和站点之间直达矩阵