实例matlab-非线性规划-作业
matlab非线性规划
用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]=quaprog(...);
7. [x,fval,exitflag]=quaprog(...);
8. [x,fval,exitflag,output]=quaprog(...);
15
例1 min f(x1,x2)=-2x1-6x2+x12-2x1x2+2x22
s.t. x1+x2≤2
-x1+2x2≤2
x1≥0, x2≥0
1、写成标准形式:min
近似规划法的基本思想:将问题(3)中的目标函数 f X 和约束条件 gi X 0 (i 1,...,m); hj X 0 ( j 1,,l)
近似为线性函数,并对变量的取值范围加以限制,从 而得到一个近似线性规划问题,再用单纯形法求解之, 把其符合原始条件的最优解作为(3)的解的近似.
非线性规划的MATLAB解法
复杂的非线性规划问题
总结词
具有多个复杂约束条件的非线性规划问题
详细描述
这类问题可能包含多个不等式约束和等式约 束,目标函数也可能比较复杂。在Matlab中, 可以使用`fmincon`函数结合其他工具箱函数
(如`intcon`)来求解这类问题。
多目标非线性规划问题
要点一
总结词
同时最小化或最大化多个目标函数的非线性规划问题
实例演示还提供了完整的代码和注释 ,方便用户学习和参考。通过实际操 作和练习,用户可以逐步掌握非线性 规划问题的求解技巧和方法。
03
非线性规划的求解方法
梯度下降法
总结词
基本、简单、迭代
详细描述
梯度下降法是一种基于函数梯度的优化算法,通过迭代更新搜索方向,逐步逼近最优解。该方法简单 易懂,适用于初学者理解非线性规划的基本概念。
具体操作
将等式约束条件表示为线性方程组,并使用`Aeq`参 数指定系数矩阵,使用`beq`参数指定常数向量。
注意事项
等式约束条件需要在可行域内满足,否则会 导致求解失败。
边界约束处理
处理方式
边界约束可以通过在目标函数中添加惩罚项来处理,或者使用专门的优化算法来处理。
具体操作
在目标函数中添加惩罚项时,需要在目标函数中添加一个与边界约束相关的项,并调整 其权重以控制边界约束的重要性。
用MATLAB求解非线性规划
function f=fun(x);
f=-2*x(1)-x(2);
2.再建立M文件mycon2.m定义非线性约束: function [g,ceq]=mycon2(x) g=[x(1)^2+x(2)^2-25;x(1)^2-x(2)^2-7];
3. 主程序fxx.m为: x0=[3;2.5]; VLB=[0 0];VUB=[5 10];
应用实例: 供应与选址
某公司有6个建筑工地要开工,每个工地的位置(用平面坐标系 a,b表示,距离单位:千米 )及水泥日用量d(吨)由下表给出。目 前有两个临时料场位于A(5,1),B(2,7),日储量各有20吨。假设从 料场到工地之间均有直线道路相连。 (1)试制定每天的供应计划,即从A,B两料场分别向各工地运 送多少吨水泥,使总的吨千米数最小。 (2)为了进一步减少吨千米数,打算舍弃两个临时料场,改建两 个新的,日储量各为20吨,问应建在何处,节省的吨千米数有多大?
用MATLAB求解非线性规划
1、二次规划
标准型为:
Min Z= 1 XTHX+cTX
2
s.t. AX<=b Aeq X beq
VLB≤X≤VUB
用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]=quaprog(...); 7. [x,fval,exitflag]=quaprog(...); 8. [x,fval,exitflag,output]=quaprog(...);
用Matlab解非线性规划问题[1]
用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.0279
xmax = 0.7854 ymax = 0.6448
例2 对边长为3米的正方形铁板,在四个角剪去相等的正方形以制成方形无盖水槽,问如何剪法使水槽的容积最大?
先编写M 文件fun0.m 如下:
function f=fun0(x)
f=-(3-2*x).^2*x;
Matlab非线性规划
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.m
function f = fun1(x)
f = x(1)^2 + x(2)^2 + 8;
end
function [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的函数;······
非线性规划作业
非线性规划作业
非线性规划是运筹学中的一个重要分支,用于解决具有非线性目标函数和约束
条件的优化问题。本次作业将介绍非线性规划的基本概念、求解方法和应用,并提供一个实际问题供你进行求解和分析。
一、基本概念
1. 非线性规划:非线性规划是指目标函数或者约束条件中至少有一个是非线性
的优化问题。它与线性规划相比,更具有灵便性和适合性。
2. 目标函数:非线性规划的目标函数是优化问题的目标,通常是最大化或者最
小化的数学表达式。它可能包含非线性项,如幂函数、指数函数等。
3. 约束条件:非线性规划的约束条件是对决策变量的限制条件,用于定义可行
解的集合。约束条件可以是等式或者不等式,也可以包含非线性项。
4. 局部最优解与全局最优解:非线性规划问题可能存在多个极值点,其中局部
最优解是在某一特定区域内最优的解,而全局最优解是在整个可行域内最优的解。
二、求解方法
1. 数学方法:非线性规划问题可以通过数学方法进行求解,如拉格朗日乘子法、KKT条件等。这些方法基于数学推导和分析,可以得到问题的解析解。
2. 迭代方法:对于复杂的非线性规划问题,往往采用迭代方法进行求解。典型
的迭代方法包括牛顿法、拟牛顿法、单纯形法等。这些方法通过不断迭代逼近最优解。
3. 优化软件:为了简化非线性规划问题的求解过程,可以使用专门的优化软件,如MATLAB、Gurobi、CPLEX等。这些软件提供了丰富的求解算法和工具,可快
速求解复杂问题。
三、应用案例
假设你是一家创造公司的生产经理,你需要确定每一个产品的生产数量,以最
大化公司的利润。公司生产两种产品:A和B。每一个产品的生产成本和利润如下:产品A:生产成本为1000元/件,利润为300元/件。
MATLAB非线性规划问题
一.非线性规划课题
实例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≤5000
x 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(…)
MATLAB求解非线性规划
MATLAB求解非线性规划
非线性规划是一类涉及非线性目标函数或非线性约束条件的数学规划问题。MATLAB是一种强大的数学计算软件,可以用来求解非线性规划问题。本文将介绍MATLAB中求解非线性规划问题的方法。
1. 目标函数和约束条件
在MATLAB中,非线性规划问题可以表示为以下形式:
minimize f(x)
subject to c(x)≤0
ceq(x)=0
lb≤x≤ub
其中f(x)是目标函数,c(x)和ceq(x)是不等式和等式约束条件,lb和ub是变量的下限和上限。
2. 求解器
MATLAB提供了多种求解器可以用来求解非线性规划问题。其中常用的有fmincon和lsqnonlin。
lsqnonlin可以用来求解非线性最小二乘问题。它使用的是Levenberg-Marquardt算法,能够有效地求解非线性最小二乘问题,并且具有较好的收敛性。
3. 示例
下面我们来看一个求解非线性规划问题的示例。假设我们要求解以下非线性规划问题:
首先,我们需要定义目标函数和约束条件。在MATLAB中,我们可以使用anonymous function来定义目标函数和约束条件。代码如下:
f = @(x)x(1)^2+2*x(2)^2+3*x(3)^2;
c = @(x)[x(1)+x(2)+x(3)-4, x(1)*x(2)+x(1)*x(3)+x(2)*x(3)-3];
ceq = [];
lb = [0,0,0];
接下来,我们使用fmincon求解非线性规划问题。代码如下:
[x,fval,exitflag,output] = fmincon(f,[1,1,1],[],[],[],[],lb,[],@(x)c(x));
完整word版matlab解非线性规划例题
关于非线性规划问题
背景:
线性规划问题,即目标函数和约束条件都是线性函数的规划问题,但在实际工作中,还常常会遇到另一类更一般的规划问题,即目标函数和约束条件中至少有一个是非线性函数问题,即非线性规划问题。
求解方法:Matlab软件
问题:
某厂向用户提供发动机,合同规定,第一、二、三季度末分别f(x)?ax?bx^2(元)交货50台、70台、90台。,每季度的生产费用为x是该季度生产的台数,若交货有剩余可用于下季度交货,但需其中c元。已知工厂每季度最大生产能力为100支付存储费,每季度每台bca=4,问工厂如何安排每台,第一季度开始时无存货,设=0.2,=50,月生产计划,才能既满足合同又使总费用最低(包括生产费用和库存费用)。
问题分析与假设:
F(x)。目标函数是总费用,记为约束条件是生产合同和生产能力的限制。
x1x2台,则第三季度生产台,第二季度生产设第一季度生产(210?x1?x2)台。则:
120?x1?x2?210
50?x1?1000?x2?100
bca=4,
=0.2,=50,由.
T1?50x1?0.2x1^2,第一季度生产费用
k1?4(x1?50),剩余品存储到下一季度的费用
T2?50x2?0.2x2^2同理可得:
k2?4(x1?x2?120)
T3?50(210?x1?x2)?0.2(210?x1?x2)^2
建模
总费用
F(x)?T1?T2?T3?k1?k2?10300?0.2(x1^2?x2^2)?0.2(210?x1?x2)^2?4(2x1?x2?120)先建立M-文件: a=50;b=0.2;c=4;
非线性规划(2)
⾮线性规划(2)
实验⽬的:
学会运⽤Mathematica、Lingo或Matlab软件求解⾮线性规划模型。
实验要求:
实验步骤要有模型建⽴,模型求解、结果分析。
实验内容:
1、⼀电路由三个电阻R1,R2,R3并联,再与电阻R4串联⽽成,记R k上电流为I k,电压为V k,在下列情况下确定R k,使电路总功率最⼩(k=1,2,3,4):
(1)I1=4,I2=2,I3=8,2≤V k≤10;
(2)V1=4,V2=6,V3=8,2≤I k≤10.
2、要设计和发射⼀个带有X射线望远镜和其他科学仪器的⽓球.对于性能的粗糙的度量⽅法是以⽓球所能到达的⾼度和所携带仪器的重量来表达,很清楚,⾼度本⾝是⽓球体积的⼀个函数.根据过去的经验作出的结论,是求极⼤满意性能函数P=f(V,W)=100V-0.3V2+80W-0.2W2,此处V是体积,W是仪器重量.承包项⽬的预算限额为1040美元,与体积V有关的费⽤是2V,与设备有关的费⽤是4W,为了保证在⾼度⽅⾯的性能与科学设备⽅⾯的性能之间合理平衡,设计者要满⾜约束条件80W≥100W.找出由体积和设备重量来表达的最优设计,并⽤线性化⽅法求解.
3、钢管下料问题.某钢管零售商从钢管⼚进货,将钢管按照顾客的要求切割出售.从钢管⼚进货得到的原材料钢管的长度都是1850mm,现在⼀顾客需要15根290mm、28根315mm、21根350mm和30根455mm的钢管.为了简化⽣产过程,规定所使⽤的切割模式的种类不能超过4种,使⽤频率最⾼的⼀种切割模式按照⼀根原料钢管价值的1/10增加费⽤,使⽤频率次之的切割模式按照⼀根原料钢管价值的2/10增加费⽤,以此类推,且每种切割模式下的切割次数不能太多(⼀根原料钢管最多⽣产5根产品),此外,为了减少余料浪费,每种切割模式下的余料浪费不能超过100mm,为了使总费⽤最⼩,应该如何下料?
数学实验报告——利用MALTAB进行非线性规划
对初值[-3,-1,-3,-1]和[3,1,3,1]来说,第 3 组约束条件下原函数的最优解
不相同, 函数值分别为 5782.58 和 2353.69。 化简后的规划与原规划所得结果相差较大。
分析: a.化简后,规划的计算结果与原规划可能相差较远。 b.观察前三组初值对应的结果,发现化简后计算得到的目标值都小于原规划 的目标值,可见减小维数对求得一个好的解是有帮助的; c.从迭代次数以及函数调用次数可以看出减小维数对减少计算时间通常是 有利的; d.对第四组数据来说,化简后的规划得到了一个非常大的目标值,这应当是 初值的选取问题带来的影响。从这个角度看,维数减小后,迭代对于初值的设置 会更加敏感。 注:第 2、3 组初值对应的化简后规划的目标解与书后参考答案中第 3 组初 始值所得结果一致,可能为规划的最优解。
3、约束 3
function [c1,c2,gc1,gc2] = edge3(x) c1 = [x(1)*x(2)-x(1)-x(2)+1.5;-x(1)*x(2)-10]; c2 = [x(1)+x(2),x(1)*x(2)*x(3)*x(4)-16]; if(nargout>1) gc1 = [x(2)-1,-x(2),x(2)*x(3)*x(4),-x(2)*x(3)*x(4);... x(1)-1,-x(1),x(1)*x(3)*x(4),-x(1)*x(3)*x(4);... 0,0,x(1)*x(2)*x(4),-x(1)*x(2)*x(4);... 0,0,x(1)*x(2)*x(3),-x(1)*x(2)*x(3)];
MATLAB非线性规划问题
MATLAB⾮线性规划问题
⼀.⾮线性规划课题
实例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≤5000
x 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)
MATLAB非线性规划
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)
用Matlab求解非线性规划
用Matlab 求解非线性规划
1.无约束优化问题
)(min x f n R
x ∈,其中向量x 的n 个分量i x 都是决策变量,称)(x f 目标函数。 用Matlab 求解:先建立函数文件mbhs.m ,内容是)(x f 的表达式;再回到Matlab 命令区输入决策变量初值数据x0,再命令[x,fmin]=fminunc(@mbhs,x0) 如:)32(m in 22212
x x R x +∈的最优解是.)0,0(T x = 用Matlab 计算,函数文件为 function f=mbhs(x)
f=2*x(1)^2+3*x(2)^2;
再输入初值 x0=[1;1]; 并执行上述命令,结果输出为 x =? fmin =? 略。 2.约束优化问题
.),
,...,2,1(,0)(),
,...,2,1(,0)(..)(min U x L m i x h p i x g t s x f i i R
x n ≤≤===≤∈
其中:向量x 的n 个分量i x 都是决策变量,称)(x f 目标函数、)(x g i 等式约束函数、)(x h i 不等式约束函数、L 下界、U 上界。
用Matlab 求解:先把模型写成适用于Matlab 的标准形式
.
,
0)(,
0)(,,
..)(min U x L x h x g beq x Aeq b Ax t s x f n R
x ≤≤=≤=≤∈ 约束条件中:把线性的式子提炼出来得前两个式子;后三个式子都是列向量。
(如:⎥⎥⎥⎦
⎤⎢⎢⎢⎣⎡===⨯⨯)()()([],[],,,11262x g x g x g beq Aeq b A p )
MATLAB求解非线性规划
% 多项式方程的
MATLAB表达
x=roots(p)
% root
6 控制流与若干控制命令
控制流语句有三种结构:for循环,while循环,if— else—end,switch-case结构等。控制命令主要介绍 break、pause、input、keyboard、debug等命令。
6.1 for循环
for I = 1:N,
for J = 1:N, A(I,J) = 1/(I+J-1); end end
在用for语句实 现多重循环时, for和end必须 成对出现!
请分析一下本段程序共循环多少次?
% mzmfor2.m for n=1:5
x(n)=sin(n*pi/10); n=10;
end
For循环不能用For 循环内新赋值循环变 量n来终止。因此本 段中循环次数仍为五 次!
2.10.1 M文件的编制
1、打开编辑窗口 2、编制一个多项式方程求根的程序: A=[4 5 6 8] % 即 A=4x3+5x2+6x+8 P=roots(A) 3、存盘(文件名不得与已存在的m文件 相同)
2.10.2 M文件的执行
在MATLAB命令窗口下直接键入文件名并按回车键即可
2.10.3 M文件的打开 2.10.4 M文件的编辑修改 2.10.5 M文件变量的工作空间
非线性整数规划matlab
例已知非线性整数规划为
max z=
s.t.
(1)编写M文件mengte.m,定义目标函数f和约束向量函数g,程序如下:
function[f,g]=mengte(x);
f=x(1)^2+x(2)^2+3*(3)^2+4*x(4)^2+2*x(5)^2-8*x(1)-2*x(2)-3*x(3)-x(4)-2x(5);
g(1)=sum(x)-400;
g(2)=x(1)+2*x(2)+2x(3)+x(4)+6*x(5)-800
g(3)=2x(1)+x(2)+6x(3)-200;
g(4)=x(3)+x(4)+5*x(5)-200;
(2)编写如下程序求问题的解:
rand('state',sum(clock));
p0=0;
tic
for i=1:10^5
x=99*rand(5,1);
x1=floor(x);x2=ceil(x);
[f,g]=mengte(x1);
if sum(g<=0)==4
if p0<=f
x0=x1;p0=f;
end
end
[f,g]=mengte(x2);
if sum(g<=0)==4
if p0<=f
x0=x2;p0=f;
end
end
end
x0,p0
toc
(此文档部分内容来源于网络,如有侵权请告知删除,文档可自行编辑修改内容,
供参考,感谢您的配合和支持)
编辑版word
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实例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函数为: