文档库 最新最全的文档下载
当前位置:文档库 › 用MATLAB求解非线性规划

用MATLAB求解非线性规划

用MATLAB求解非线性规划
用MATLAB求解非线性规划

特别说明

此资料来自豆丁网(https://www.wendangku.net/doc/255209020.html,/)

您现在所看到的文档是使用下载器所生成的文档

此文档的原件位于

https://www.wendangku.net/doc/255209020.html,/p-48662365.html

感谢您的支持

抱米花

https://www.wendangku.net/doc/255209020.html,/lotusbaob

实例matlab-非线性规划-作业

实例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进行线性规划求解(实例)

线性规划 线性规划是处理线性目标函数和线性约束的一种较为成熟的方法,目前已经广泛应用于军事、经济、工业、农业、教育、商业和社会科学等许多方面。 8.2.1 基本数学原理 线性规划问题的标准形式是: ????? ??????≥=+++=+++=++++++=0,,,min 21221122222121112 121112211n m n mn m m n n n n n n x x x b x a x a x a b x a x a x a b x a x a x a x c x c x c z 或 ???? ?????=≥===∑∑==n j x m i b x a x c z j n j i j ij n j j j ,,2,1,0,,2,1,min 1 1 写成矩阵形式为: ?? ???≥==O X b AX CX z min 线性规划的标准形式要求使目标函数最小化,约束条件取等式,变量b 非负。不符合这几个条件的线性模型可以转化成标准形式。 MATLAB 采用投影法求解线性规划问题,该方法是单纯形法的变种。 8.2.2 有关函数介绍 在MATLAB 工具箱中,可用linprog 函数求解线性规划问题。 linprog 函数的调用格式如下: ●x=linprog(f,A,b):求解问题minf'*x ,约束条件为A*x<=b 。 ●x=linprog(f,A,b,Aeq,beq):求解上面的问题,但增加等式约束,即Aeq*x=beq 。若没有不等式约束,则令A=[ ],b=[ ]。 ●x=linprog(f,A,b,Aeq,beq,lb,ub):定义设计x 的下界lb 和上界ub ,使得x 始终在该范围内。若没有等式约束,令Aeq=[ ],beq=[ ]。 ●x=linprog(f,A,b,Aeq,beq,lb,ub,x0):设置初值为x0。该选项只适用于中型问题,默认时大型算法将忽略初值。 ●x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options):用options 指定的优化参数进行最小化。 ●[x,fval]=linprog(…):返回解x 处的目标函数值fval 。 ●[x,lambda,exitflag]=linprog(…):返回exitflag 值,描述函数计算的退出条件。 ●[x,lambda,exitflag,output]=linprog(…):返回包含优化信息的输出参数output 。 ●[x,fval,exitflag,output,lambda]=linprog(…):将解x 处的拉格朗日乘子返回到lambda 参数中。

Matlab非线性规划

一般非线性规划 标准型为: min F(X) s.t AX<=b b e q X A e q =? G(X)0≤ Ceq(X)=0 VLB ≤X ≤VUB 其中X 为n 维变元向量,G(X)与Ceq(X)均为非线性函数组成的向量,其它变量的含义与线性规划、二次规划中相同.用Matlab 求解上述问题,基本步骤分三步: 1. 首先建立M 文件fun.m,定义目标函数F (X ): function f=fun(X); f=F(X); 2. 若约束条件中有非线性约束:G(X)0≤或Ceq(X)=0,则建立M 文件nonlcon.m 定义函数G(X)与Ceq(X): function [G,Ceq]=nonlcon(X) G=... Ceq=... 3. 建立主程序.非线性规划求解的函数是fmincon,命令的基本格式如下: (1) x=fmincon (‘fun’,X0,A,b) (2) x=fmincon (‘fun’,X0,A,b,Aeq,beq) (3) x=fmincon (‘fun’,X0,A,b, Aeq,beq,VLB,VUB) (4) x=fmincon (‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’) (5)x=fmincon (‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’,options) (6) [x,fval]= fmincon(...) (7) [x,fval,exitflag]= fmincon(...) (8)[x,fval,exitflag,output]= fmincon(...) 注意: [1] fmincon 函数提供了大型优化算法和中型优化算法。默认时,若在

遗传算法解决非线性规划问题的Matlab程序

通常,非线性整数规划是一个具有指数复杂度的NP问题,如果约束较为复杂,Matlab优 化工具箱和一些优化软件比如lingo等,常常无法应用,即使能应用也不能给出一个较为令 人满意的解。这时就需要针对问题设计专门的优化算法。下面举一个遗传算法应用于非线性整数规划的编程实例,供大家参考! 模型的形式和适应度函数定义如下: nun £ =迟叼匸[(1_冏)督 i-1 /-I J=K乙员-??严丿=12 M…严 ▼ 0 或1* 适应度函数为3 Fi tn叱O)=》〔?巾1口{>?(卡(£)一/;0?门))转幷亠 Z j'-i 50 4 S0 其中比=2、即士£ = £ =瓦%■,口(1-务),马;j^ = s = ■ x v' y- to.8,02)., /-I i-L i-1 E 这是一个具有200个01决策变量的多目标非线性整数规划,编写优化的目标函数如下,其 中将多目标转化为单目标采用简单的加权处理。 fun ctio n Fit ness=FITNESS(x,FARM,e,q,w) %%适应度函数 %输入参数列表 % x 决策变量构成的 4X50的0-1矩阵 % FARM 细胞结构存储的当前种群,它包含了个体x

% e 4 X50的系数矩阵 % q 4 X50的系数矩阵 % w 1 X50的系数矩阵 %% gamma=0.98; N=length(FARM);% 种群规模 F1=zeros(1,N); F2=zeros(1,N); for i=1:N xx=FARM{i}; ppp=(1-xx)+(1-q).*xx; F1(i)=sum(w.*prod(ppp)); F2(i)=sum(sum(e.*xx)); end ppp=(1-x)+(1-q).*x; f1=sum(w.*prod(ppp)); f2=sum(sum(e.*x)); Fitness=gamma*sum(min([sign(f1-F1);zeros(1,N)]))+(1-gamma)*sum(min([sign(f2- F2);zeros(1,N)])); 针对问题设计的遗传算法如下,其中对模型约束的处理是重点考虑的地方 function [Xp,LC1,LC2,LC3,LC4]=MYGA(M,N,Pm) %% 求解 01 整数规划的遗传算法 %% 输入参数列表

完整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; H=diag(2*b*ones(1,3));C=[a+2*c,a+c,a]; A1=[-1,0,0;-1,-1,0];b1=[-50,-120]'; A2=[1 1 1];b2=210; v1=[0 0 0]';v2=[100 100 100]'; [x,faval,exitflag,output,lambada]=quadprog(H,C,A1,b1,A2,b2,v1,v2,[]) X2=x'*H*x/2+C*x-140*c 再建立主程序: a=50;b=0.2;c=4; H=diag(2*b*ones(1,3));C=[a+2*c,a+c,a]; A1=[-1,0,0;-1,-1,0];b1=[-50,-100]'; A2=[1 1 1];b2=210; v1=[0 0 0]';v2=[100 100 100]'; [x,faval,exitflag,output,lambada]=quadprog(H,C,A1,b1,A2,b2,v1,v2,[]) X2=x'*H*x/2+C*x-140*c 运算结果: x =

MATLAB非线性优化fmincon

active-set and sqp algorithms 不接受用户提供的海塞矩阵,对拉格朗日的海塞矩阵提供一个拟牛顿的近似值; 目标函数估值次数与迭代次数? 优化成功或失败 一、求解失败 1、在到达迭代次数阈值或目标函数估值次数阈值时,求解器没有最小化目标到要求的精度,此时求解器停止。接下来,可以尝试以下方法: (1)设置‘Display’为‘iter’,查看每步的迭代信息,这些信息包括:目标函数(Fval or f(x) or Resnorm)是否是下降的;检查约束越界(Max constraint)是否是递减趋向于0;查看一阶优化是否是递减趋向于0;查看置信域半径(Trust-region radius)是否下降趋向于一个小的值。若其中至少一种情况为是,就表示结果是不断改善的。如果结果是不断改善的,可以采取下边的措施:设置MaxIter、MaxFunEvals比默认值大的值,默认值可以在优化工具箱或求解器的函数参考页的优化表中查看;从最后计算出的点开始重新求解。如果结果没有改善,尝试以下其他的方法。(2)放松精度 如果TolX或TolFun太小,当求解器达到一个最小值时可能也不会识别到,这就会导致无限次徒劳的迭代。DiffMaxChange和DiffMinChange选项能影响求解器的改善,它们控制求导估计中有限差分的步长。 (3)从不同的初始点重新开始求解

(4)检查目标函数和约束函数的定义 举个例子,可以检查目标函数和非线性约束函数在某些特定点处返回正确的值。不可行的点不一定导致函数的错误。 (5)对问题进行中心化和标准化 当每个坐标轴对目标函数和约束函数有相同的影响时,求解器更能可靠的运行,对每个坐标轴方向乘以合适的量使得每个坐标轴的影响相同,在特定的坐标轴上加上合适的值使得它们长度一致。 (6)提供解析的梯度和雅可比矩阵 如果用户不提供解析的梯度或雅可比矩阵,求解器会用有限差分来估计这些值,因此提供这些导数可以减少运算时间,提高计算准确度。 对于约束问题,提供梯度还有另一个好处----求解器到达一个点x 时能满足该点是可行的,但有限差分在x点周围可能会导致不可行的点,在这种情况下,求解器可能会失败或突然中断。(7)提供海塞矩阵 当提供海塞矩阵时,求解器能运行的更可靠,而且运行的次数比较少。 2、无可行点 在TolCon约束精度内,求解器不能找到一个满足所有约束条件的点,此时,可以尝试以下方法: (1)检查线性约束

多目标非线性规划程序(Matlab)

function [errmsg,Z,X,t,c,fail] = BNB18(fun,x0,xstat,xl,xu,A,B,Aeq,Beq,nonlcon,setts,options1,options2,ma xSQPit,varargin); %·???D???êy1????£Dí?ó?a·??§?¨??μü′ú??·¨?£?úMATLAB5.3?Dê1ó?£?DèOptimizat ion toolbox 2.0?§3?? % Minimize F(x) %subject to: xlb <= x <=xub % A*x <= B % Aeq*x=Beq % C(x)<=0 % Ceq(x)=0 % % x(i)?é?aá?D?±?á?£???êy£??ò1ì?¨?μ % ê1ó???ê? %[errmsg,Z,X]=BNB18('fun',x0,xstat,xl,xu,A,B,Aeq,Beq,'nonlcon',setts) %fun£o M???t??£?±íê?×?D??ˉ??±êoˉêyf=fun(x) %x0: áD?òá?£?±íê?±?á?3??μ %xstat£o áD?òá?£?xstat(i)=0±íê?x(i)?aá?D?±?á?£?1±íê???êy£?2±íê?1ì?¨?μ %xl£o áD?òá?£?±íê?±?á????? %xu: áD?òá?£?±íê?±?á?é??? %A: ???ó, ±íê???D?2?μèê???ê??μêy %B: áD?òá?, ±íê???D?2?μèê???ê?é??? %Aeq: ???ó, ±íê???D?μèê???ê??μêy %Beg: áD?òá?, ±íê???D?2?μèê???ê?óò???μ %nonlcon: M???t??£?±íê?·???D???ê?oˉêy[C,Ceq]=nonlin(x),???DC(x)?a2?μèê???ê?, % Ceq(x)?aμèê???ê? %setts: ??·¨éè?? %errmsq: ·μ??′í?óìáê? %Z: ·μ????±êoˉêy×?D??μ %X: ·μ??×?ó??a % %àyìa % max x1*x2*x3 % -x1+2*x2+2*x3>=0 % x1+2*x2+2*x3<=72 % 10<=x2<=20 % x1-x2=10 % ?èD′ Moˉêydiscfun.m % function f=discfun(x) % f=-x(1)*x(2)*x(3); %?ó?a % clear;x0=[25,15,10]';xstat=[1 1 1]'; % xl=[20 10 -10]';xu=[30 20 20]'; % A=[1 -2 -2;1 2 2];B=[0 72]';Aeq=[1 -1 0];Beq=10; % [err,Z,X]=BNB18('discfun',x0,xstat,xl,xu,A,B,Aeq,Beq); % XMAX=X',ZMAX=-Z % % BNB18 Finds the constrained minimum of a function of several possibly integer variables. % Usage: [errmsg,Z,X,t,c,fail] = % BNB18(fun,x0,xstatus,xlb,xub,A,B,Aeq,Beq,nonlcon,settings,options1,opti ons2,maxSQPiter,P1,P2,...) % % BNB solves problems of the form: % Minimize F(x) subject to: xlb <= x0 <=xub

非线性规划的MATLAB解法及其应用

题 目 非线性规划的MATLAB 解法及其应用 (一) 问题描述 非线性规划是具有非线性约束条件或目标函数的数学规划,是运筹学的一个重要分支。非线性规划是20世纪50年代才开始形成的一门新兴学科。70年代又得到进一步的发展。非线性规划在工程、管理、经济、科研、军事等方面都有广泛的应用,为最优设计提供了有力的工具。在经营管理、工程设计、科学研究、军事指挥等方面普遍地存在着最优化问题。例如:如何在现有人力、物力、财力条件下合理安排产品生产,以取得最高的利润;如何设计某种产品,在满足规格、性能要求的前提下,达到最低的成本;如何确定一个自动控制的某些参数,使系统的工作状态最佳;如何分配一个动力系统中各电站的负荷,在保证一定指标要求的前提下,使总耗费最小;如何安排库存储量,既能保证供应,又使储存 费用最低;如何组织货源,既能满足顾客需要,又使资金周转最快等。对于静态的最优化 问题,当目标函数或约束条件出现未知量的非线性函数,且不便于线性化,或勉强线性化后会招致较大误差时,就可应用非线性规划的方法去处理。具有非线性约束条件或目标函数的数学规划,是运筹学的一个重要分支。非线性规划研究一个n 元实函数在一组等式或不等式的约束条件下的极值问题,且目标函数和约束条件至少有一个是未知量的非线性函数。目标函数和约束条件都是线性函数的情形则属于线性规划。本实验就是用matlab 软件来解决非线性规划问题。 (二) 基本要求 掌握非线性规划的MATLAB 解法,并且解决相关的实际问题。 题一 :对边长为3米的正方形铁板,在四个角剪去相等的正方形以制成方形无盖水槽,问如何剪法使水槽的容积最大? 题二: 某厂生产一种产品有甲、乙两个牌号,讨论在产销平衡的情况下如何确定各自的产量,使总利润最大. 所谓产销平衡指工厂的产量等于市场上的销量.符号说明:z(x 1,x 2)表示总利润;p 1,q 1,x 1分别表示甲的价格、成本、销量; p 2,q 2,x 2分别表示乙的价格、成本、销量; a ij ,b i ,λi ,c i (i ,j =1,2)是待定 系数. 题三:设有400万元资金, 要求4年内使用完, 若在一年内使用资金x 万元, 则可得效益x 万元(效益不能再使用),当年不用的资金可存入银行, 年利率为10%. 试制定出资金的使用计划, 以使4年效益之和为最大. (三) 数据结构 题一:设剪去的正方形的边长为x ,则水槽的容积为:x x )23(2-;建立无约束优化模型为:min y=-x x )23(2-, 0

MATLAB非线性规划问题样本

一.非线性规划课题 实例1 表面积为36平方米的最大长方体体积。 建立数学模型: 设x、 y、 z分别为长方体的三个棱长, f为长方体体积。 max f = x y (36-2 x y)/2 (x+y) 实例2 投资决策问题 某公司准备用5000万元用于A、 B两个项目的投资, 设x 1、 x 2 分别表示配 给项目A、 B的投资。预计项目A、 B的年收益分别为20%和16%。同时, 投资后总的风险损失将随着总投资和单位投资的增加而增加, 已知总的风险损失为 2x 12+x 2 2+(x 1 +x 2 )2.问应如何分配资金, 才能使期望的收益最大, 同时使风险损失 为最小。 建立数学模型: max f=20x 1+16x 2 -λ[2x 1 2+x 2 2+(x 1 +x 2 )2] s.t x 1+x 2 ≤5000 x 1≥0,x 2 ≥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为给定的搜索的初始点。options 指定优化参数。 返回的x 为最优解向量; fval 为x 处的目标函数值; exitflag 描述函数的输出条件; output 返回优化信息; grad 返回目标函数在x 处的梯度。Hessian 返回在x 处目标函数的Hessian 矩阵信息。 例1 : 求 22348m in y x y x f ++-= 程序: 经过绘图确定一个初始点: [x,y]=meshgrid(-10:.5:10); z= 8*x-4*y +x.^2+3*y.^2; surf(x,y,z) 选初始点: x0=(0,0) x0=[0,0];

MATLAB非线性优化fmincon

精心整理 active-set and sqp algorithms不接受用户提供的海塞矩阵,对拉格朗日的海塞矩阵提供一个拟牛顿的近似值; 目标函数估值次数与迭代次数? 优化成功或失败 1、 (1 数( (2 如果 就会导致无限次徒劳的迭代。DiffMaxChange和DiffMinChange选项能影响求解器的改善,它们控制求导估计中有限差分的步长。 (3)从不同的初始点重新开始求解 (4)检查目标函数和约束函数的定义

举个例子,可以检查目标函数和非线性约束函数在某些特定点处返回正确的值。不可行的点不一定导致函数的错误。 (5)对问题进行中心化和标准化 当每个坐标轴对目标函数和约束函数有相同的影响时,求解器更能可靠的运行,对每个坐标轴方向乘以合适的量使得每个坐标轴的影响相同,在特定的坐标轴 (6 (7 2 在可 (1 通过求解一个线性规划问题来找到一个满足界约束和线性约束的点。 i)定义一个目标函数是常值0的线性规划问题 f=zeros(size(x0));%assumesx0istheinitialpoint ii)求解这个线性规划问题看是否有一个可行点 xnew=linprog(f,A,b,Aeq,beq,lb,ub);

iii)如果有可行点xnew,用xnew作为初始点去求解原始问题 iv)如果没有可行点,那说明原始模型建的不好,检查界约束和线性约束。(2)检查非线性约束 在保证界约束和线性约束是可行的之后,检查非线性约束: i)设置目标函数为0,然后求解优化问题,如果能找到一个可行点xnew,令 ii) a. 足。 b. 3 (1)原问题可能确实无界,即存在一系列满足问题约束的点xi,使得limf(xi)=–∞。 (2)检查原问题建模正确,求解器是最小化目标函数,如果想得到最大化,将目标函数乘以-1. (3)试着标准化或中心化原问题。

用matlab解决线性规划问题的几道题

一、用MATLAB 求解线性规划问题 (1) 编写的M 文件为: f=[-1;-1] A=[1 -2;1 2] b=[4,8] [x,feval]=linprog(f,A,b,[],[],zeros(2,1)) 所求解为:x 1=6,x 2=1;min f=-7 (2) 编写的M 文件为: f=[-4;-3] A=[3 4;3 3;4 2] b=[12;10;8] [x,feval]=linprog(f,A,b,[],[],zeros(1,2)) 所求得的解为:x 1=,x 2=;max f= (3) (4) 编写的M 文件为: f=[-1;-3;3] Aeq=[1 1 2;-1 2 1] beq=[4;4] [x,feval]=linprog(f,[],[],Aeq,beq,zeros(3,1)) 所求得的结果为:x 1=4/3,x 2=8/3,x 3=0;max f=28/3。 12121212min 24s.t.28,0f x x x x x x x x ì=--????-?镲í?+????3??121212121243max 3412..3310428,0f x x x x s t x x x x x x ì=+????+????+?í???+????3?? 12312312313min 3s.t.211423210(1,2,3)j f x x x x x x x x x x x x j =--ì????-+?????-++?í??-+=????????123123123max 3s.t.24240(1,2,3) j f x x x x x x x x x x j =+-ì????++=??í-++=????????min s.t.123f x y z x y x z ì?=++???+?í???+=???

基于MATLAB的非线性规划的求解

基于M A T L A B的非线性 规划的求解 The Standardization Office was revised on the afternoon of December 13, 2020

基于MATLAB 的非线性0-1规划的求解 学 生:易棉生 指导教师:宋来忠 三峡大学理学院 摘要:本文主要研究非线性0-1整数规划的解法。首先,通过对传统求解方法的研究,提出从0-1整数规划的变量只取值0和1这个特点来求解,为利用好这个特点,构造了一种数据结构——组合树,还根据目标函数和约束条件所含的变量是否被包含在解中取值为1的变量集中,将0-1整数规划的解细分为目标特殊解和约束特殊解。然后,把这个特点具体化为4条性质。根据这些性质,设计出合理的算法,并用MATLAB 实现该算法。实验表明,该算法是有效的。 Abstract: In this paper, the problem about solving nonlinear 0-1 integer programming is studied. Firstly the view that we can use the feature that the variables of 0-1 integer programming only have two values 0 and 1 is raised after discussing some traditional algorithms. To express the feature, a new tree structure, called combination tree in the paper is given and also object-satisfied solution and constrain-satisfied solution is defined, based on whether the variables with the value 1 in objective function and constrained condition belong to the variables with the value 1 in solution. Then it can be specified by 4 properties. According to these properties, a new algorithm is designed and implemented with MATLAB language. From the experiment, it is proved that the algorithm is effective. 关键词:0-1规划 非线性 组合树 解的标记 MATLAB key words: 0-1 integer programming; nonlinear; combination tree; the mark of solution; MATLAB 前言 本文研究的模型可是: 111min () ..()0()0{0,1}f x Ax b A x b s t C x C x x ≤=??≤=??∈? ,,,, (1) 其中,()f x 都是非线性函数,A 、b 、1A 、1b 是矩阵,1()()C x C x 、非线性矩阵函数。可以看到,本模型实际上代表了一般的0-1整数规划问题。显然,如果一个算法能求解非线性0-1整数规划,也必然能求解一般的0-1整数规划。要完满地解决这个问题,一个算法应具备两个基本条件:1.求解速度较快,即能在较短的时间内计算出

用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 ) 再建立两个函数文件:目标函数mbhs.m ;约束函数yshs.m 再回到Matlab 命令区,输入各项数据及决策变量初值数据x0,执行命令 [x,fmin]=fmincon(@mbhs,x0,A,b,Aeq,beq,L,U,@yshs) 例:单位球1222≤++z y x 内,曲面xy y x z 1.05.022--+=的上方,平面 008.0=-++z y x 之上(不是上面) ,满足上述三个条件的区域记为D ,求函数)1cos()sin(2-+-+-z e z y x e xy xyz 在D 上的最大值、最大值点。 解:(1)目标函数文件mbhs.m function f=mbhs(x) f=-exp(x(1)*x(2)*x(3))*sin(x(1)+x(2)-x(3))-exp(-x(1)*x(2))*cos(x(3)^2-1); (2)约束函数文件yshs.m function [g,h]=yshs(x) g=[x(1)^2+x(2)^2+x(3)^2-1;x(1)^2+x(2)^2-0.5-0.1*x(x)*x(2)-x(3)]; h=[]; (3)数据准备 x0=[0.0;0.02;0.02];A=[];b=[];Aeq=[1,1,1];beq=0.08; L=[-1;-1;-1];U=[1;1;1]; (4)执行命令 [x,fmin]=fmincon(@mbhs,x0,A,b,Aeq,beq,L,U,@yshs) (5)结果 ??? (注:文件素材和资料部分来自网络,供参考。请预览后才下载,期待你的好评与关注。)

基于MATLAB的非线性0-1规划的求解

4 1 基于MATLAB 的非线性0-1规划的求解 学 生:易棉生 指导教师:宋来忠 三峡大学理学院 摘要:本文主要研究非线性0-1整数规划的解法。首先,通过对传统求解方法的研究,提出从0-1整数规划的变量只取值0和1这个特点来求解,为利用好这个特点,构造了一种数据结构——组合树,还根据目标函数和约束条件所含的变量是否被包含在解中取值为1的变量集中,将0-1整数规划的解细分为目标特殊解和约束特殊解。然后,把这个特点具体化为4条性质。根据这些性质,设计出合理的算法,并用MATLAB 实现该算法。实验表明,该算法是有效的。 Abstract: In this paper, the problem about solving nonlinear 0-1 integer programming is studied. Firstly the view that we can use the feature that the variables of 0-1 integer programming only have two values 0 and 1 is raised after discussing some traditional algorithms. To express the feature, a new tree structure, called combination tree in the paper is given and also object-satisfied solution and constrain-satisfied solution is defined, based on whether the variables with the value 1 in objective function and constrained condition belong to the variables with the value 1 in solution. Then it can be specified by 4 properties. According to these properties, a new algorithm is designed and implemented with MATLAB language. From the experiment, it is proved that the algorithm is effective. 关键词:0-1规划 非线性 组合树 解的标记 MATLAB key words: 0-1 integer programming; nonlinear; combination tree; the mark of solution; MA TLAB 前言 本文研究的模型可是: 111min () ..()0()0{0,1}f x Ax b A x b s t C x C x x ≤=??≤=??∈?,,,, (1) 其中,()f x 都是非线性函数,A 、b 、1A 、1b 是矩阵,1()()C x C x 、非线性矩阵函数。 可以看到,本模型实际上代表了一般的0-1整数规划问题。显然,如果一个算法能求解非线性0-1整数规划,也必然能求解一般的0-1整数规划。要完满地解决这个问题,一个算法应具备两个基本条件:1.求解速度较快,即能在较短的时间内计算出答案;2.能够判断出所求解的0-1整数规划的解的情况,即计算出的答案要么是无解要么是全局最优解。 但是,目前对这类问题的许多研究都只局限于线性0-1整数规划,利用线性性质来设计一些算法,如隐枚举法和匈牙利法等(详见参考文献5 ~16);有些算法虽然可以求解任何0-1整数规划,但是不能肯定所求的解是全局最优解,如遗传算法和模拟退火算法等。求解非线性0-1整数规划的算法,肯定不能再依赖于具体函数的性质了,因为非线性函数的性质是无法预料的。从理论上将,穷举法不依赖于目标函数和约束条件的性质,能够获得全局最优解,但实际上却不可行。这就给我们指明了一个方向,求解非线性0-1整数规划的算法可以基于穷举法,但需要对其做大量的优化。 1 解的定义

用MATLAB解二次型规划和一般非线性规划问题

实验报告11 实验名称:用MATLAB 解二次型规划和一般非线性规划问题 实验目的:学会如何运用MATLAB 解二次型规划和一般非线性规划问题; 实验内容: 书P211 11、试求解下面的二次型规划问题。 212 2212136442min x x x x x x --+- ?????≥≤+≤+0943..2 ,12121x x x x x t s x 解: >> f=[-6,-3];H=[4,-4;-4,8]; >> A=[1,1;4,1];B=[3,9];Aeq=[];Beq=[];xm=zeros(2,1); >> [x,f_opt]=quadprog(H,f,A,B,Aeq,Beq,xm,[],[]) Warning: Your Hessian is not symmetric. Resetting H=(H+H')/2. > In quadprog at 232 Warning: Large-scale method does not currently solve this problem formulation, using medium-scale method instead. > In quadprog at 263 Optimization terminated. x = 1.9500 1.0500 f_opt = -11.0250 12、试求解下面的非线性规划问题。 () 12424min 22122211++++x x x x x e x

???????≤≤--≥≥++-≤+10 ,10105.10..2121212121x x x x x x x x x x t s x 解: function [c,ceq]=cdd01(x) c=[x(1)+x(2);x(1)*x(2)-x(1)-x(2)+1.5;-x(1)*x(2)-10];ceq=[]; >> y=@(x)exp(x(1))*(4*x(1)*x(1)+2*x(2)*x(2)+4*x(1)*x(2)+2*x(2)+1); x0=[1;1];xm=[-10;-10];xM=[10;10];A=[];B=[];Aeq=[];Beq=[]; [x,f_opt,c,d]=fmincon(y,x0,A,B,Aeq,Beq,xm,xM,@cdd01) Warning: Trust-region-reflective method does not currently solve this type of problem, using active-set (line search) instead. > In fmincon at 422 Maximum number of function evaluations exceeded; increase OPTIONS.MaxFunEvals. x = 3.1740 -7.9967 f_opt = 1.2351e+003 c = d = iterations: 54 funcCount: 201 lssteplength: 1 stepsize: 5.6428 algorithm: 'medium-scale: SQP, Quasi-Newton, line-search' firstorderopt: 390.0759 constrviolation: 1.7857e-008 message: [1x79 char]

线性规划问题Matlab求解

用MATLAB优化工具箱解线性规划 命令:x=linprog(c,A,b) 命令:x=linprog(c,A,b,Aeq,beq) 注意:若没有不等式:存在,则令A=[ ],b=[ ]. 若没有等式约束, 则令Aeq=[ ], beq=[ ].命令:[1] x=linprog(c,A,b,Aeq,beq, VLB,VUB) [2] x=linprog(c,A,b,Aeq,beq, VLB,VUB, X0) 注意:[1] 若没有等式约束, 则令Aeq=[ ], beq=[ ]. [2]其中X0表示初始点 4、命令:[x,fval]=linprog(…) 返回最优解x及x处的目标函数值fval. 例1 解编写M文件小如下: c=[ ]; A=[ ; 0 0 0 0;0 0 0 0;0 0 0 0 ]; b=[850;700;100;900]; Aeq=[]; beq=[]; vlb=[0;0;0;0;0;0]; vub=[]; [x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub) 例2 解: 编写M文件如下: c=[6 3 4]; A=[0 1 0]; b=[50]; Aeq=[1 1 1]; beq=[120]; vlb=[30,0,20]; vub=[]; [x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub 例3 (任务分配问题)某车间有甲、乙两台机床,可用于加工三种工件。 假定这两台车床的可用台时数分别为800和900,三种工件的数量分别为400、 600和500,且已知用三种不同车床加工单位数量不同工件所需的台时数和加工 费用如下表。问怎样分配车床的加工任务,才能既满足加工工件的要求,又使 加工费用最低 解设在甲车床上加工工件1、2、3的数量分别为x1、x2、x3,在乙车床上 加工工件1、2、3的数量分别为x4、x5、x6。可建立以下线性规划模型: 编写M文件如下: f = [13 9 10 11 12 8]; A = [ 1 0 0 0 0 0 0 ]; b = [800; 900]; Aeq=[1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1]; beq=[400 600 500]; vlb = zeros(6,1); vub=[];

相关文档
相关文档 最新文档