实例matlab-非线性规划-作业
- 格式:doc
- 大小:72.00 KB
- 文档页数:6
matlab解决⾮线性规划问题(凸优化问题)当⽬标函数含有⾮线性函数或者含有⾮线性约束的时候该规划问题变为⾮线性规划问题,⾮线性规划问题的最优解不⼀定在定义域的边界,可能在定义域内部,这点与线性规划不同;例如:编写⽬标函数,定义放在⼀个m⽂件中;编写⾮线性约束条件函数矩阵,放在另⼀个m⽂件中;function f = optf(x);f = sum(x.^2)+8;function [g, h] = limf(x);g = [-x(1)^2+x(2)-x(3)^2x(1)+x(2)^2+x(3)^3-20]; %⾮线性不等式约束h = [-x(1)-x(2)^2+2x(2)+2*x(3)^2-3]; %⾮线性等式约束options = optimset('largescale','off');[x y] = fmincon('optf',rand(3,1),[],[],[],[],zeros(3,1),[],...'limf',options)输出为:最速下降法(求最⼩值):代码如下:function [f df] = detaf(x);f = x(1)^2+25*x(2)^2;df = [2*x(1)50*x(2)];clc,clear;x = [2;2];[f0 g] = detaf(x);while norm(g)>1e-6 %收敛条件为⼀阶导数趋近于0p = -g/norm(g);t = 1.0; %设置初始步长为1个单位f = detaf(x+t*p);while f>f0t = t/2;f = detaf(x+t*p);end %这⼀步很重要,为了保证最后收敛,保持f序列为⼀个单调递减的序列,否则很有可能在极值点两端来回震荡,最后⽆法收敛到最优值。
x = x+t*p;[f0,g] = detaf(x);endx,f0所得到的最优值为近似解。
MATLAB优化应用非线性规划非线性规划是一类数学优化问题,其中目标函数和约束条件都是非线性的。
MATLAB作为一种强大的数值计算软件,提供了丰富的工具和函数,可以用于解决非线性规划问题。
本文将介绍如何使用MATLAB进行非线性规划的优化应用,并提供一个具体的案例来演示。
一、MATLAB中的非线性规划函数MATLAB提供了几个用于解决非线性规划问题的函数,其中最常用的是fmincon函数。
fmincon函数可以用于求解具有等式约束和不等式约束的非线性规划问题。
其基本语法如下:x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)其中,fun是目标函数,x0是变量的初始值,A和b是不等式约束的系数矩阵和右端向量,Aeq和beq是等式约束的系数矩阵和右端向量,lb和ub是变量的上下界,nonlcon是非线性约束函数,options是优化选项。
二、非线性规划的优化应用案例假设我们有一个工厂,需要生产两种产品A和B,目标是最大化利润。
产品A 和B的生产成本分别为c1和c2,售价分别为p1和p2。
同时,我们需要考虑两种资源的限制,分别是资源1和资源2。
资源1在生产产品A和B时的消耗分别为a11和a12,资源2的消耗分别为a21和a22。
此外,产品A和B的生产量有上下限限制。
我们可以建立以下数学模型来描述这个问题:目标函数:maximize profit = p1 * x1 + p2 * x2约束条件:c1 * x1 + c2 * x2 <= budgeta11 * x1 + a12 * x2 <= resource1a21 * x1 + a22 * x2 <= resource2x1 >= min_production_Ax2 >= min_production_Bx1 <= max_production_Ax2 <= max_production_B其中,x1和x2分别表示产品A和B的生产量,budget是预算,min_production_A和min_production_B是产品A和B的最小生产量,max_production_A和max_production_B是产品A和B的最大生产量。
用Matlab 解无约束优化问题一元函数无约束优化问题21),(min x x x x f ≤≤常用格式如下:(1)x= fminbnd (fun,x1,x2)(2)x= fminbnd (fun,x1,x2 ,options)(3)[x ,fval]= fminbnd (...)(4)[x ,fval ,exitflag]= fminbnd (...)(5)[x ,fval ,exitflag ,output]= fminbnd (...)其中(3)、(4)、(5)的等式右边可选用(1)或(2)的等式右边。
函数fminbnd 的算法基于黄金分割法和二次插值法,它要求目标函数必须是连续函数,并可能只给出局部最优解。
例1 求x e f x sin 2-=在0<x<8中的最小值与最大值主程序为wliti1.m:f='2*exp(-x).*sin(x)';fplot(f,[0,8]); %作图语句[xmin,ymin]=fminbnd (f, 0,8)f1='-2*exp(-x).*sin(x)';[xmax,ymax]=fminbnd (f1, 0,8)运行结果:xmin = 3.9270 ymin = -0.0279xmax = 0.7854 ymax = 0.6448例2 对边长为3米的正方形铁板,在四个角剪去相等的正方形以制成方形无盖水槽,问如何剪法使水槽的容积最大?先编写M 文件fun0.m 如下:function f=fun0(x)f=-(3-2*x).^2*x;主程序为wliti2.m:[x,fval]=fminbnd('fun0',0,1.5);xmax=xfmax=-fval运算结果为: xmax = 0.5000,fmax =2.0000.即剪掉的正方形的边长为0.5米时水槽的容积最大,最大容积为2立方米.2、多元函数无约束优化问题标准型为:min F(X)命令格式为:(1)x= fminunc (fun,X0 );或x=fminsearch (fun,X0 )(2)x= fminunc (fun,X0 ,options );或x=fminsearch (fun,X0 ,options )解 设剪去的正方形的边长为x ,则水槽的容积为:x x )23(2-建立无约束优化模型为:min y=-x x )23(2-, 0<x<1.5(3)[x,fval]= fminunc(...);或[x,fval]= fminsearch(...)(4)[x,fval,exitflag]= fminunc(...);或[x,fval,exitflag]= fminsearch(5)[x,fval,exitflag,output]= fminunc(...);或[x,fval,exitflag,output]= fminsearch(...)说明:•fminsearch是用单纯形法寻优. fminunc的算法见以下几点说明:[1] fminunc为无约束优化提供了大型优化和中型优化算法。
Matlab⾮线性规划⾮线性规划在matlab⾮线性规划数学模型可以写成⼀下形式:minf(x)\\ s.t.\begin{cases} Ax \le B \\ Aeq·x = Beq\\ C(x) \le 0\\ Ceq(x) = 0 \end{cases}f(x)为⽬标函数,A,B,Aeq,Beq为线性约束对应的矩阵和向量,C(x),Ceq(x)为⾮线性约束。
Matlab求解命令为:X = fmincon(fun, x0, A, B, Aeq, Beq, LB, UB, NONLCON, OPTIONS) fun为⽬标函数,x0为初值,A,B,Aeq,Beq为线性约束对应的矩阵和向量,LB,UB分别为x的下限和上限,NONLCON为⾮线性约束(需要写⾃定义函数),OPTIONS为优化参数。
【例】求下列⾮线性规划问题minf(x) = x^2_1+x^2_2+8\\ s.t.\begin{cases} x_1^2-x_2 \ge 0\\ -x_1-x_2^2+2=0\\ x_1,x_2 \ge 0 \end{cases}编写函数⽂件:fun1.m,fun2.mfunction f = fun1(x)f = x(1)^2 + x(2)^2 + 8;endfunction [g,h] = fun2(x)g = -x(1)^2 + x(2);%g代表不等式约束,即代表约束条件-x(1)^2 + x(2) <= 0。
matlab默认g<=0,所以题⽬中的条件被改成了相反数。
%如果有多个不等式约束,写成g(1) = 关于x的函数; g(2) = 关于x的函数;······h = -x(1) - x(2)^2 + 2;%h代表等式约束,即代表约束条件 -x(1) - x(2)^2 + 2 = 0。
%如果有多个等式约束,写成h(1) = 关于x的函数; h(2) = 关于x的函数;······end注:在写fun2时,可以把线性和⾮线性约束的等式和不等式约束都按照这种格式写到这个函数⾥⾯,这样的话fun2就包含了所有约束条件,在后⾯运⾏fmincon()时不需要再写A,B,Aeq,Beq,直接⽤[]略过。
佛山科学技术学院上 机 报 告课程名称 数学应用软件上机项目 用MATLAB 求解非线性规划问题专业班级 姓 名 学 号一。
上机目的1.了解非线性规划的基本理论知识。
2.对比Matlab 求解线性规划,学习用Matlab 求解非线性规划的问题。
二。
上机内容1、用quadprog 求解二次规划问题min f (x):2、求解优化问题:min 321)(x x x x f -=S 。
T.72220321≤++≤x x x注:取初值为(10,10,10)。
3、求表面积为常数150 m 2的体积最大的长方体体积及各边长。
注:取初值为(4,5,6)。
三.上机方法与步骤1、可用两种方法解题:方法一:Matlab程序:H=[1 -1;—1 2];c=[—2;—6];A=[1 1;-1 2;2 1];b=[2;2;3];Aeq=[];beq=[];vlb=[0;0];vub=[];[x,z]=quadprog(H,c,A,b,Aeq,beq,vlb,vub)方法二:Matlab程序如下:先建立fun.m文件,程序为:function f=fun(x);f=1/2*x(1)^2+x(2)^2—x(1)*x(2)—2^x(1)-6*x(2);再建立chushi。
m文件,程序为:x0=[1;1];A=[1 1;—1 2;2 1];b=[2;2;3];Aeq=[];beq=[];vlb=[0;0];vub=[];[x,fval]=fmincon(’fun',x0,A,b,Aeq,beq,vlb,vub)2、Matlab程序:先建立fun1.m文件,程序为:function f=fun1(x);f=-x(1)*x(2)*x(3);再建立chushi1.m文件,程序为:x0=[10;10;10];A=[1 2 2;—1 —2 -2];b=[72;0];Aeq=[];beq=[];vlb=[];vub=[];[x,fval]=fmincon(’fun1',x0,A,b,Aeq,beq,vlb,vub)3、假设长方形的长、宽、高分别为(1)x 、(2)x 、(3)x ,则长方形的体积为f ,则有max (1)(2)(3)2(1)(2)2(1)(3)3(2)(3)150.()0(1,2,3)f x x x x x x x x x s t x i i =++=⎧⎨≥=⎩四.上机结果1、结果:(1)方法一结果:x =0。
一.非线性规划课题实例1 表面积为36平方米的最大长方体体积。
建立数学模型:设x、y、z分别为长方体的三个棱长,f为长方体体积。
max f = x y (36-2 x y)/2 (x+y)实例2 投资决策问题某公司准备用5000万元用于A、B两个项目的投资,设x1、x2分别表示配给项目A、B的投资。
预计项目A、B的年收益分别为20%和16%。
同时,投资后总的风险损失将随着总投资和单位投资的增加而增加,已知总的风险损失为2x12+x22+(x1+x2)2.问应如何分配资金,才能使期望的收益最大,同时使风险损失为最小。
建立数学模型:max f=20x1+16x2-λ[2x12+x22+(x1+x2)2]s.t x1+x2≤5000x 1≥0,x2≥0目标函数中的λ≥0是权重系数。
由以上实例去掉实际背景,其目标函数与约束条件至少有一处是非线性的,称其为非线性问题。
非线性规划问题可分为无约束问题和有约束问题。
实例1为无约束问题,实例2为有约束问题。
二.无约束非线性规划问题:求解无约束最优化问题的方法主要有两类:直接搜索法(Search method)和梯度法(Gradient method),单变量用fminbnd,fminsearch,fminunc;多变量用fminsearch,fminnuc 1.fminunc函数调用格式:x=fminunc(fun,x0)x=fminunc(fun,x0,options)x=fminunc(fun,x0,options,P1,P2)[x,fval]=fminunc(…)[x,fval, exitflag]=fminunc(…)[x,fval, exitflag,output]=fminunc(…)[x,fval, exitflag,output,grad]=fminunc(…)[x,fval, exitflag,output,grad,hessian]=fminunc(…)说明:fun为需最小化的目标函数,x0为给定的搜索的初始点。
一.非线性规划课题实例1 表面积为36平方米的最大长方体体积。
建立数学模型:设x、 y、 z分别为长方体的三个棱长, f为长方体体积。
max f = x y (36-2 x y)/2 (x+y)实例2 投资决策问题某公司准备用5000万元用于A、 B两个项目的投资, 设x1、 x2分别表示配给项目A、 B的投资。
预计项目A、 B的年收益分别为20%和16%。
同时, 投资后总的风险损失将随着总投资和单位投资的增加而增加, 已知总的风险损失为2x12+x22+(x1+x2)2.问应如何分配资金, 才能使期望的收益最大, 同时使风险损失为最小。
建立数学模型:max f=20x1+16x2-λ[2x12+x22+(x1+x2)2]s.t x1+x2≤5000x 1≥0,x2≥0目标函数中的λ≥0是权重系数。
由以上实例去掉实际背景, 其目标函数与约束条件至少有一处是非线性的, 称其为非线性问题。
非线性规划问题可分为无约束问题和有约束问题。
实例1为无约束问题, 实例2为有约束问题。
二.无约束非线性规划问题:求解无约束最优化问题的方法主要有两类: 直接搜索法(Search method)和梯度法(Gradient method), 单变量用fminbnd,fminsearch,fminunc;多变量用fminsearch,fminnuc1.fminunc函数调用格式: x=fminunc(fun,x0)x=fminunc(fun,x0,options)x=fminunc(fun,x0,options,P1,P2)[x,fval]=fminunc(…)[x,fval, exitflag]=fminunc(…) [x,fval, exitflag,output]=fminunc(…)[x,fval, exitflag,output,grad]=fminunc(…)[x,fval, exitflag,output,grad,hessian]=fminunc(…)说明: fun 为需最小化的目标函数, x0为给定的搜索的初始点。
现代设计方法-工程优化理论、方法与设计姓名问题:某厂向用户提供发动机,合同规定,第一、二、三季度末分别交货40台、60台、802()f x =ax +bx 台。
每季度的生产费用为(元),其中x 是该季生产的台数。
学号班级研若交货后有剩余,可用于下季度交货,但需支付存储费,每台每季度c 元。
已知工厂每季度最大生产能力为100台,第一季度开始时无存货,设a=50、b=0.2、c=4,问工厂应如何安排生产计划,才能既满足合同又使总费用最低。
讨论a、b、c 变化对计划的影响,并作出合理的解释。
问题的分析和假设:问题分析:本题是一个有约束条件的二次规划问题。
决策变量是工厂每季度生产的台数,目标函数是总费用(包括生产费用和存储费)。
约束条件是生产合同,生产能力的限制。
在这些条件下需要如何安排生产计划,才能既满足合同又使总费用最低。
问题假设:1、工厂最大生产能力不会发生变化;2、合同不会发生变更;3、第一季度开始时工厂无存货;4、生产总量达到180台时,不在进行生产;5、工厂生产处的发动机质量有保证,不考虑退货等因素;6、不考虑产品运输费用是否有厂家承担等和生产无关的因素。
符号规定:x1——第一季度生产的台数;x2——第二季度生产的台数;180-x1-x2——第三季度生产的台数;y1——第一季度总费用;y2——第二季度总费用;y3——第三季度总费用;y——总费用(包括生产费用和存储费)。
建模:1、第一、二、三季度末分别交货40台、60台、80台;2、每季度的生产费用为;f (x )=ax +bx (元)23、每季度生产数量满足40≤180;4、要求总费用最低,这是一个目标规划模型。
目标函数:Z 1=a ⨯x 1+b ⨯x 1 y12≤x1≤100,0≤x2≤100,100≤x1+x2Z 2=a ⨯x 2+b ⨯x 2+c ⨯(x 1-40)y22 y3Z 3=a ⨯(180-x 1-x 2)+b ⨯(180-x 1-x 2)+c ⨯(x 1+x 2-100)2y Z =Z 1+Z 2+Z 3=14920+0.4x 1+0.4x2+0.4x 1x 2-64x 1-68x 22 40≤x1≤1000≤x2≤100100≤x1+x2≤180求解的Matlab程序代码:先建立M-文件 fun.m:function f=fun(x);f=14920+0.4*x(1)*x(1)+0.4*x(2)*x(2)+0.4*x(1)*x(2)-64*x(1)-68*x(2);再建立主程序xx.m:x0=[0;0];A=[-1 -1;1 1];b=[-100;180];Aeq=[];beq=[];vlb=[40;0];vub=[100;100];[x,fval]=fmincon('fun',x0,A,b,Aeq,beq,vlb,vub)计算结果与问题分析讨论:计算结果:x =50.000060.0001fval =1.1280e+004分析讨论:由结果可知:第一季度应生产50台,第二季度应生产60台,第三季度应生产70台,可既满足合同又使总费用最低,最低费用为11280元。
非线性规划及matlab 应用目录1.概念 ............................................................................................................................................... 1 2.二次规划........................................................................................................................................ 1 3.一般非线性规划 ............................................................................................................................ 2 4. 案例:供应与选址 . (4)1.概念定义:如果目标函数或约束条件中至少有一个是非线性函数时的最优化问题就叫做非线性规划问题.其它情况: 求目标函数的最大值或约束条件为小于等于零的情况,都可通过取其相反数化为上述一般形式.2.二次规划用MATLAB 软件求解,其输入格式如下: 1. x=quadprog(H,C,A,b); 2. x=quadprog(H,C,A,b,Aeq,beq); 3. x=quadprog(H,C,A,b,Aeq,beq,VLB,VUB); 4. x=quadprog(H,C,A,b, Aeq,beq ,VLB,VUB,X0); 5. x=quadprog(H,C,A,b, Aeq,beq ,VLB,VUB,X0,options); 6. [x,fval]=quadprog(...); 7. [x,fval,exitflag]=quaprog(...); 实例1:2212121122121212min (,)2622..2220,0=--+-++≤-+≤≥≥f x x x x x x x x s tx x x x x x写成标准形式标准型为: Min Z= 21X T HX+c T Xs.t. AX<=b beq X Aeq =⋅ VLB ≤X ≤VUB111222 1 -12min (,) 1 26Tx x z x x x x ⎛⎫⎛⎫⎛⎫⎛⎫-=+ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪--⎝⎭⎝⎭⎝⎭⎝⎭1212 1 121 2200x x x x ⎛⎫⎛⎫⎛⎫≤ ⎪ ⎪ ⎪ ⎪-⎝⎭⎝⎭⎝⎭⎛⎫⎛⎫≤ ⎪ ⎪ ⎪⎝⎭⎝⎭Matlab 命令H=[1 -1; -1 2]; c=[-2 ;-6]; A=[1 1; -1 2]; b=[2;2]; Aeq=[]; beq=[]; VLB=[0;0]; VUB=[];[x,z]=quadprog(H,c,A,b,Aeq,beq,VLB,VUB)运算结果为:x =0.6667 1.3333 z = -8.22223.一般非线性规划标准型为:min ()..()0()0≤≤=≤≤F X s t AX bG X Ceq X VLB X VUB其中X 为n 维变元向量,G(X)与Ceq(X)均为非线性函数组成的向量,其它变量的含义与线性规划、二次规划中相同.非线性规划求解的函数是fmincon,命令的基本格式如下: ● x=fmincon(‘fun’,X0,A,b)● x=fmincon(‘fun’,X0,A,b,Aeq,beq)● x=fmincon(‘fun’,X0,A,b, Aeq,beq,VLB,VUB)● x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’)● x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’,options) ● [x,fval]= fmincon(...)● [x,fval,exitflag]= fmincon(...)● [x,fval,exitflag,output]= fmincon(...) 1.fun 为目标函数2.x0为初始值3.A 是不等式约束AX<=b 的系数矩阵4.b 是不等式约束AX<=b 的常数项4.Aeq 是等式约束AeqX=beq 的系数矩阵,5.beq 是等式约束AeqX=beq 的常数项,6.lb 是X 的下限,7.ub 是X 的上限,8.nonlcon 为非线性不等式约束 9.option 为设置fmincon 的参数 注意:fmincon 函数提供了大型优化算法和中型优化算法。
一.非线性规划课题实例1 表面积为36平方米的最大长方体体积。
建立数学模型:设x、 y、 z分别为长方体的三个棱长, f为长方体体积。
max f = x y (36-2 x y)/2 (x+y)实例2 投资决策问题某公司准备用5000万元用于A、 B两个项目的投资, 设x1、 x2分别表示配给项目A、 B的投资。
预计项目A、 B的年收益分别为20%和16%。
同时, 投资后总的风险损失将随着总投资和单位投资的增加而增加, 已知总的风险损失为2x12+x22+(x1+x2)2.问应如何分配资金, 才能使期望的收益最大, 同时使风险损失为最小。
建立数学模型:max f=20x1+16x2-λ[2x12+x22+(x1+x2)2]s.t x1+x2≤5000x 1≥0,x2≥0目标函数中的λ≥0是权重系数。
由以上实例去掉实际背景, 其目标函数与约束条件至少有一处是非线性的, 称其为非线性问题。
非线性规划问题可分为无约束问题和有约束问题。
实例1为无约束问题, 实例2为有约束问题。
二.无约束非线性规划问题:求解无约束最优化问题的方法主要有两类: 直接搜索法(Search method)和梯度法(Gradient method), 单变量用fminbnd,fminsearch,fminunc;多变量用fminsearch,fminnuc1.fminunc函数调用格式: x=fminunc(fun,x0)x=fminunc(fun,x0,options)x=fminunc(fun,x0,options,P1,P2)[x,fval]=fminunc(…)[x,fval, exitflag]=fminunc(…) [x,fval, exitflag,output]=fminunc(…)[x,fval, exitflag,output,grad]=fminunc(…)[x,fval, exitflag,output,grad,hessian]=fminunc(…)说明: fun 为需最小化的目标函数, x0为给定的搜索的初始点。
1 绪论1.1 课题的背景1.1.1 Matlab简介MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB 成为一个强大的数学软件。
在新的版本中也加入了对C,FORTRAN,C++,JA VA 的支持。
可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。
MATLAB的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。
附加的工具箱(单独提供的专用MATLAB 函数集)扩展了MATLAB环境,以解决这些应用领域内特定类型的问题。
1.1.2 非线性规划(nonlinear programming)非线性规划是具有非线性约束条件或目标函数的数学规划,是运筹学的一个重要分支。
MATLAB⾮线性规划MATLAB求解⾮线性规划可以使⽤ fmincon 函数,其数学模型可以写成如下形式:x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)其中,fun是⽬标函数,x0是初始值,A,b 规定线性不等式约束条件,Aeq,beq 规定线性等式约束条件,lb 规定可⾏解的数值下限,ub规定可⾏解的数值上限。
nonlcon是包含⾮线性约束条件(C(x),Ceq(x))的函数。
使⽤options所指定的优化选项执⾏最⼩化。
例如,使⽤MATLAB计算如下⾮线性规划。
x0 = [0.5,0];A = [1,-2];b = 1;Aeq = [2,1];beq = 1;x = fmincon(fun,x0,A,b,Aeq,beq)带有边界约束的,例如:fun = @(x)1+x(1)/(1+x(2)) - 3*x(1)*x(2) + x(2)*(1+x(1));lb = [0,0];ub = [1,2];% 没有线性约束,因此将这些参数设置为 []。
A = [];b = [];Aeq = [];beq = [];% 尝试使⽤⼀个位于区域中部的初始点。
x0 = (lb + ub)/2;x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)带有⾮线性约束的,例如:%% 主函数options=optimset('largescale','off');x = fmincon(@fun,rand(3,1),[],[],[],[],zeros(3,1),[], @nonlcon, options)%% ⽬标函数function f=fun(x)f=sum(x.^2)+8;end%% ⾮线性约束条件function [c,ceq]=nonlcon(x)c=[-x(1)^2+x(2)-x(3)^2x(1)+x(2)^2+x(3)^3-20]; %⾮线性不等式约束ceq=[-x(1)-x(2)^2+2x(2)+2*x(3)^2-3]; %⾮线性等式约束end特别注意:⽬标函数为最⼩化函数,fun是⼀个函数,fun接受向量或数组 x,并返回实数标量 f,即在 x 处计算的⽬标函数值。
实例matlab-非线性规划-作业
现代设计方法-工程优化理论、方法与设计 姓名
学号 班级 研
问题 :
某厂向用户提供发动机,合同规定,第一、二、三季度末分别交货40台、60台、80台。
每季度的生产费用为 (元),其中x 是该季生产的台数。
若交货后有剩余,可用于下季度交货,但需支付存储费,每台每季度c 元。
已知工厂每季度最大生产能力为100台,第一季度开始时无存货,设a=50、b=0.2、c=4,问工厂应如何安排生产计划,才能既满足合同又使总费用最低。
讨论a 、b 、c 变化对计划的影响,并作出合理的解释。
问题的分析和假设:
问题分析:本题是一个有约束条件的二次规划问题。
决策变量是工厂每季度生产的台数,目标函数是总费用(包括生产费用和存储费)。
约束条件是生产合同,生产能力的限制。
在这些条件下需要如何安排生产计划,才能既满足合同又使总费用最低。
问题假设:
1、工厂最大生产能力不会发生变化;
2、合同不会发生变更;
3、第一季度开始时工厂无存货;
4、生产总量达到180台时,不在进行生产;
5、工厂生产处的发动机质量有保证,不考虑退货等因素;
6、不考虑产品运输费用是否有厂家承担等和生产无关的因素。
符号规定:
x1——第一季度生产的台数;
x2——第二季度生产的台数;
180-x1-x2——第三季度生产的台数;
y1——第一季度总费用;
y2——第二季度总费用;
y3——第三季度总费用;
y ——总费用(包括生产费用和存储费)。
()2bx ax x f +=
建模:
1、第一、二、三季度末分别交货40台、60台、80台;
2、每季度的生产费用为 (元);
3、每季度生产数量满足40
≤x1≤100,0≤x2≤100,100≤x1+x2
≤180;
4、要求总费用最低,这是一个目标规划模型。
目标函数:
y1
2111x b x a Z ⨯+⨯= y2()4012222-⨯+⨯+⨯=x c x b x a Z y3()()()10018018021221213
-+⨯+--⨯+--⨯=x x c x x b x x a Z y x x x x x x Z Z Z Z 68644.04.04.0149201
212221321--+++=++= 40≤x1≤100
0≤x2≤100
100≤x1+x2≤180
()2
bx ax x f +=
求解的Matlab程序代码:
先建立M-文件fun.m:
function f=fun(x);
f=14920+0.4*x(1)*x(1)+0.4*x(2)*x(2)+0.4*x(1)*x (2)-64*x(1)-68*x(2);
再建立主程序xx.m:
x0=[0;0];
A=[-1 -1;1 1];
b=[-100;180];
Aeq=[];beq=[];
vlb=[40;0];vub=[100;100];
[x,fval]=fmincon('fun',x0,A,b,Aeq,beq,vlb,vub)
计算结果与问题分析讨论:
计算结果:
x =
50.0000
60.0001
fval =
1.1280e+004
分析讨论:
由结果可知:第一季度应生产50台,第二季度应生产60台,第三季度应生产70台,可既满足合同又使总费用最低,最低费用为11280元。
讨论a,b,c对生产方案的影响:
a增大或减小对生产方案完全没有影响(无论a为多少,方案都是50、60、70)。
b逐渐增大,则三个季度的生产量趋近交付总量的平均值,即同趋于60台(第一季度生产量增加,第二季度不变,第三季度减少)。
c逐渐增大,三季度的生产量分别趋近于每季度的交付量,即分别趋于40、60、80
(第一季度生产量减少,第二季度不变,第三季度增加)。
问题 :梯度法
其中function函数为:。