基于matlab求解非线性规划问题

合集下载

基于matlab求解非线性规划问题

基于matlab求解非线性规划问题

计算结果为:
x =[ 3.0000 5.0000 0.0000 7.0000 0.0000 1.0000 0.0000 0.0000 4.0000 0.0000 6.0000 10.0000]’ fval = 136.2275
即 由 料 场 A、 B 向 6 个 工 地 运 料 方 案 为 : 1 料场 A 料场 B 3 0 2 5 0 3 0 4 4 7 0 5 0 6 6 1 10
(二)使用临时料场的情形
使用两个临时料场A(5,1),B(2,7).求从料场j向工地i的运送量 为Xij,在各工地用量必须满足和各料场运送量不超过日储量的 条件下,使总的吨千米数最小,这是线性规划问题. 线性规划模 型为:
min f
aa ( i , j ) X
j 1 i 1
2
6
ij
2、先建立M-文件 fun3.m: function f=fun3(x); f=-x(1)-2*x(2)+(1/2)*x(1)^2+(1/2)*x(2)^2
3、再建立主程序youh2.m: x0=[1;1]; A=[2 3 ;1 4]; b=[6;5]; Aeq=[];beq=[]; VLB=[0;0]; VUB=[]; [x,fval]=fmincon('fun3',x0,A,b,Aeq,beq,VLB,VUB) 4、运算结果为: x = 0.7647 1.0588 fval = -2.0294
工 地 位 置 ( a, b) 及 水 泥 日 用 量 d 1 a b d 1 .2 5 1 .2 5 3 2 8 .7 5 0 .7 5 5 3 0 .5 4 .7 5 4 4 5 .7 5 5 7 5 3 6 .5 6 6 7 .2 5 7 .2 5 11

用Matlab解非线性规划问题[1]

用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.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解法
特点
非线性规划问题通常具有多个局部最 优解,解的稳定性与初始条件有关, 需要使用特定的算法来找到全局最优 解。
非线性规划的应用场景
数据拟合、模型选择、参 数估计等。
生产计划、物流优化、设 备布局等。
投资组合优化、风险管理、 资本预算等。
金融
工业
科研
非线性规划的挑战与解决方法
挑战
非线性规划问题可能存在多个局部最优解,且解的稳定性与初始条件密切相关,需要使用特定的算法来找到全局 最优解。
共轭梯度法
总结词
灵活、适用于大型问题、迭代方向交替
详细描述
共轭梯度法结合了梯度下降法和牛顿法的思 想,通过迭代更新搜索方向,交替使用梯度 和共轭方向进行搜索。该方法适用于大型非 线性规划问题,具有较好的灵活性和收敛性。
04
非线性规划问题的约束 处理
不等式约束处理
处理方式
在Matlab中,可以使用 `fmincon`函数来求解非线性规划 问题,该函数可以处理不等式约 束。
要点二
详细描述
这类问题需要同时考虑多个目标函数,每个目标函数可能 有不同的优先级和权重。在Matlab中,可以使用 `gamultiobj`函数来求解这类问题。该函数可以处理具有 多个目标函数的约束优化问题,并允许用户指定每个目标 函数的权重和优先级。
谢谢观看
具体操作
将等式约束条件表示为线性方程组,并使用`Aeq`参 数指定系数矩阵,使用`beq`参数指定常数向量。
注意事项
等式约束条件需要在可行域内满足,否则会 导致求解失败。
边界约束处理
处理方式
边界约束可以通过在目标函数中添加惩罚项来处理,或者使用专门的优化算法来处理。
具体操作
在目标函数中添加惩罚项时,需要在目标函数中添加一个与边界约束相关的项,并调整 其权重以控制边界约束的重要性。

MATLAB优化工具箱--线性规划-非线性规划

MATLAB优化工具箱--线性规划-非线性规划
数学实验
linprog输入参数说明: f, A, b, Aeq, beq lb,ub 边界设置 说明: 如果x(i)无边界,则 lb(i) = -inf, ub(i) = inf
6
linprog 输出参数说明: x 决策变量取值 fval 目标函数最优值
exitflag > 0 成功找到最优解 0 达到最大迭代次数也没有找到最优解 < 0 该线性规划问题不可行或者linprog计
10
fmincon函数求解形如下面的有约束非线性规 划模型
一般形式:
min f ( X ) s.t. AX b
Aeq X beq l X u c(X ) 0 ceq ( X ) 0
Matlab求解有约束非线性最小化 1.约束中可以有等式约束 2.可以含线性、非线性约束均可
数学实验
输入参数语法:
例子:某农场种植两种作物A、B,需要甲、乙两种化肥。种植 每亩作物A和作物B分别需用的化肥数,可得利润及农场现有化
肥数量如下表所示:
问在现有条件下,如何安排种植,才能使利润最大?
作物
每亩所需化肥 (百公斤)
现有化肥
AB (百公斤)
化肥

23
100) 6 4
数学实验
例题建模
[x,fval,exitflag,output,lambda]=fmincon(fun,x0,...)
数学实验
输入参数的几点说明
模型中如果没有A,b,Aeq,beq,lb,ub的限制,则以空矩阵[ ]作为 参数传入; nonlcon:如果包含非线性等式或不等式约束,则将这些函数
编写为一个Matlab函数, nonlcon就是定义这些函数的程序文件名;
3

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

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

非线性整数规划的遗传算法Matlab程序(附图)通常,非线性整数规划是一个具有指数复杂度的NP问题,如果约束较为复杂,Matlab 优化工具箱和一些优化软件比如lingo等,常常无法应用,即使能应用也不能给出一个较为令人满意的解。

这时就需要针对问题设计专门的优化算法。

下面举一个遗传算法应用于非线性整数规划的编程实例,供大家参考!模型的形式和适应度函数定义如下:这是一个具有200个01决策变量的多目标非线性整数规划,编写优化的目标函数如下,其中将多目标转化为单目标采用简单的加权处理。

function Fitness=FITNESS(x,FARM,e,q,w)%% 适应度函数% 输入参数列表% x 决策变量构成的4×50的0-1矩阵% FARM 细胞结构存储的当前种群,它包含了个体x% e 4×50的系数矩阵% q 4×50的系数矩阵% w 1×50的系数矩阵%%gamma=0.98;N=length(FARM);%种群规模F1=zeros(1,N);F2=zeros(1,N);for i=1:Nxx=FARM{i};ppp=(1-xx)+(1-q).*xx;F1(i)=sum(w.*prod(ppp));F2(i)=sum(sum(e.*xx));endppp=(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(mi n([sign(f2-F2);zeros(1,N)]));针对问题设计的遗传算法如下,其中对模型约束的处理是重点考虑的地方function [Xp,LC1,LC2,LC3,LC4]=MYGA(M,N,Pm)%% 求解01整数规划的遗传算法%% 输入参数列表% M 遗传进化迭代次数% N 种群规模% Pm 变异概率%% 输出参数列表% Xp 最优个体% LC1 子目标1的收敛曲线% LC2 子目标2的收敛曲线% LC3 平均适应度函数的收敛曲线% LC4 最优适应度函数的收敛曲线%% 参考调用格式[Xp,LC1,LC2,LC3,LC4]=MYGA(50,40,0.3)%% 第一步:载入数据和变量初始化load eqw;%载入三个系数矩阵e,q,w%输出变量初始化Xp=zeros(4,50);LC1=zeros(1,M);LC2=zeros(1,M);LC3=zeros(1,M);LC4=zeros(1,M);Best=inf;%% 第二步:随机产生初始种群farm=cell(1,N);%用于存储种群的细胞结构k=0;while k %以下是一个合法个体的产生过程x=zeros(4,50);%x每一列的1的个数随机决定for i=1:50R=rand;Col=zeros(4,1);if R<0.7RP=randperm(4);%1的位置也是随机的Col(RP(1))=1;elseif R>0.9RP=randperm(4);Col(RP(1:2))=1;elseRP=randperm(4);Col(RP(1:3))=1;endx(:,i)=Col;end%下面是检查行和是否满足约束的过程,对于不满足约束的予以抛弃 Temp1=sum(x,2);Temp2=find(Temp1>20);if length(Temp2)==0k=k+1;farm{k}=x;endend%% 以下是进化迭代过程counter=0;%设置迭代计数器while counter%% 第三步:交叉%交叉采用双亲双子单点交叉newfarm=cell(1,2*N);%用于存储子代的细胞结构Ser=randperm(N);%两两随机配对的配对表A=farm{Ser(1)};%取出父代AB=farm{Ser(2)};%取出父代BP0=unidrnd(49);%随机选择交叉点a=[A(:,1:P0),B(:,(P0+1):end)];%产生子代ab=[B(:,1:P0),A(:,(P0+1):end)];%产生子代bnewfarm{2*N-1}=a;%加入子代种群newfarm{2*N}=b;%以下循环是重复上述过程for i=1:(N-1)A=farm{Ser(i)};B=farm{Ser(i+1)};P0=unidrnd(49);a=[A(:,1:P0),B(:,(P0+1):end)];b=[B(:,1:P0),A(:,(P0+1):end)];newfarm{2*i-1}=a;newfarm{2*i}=b;endFARM=[farm,newfarm];%新旧种群合并%% 第四步:选择复制FLAG=ones(1,3*N);%标志向量,对是否满足约束进行标记%以下过程是检测新个体是否满足约束for i=1:(3*N)x=FARM{i};sum1=sum(x,1);sum2=sum(x,2);flag1=find(sum1==0);flag2=find(sum1==4);flag3=find(sum2>20);if length(flag1)+length(flag2)+length(flag3)>0FLAG(i)=0;%如果不满足约束,用0加以标记endendNN=length(find(FLAG)==1);%满足约束的个体数目,它一定大于等于N NEWFARM=cell(1,NN);%以下过程是剔除不满主约束的个体kk=0;for i=1:(3*N)if FLAG(i)==1kk=kk+1;NEWFARM{kk}=FARM{i};endend%以下过程是计算并存储当前种群每个个体的适应值SYZ=zeros(1,NN);syz=zeros(1,N);for i=1:NNx=NEWFARM{i};SYZ(i)=FITNESS2(x,NEWFARM,e,q,w);%调用适应值子函数endk=0;%下面是选择复制,选择较优的N个个体复制到下一代while k minSYZ=min(SYZ);posSYZ=find(SYZ==minSYZ);POS=posSYZ(1);k=k+1;farm{k}=NEWFARM{POS};syz(k)=SYZ(POS);SYZ(POS)=inf;end%记录和更新,更新最优个体,记录收敛曲线的数据minsyz=min(syz);meansyz=mean(syz);pos=find(syz==minsyz);LC3(counter+1)=meansyz;if minsyz Best=minsyz;Xp=farm{pos(1)};endLC4(counter+1)=Best;ppp=(1-Xp)+(1-q).*Xp;LC1(counter+1)=sum(w.*prod(ppp));LC2(counter+1)=sum(sum(e.*Xp));%% 第五步:变异for i=1:Nif Pm>rand%是否变异由变异概率Pm控制AA=farm{i};%取出一个个体POS=unidrnd(50);%随机选择变异位R=rand;Col=zeros(4,1);if R<0.7RP=randperm(4);Col(RP(1))=1;elseif R>0.9RP=randperm(4);Col(RP(1:2))=1;elseRP=randperm(4);Col(RP(1:3))=1;end%下面是判断变异产生的新个体是否满足约束,如果不满足,此次变异无效 AA(:,POS)=Col;Temp1=sum(AA,2);Temp2=find(Temp1>20);if length(Temp2)==0farm{i}=AA;endendendcounter=counter+1end%第七步:绘收敛曲线图figure(1);plot(LC1);xlabel('迭代次数');ylabel('子目标1的值');title('子目标1的收敛曲线'); figure(2);plot(LC2);xlabel('迭代次数');ylabel('子目标2的值');title('子目标2的收敛曲线'); figure(3);plot(LC3);xlabel('迭代次数');ylabel('适应度函数的平均值');title('平均适应度函数的收敛曲线'); figure(4);plot(LC4);xlabel('迭代次数');ylabel('适应度函数的最优值');title('最优适应度函数的收敛曲线');贴出一幅运行得到的收敛曲线。

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≤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为给定的搜索的初始点。

非线性规划问题的Matlab实现求解

非线性规划问题的Matlab实现求解

本科毕业论文(设计)论文题目:非线性规划问题的建模与Matlab求解实现的案例分析学生:许富豪学号:1204180137专业:信息与计算科学班级:计科1201指导教师:王培勋完成日期:2015年6月25日非线性规划问题的建模与Matlab求解实现的案例分析容摘要非线性规划问题通常极其抽象,并且求解计算极其复杂,本文举个别非线性规划问题案例,通过对抽象的非线性规划问题先建立数学模型,再利用Matlab软件高效快捷的实现非线性规划问题的求解,最后分析利用Matlab软件得出的案例结果。

关键词:非线性规划建立数学模型Matlab目录(三号黑体居中)空一行空一行一、※※※※※※ (1)(一)※※※※※※ (1)1.※※※※※※※※※※※※※ (1)2.※※※※※※※ (4)(二)※※※※ (7)(三)※※※※※※※※ (12)二、※※※※ (16)(一)※※※※※ (16)(二)※※※※※ (24)1.※※※※ (24)2.※※※※※ (30)3.※※※※ (31)(三)※※※※ (33)三、※※※※ (36)(一)※※※※※ (38)(二)※※※※ (43)四、※※※※ (45)参考文献 (48)附录 (50)(标题顺序号、容及其开始页码均为四号宋体,一级标题为黑体四号)序 言非线性规划问题通常难以用人力计算,所以我们一般利用Matlab 软件代替人去计算抽象的非线性规划问题,解决了耗费时间、耗费精力的问题,快速准确的得出计算结果。

因此,善于利用Matlab 实现非线性规划问题的求解非常重要,而求解非线性规划问题之前必须先对问题进行建立数学模型,才能准确的理解题意并快速的运用Matlab 求解。

一、非现性规划的基本概念(一)定义如果目标函数或约束条件中至少有一个是非线性函数,则最优化问题就叫做非线性规划问题,简记为NP 。

(二)一般形式min (),n f x x E ∈,()=0(=1,2,..()0(j=1,2i jh x j m s t g x l ⋯≤⎩⋯⎧⎨),,)其中:1,2,n =()Tx x x x ⋯称为模型(NP )的决策变量,f 称为目标函数,(=1,...,)i h i m 和(=1,...,)j g j l 称为约束函数;()=0(=1,...,)i h x i m 称为等式约束;()0(=1,...,)j g x j l ≤称为不等式约束。

非线性规划matlab求解

非线性规划matlab求解

在matlab 中非线性规划的数学模型可写成一下形式:minf(X)s.t. Ax ≪B Aeq .x =Beq C (x )≪0Ceq x =0其中,f(x)是标量函数;A,B,Aeq,Beq 是相应维数的矩阵和向量;C(x),Ceq(x)是非线性向量函数。

Matlab 中的命令是X=FMINCON(FUN,X0,A,B,Aeq,Beq,LB,UB,NONLCON,OPTIONS)它的返回值是向量x 。

其中,FUN 是用M 文件定义的函数f(x)。

X0是X 的初始值。

A ,B ,Aeq ,Beq 定义了线性约束AX ≪B ,Aeq*X=Beq ,如果没有线性约束,则A=[],B=[],Aeq=[],Beq=[]。

LB 和UB 是变量x 的下界和上界,如果上界和下界没有约束,则LB=[],UB=[];如果X 无下界,则LB=-inf;如果X 无上界,则UB=inf 。

NONLCON 是用M 文件定义的非线性向量函数C(x),Ceq(x)。

OPTIONS 定义了优化函数,可以使用MATLAB 默认的参数设置。

例求解下列非线性规划问题:max z= X 1+ X 2+ X 3+ X 4 s.t.x 1≪4001.1x 1+x 2≪4401.21x 1+1.1x 2+x 3≪4841.331x 1+1.21x 2+1.1x 3+x 4≪532.4X i≫0,i =1,2,3,4(1)编写M 文件,定义目标函数:function f=fun44(x)f=-(sqrt(x(1))+sqrt(x(2))+sqrt(x(3))+sqrt(x(4)) );(2)编写M 文件,定义约束条件function[g,ceq]=mycon1(x)g(1)=x(1)-400;g(2)=1.1*x(1)+x(2)-440;g(3)=1.21*x(1)+1.1*x(2)+x(3)-484;g(4)=1.331*x(1)+1.21*x(2)+1.1*x(3)+x(4)-532.4;ceq=0(3)编写主程序x0=[1;1;1;1];lb=[0;0;0;0];ub=[];A=[];b=[];Aeq=[];beq=[];[x,fval] = fmincon('fun44',x0,A,b,Aeq,beq,lb,ub,'mycon1')输出结果x =86.1883104.2879 126.1883 152.6879fval =-43.0860。

应用软件5 Matlab求解非线性规划问题

应用软件5 Matlab求解非线性规划问题

佛山科学技术学院上 机 报 告课程名称 数学应用软件上机项目 Matlab 求解非线性规划问题 专业班级 姓名 学号一. 上机目的本节课我们学习了Matlab 求解非线性规划问题,主要有以下内容: 1. 了解非线性规划的基本理论知识。

2. 学习了Matlab 中fmincon 及guaqprog 命令格式,注意把规划中的目标函数及约束条件化为矩阵或向量的形式。

掌握用matlab 编写程序解决非线性规划模型的问题。

二. 上机内容1、用quadprog 和fmincon 求解二次规划问题min f(x):初始值为(1,1)2、求解优化问题:min 321)(x x x x f -= S.T.72220321≤++≤x x x注:取初值为(10,10,10)。

3、求表面积为常数150 m 2的体积最大的长方体体积及各边长。

注:取初值为(4,5,6)。

三. 上机方法与步骤给出相应的问题分析及求解方法,并写出Matlab 程序,并有上机程序显示截图。

1、用quadprog 和fmincon 求解二次规划问题min f(x):初始值为(1,1)Matlab程序:根据目标函数和约束条件利用quadprog来写主程序;而fmincon则根据目标函数和约束条件来定义目标函数和主程序。

Quadprog程序: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,fval]=quadprog(H,c,A,b,Aeq,beq,vlb,vub)Fmincon程序:function f=fun1(x);f=(1/2)*x(1)^2+x(2)^2-x(1)*x(2)-2*x(1)-6*x(2);x0=[1;1];A=[1 1;-1 2;2 1]; b=[2;2;3]; Aeq=[]; beq=[]; vlb=[0;0]; vub=[];[x,fval]=fmincon('fun1',x0,A,b,Aeq,beq,vlb,vub)2、求解优化问题:min 321)(x x x x f -= S.T.72220321≤++≤x x x注:取初值为(10,10,10)。

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

基于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 traditionalalgorithms. 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规划 非线性 组合树 解的标记 MATLABkey 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 、非线性矩阵函数。

MATLAB非线性规划问题

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≤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为给定的搜索的初始点。

MATLAB非线性规划问题

MATLAB非线性规划问题

封面作者:PanHongliang仅供个人学习一.非线性规划课题实例1 表面积为36平方M的最大长方体体积.建立数学模型:设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为给定的搜索的初始点.options指定优化参数.返回的x为最优解向量;fval为x处的目标函数值;exitflag描述函数的输出条件;output返回优化信息;grad返回目标函数在x处的梯度.Hessian返回在x处目标函数的Hessian矩阵信息.例1 :求程序:通过绘图确定一个初始点:[x,y]=meshgrid(-10:.5:10)。

用Matlab求解非线性规划

用Matlab求解非线性规划

用Matlab 求解非线性规划1.无约束优化问题)(min x f n Rx ∈,其中向量x 的n 个分量i x 都是决策变量,称)(x f 目标函数。

用Matlab 求解:先建立函数文件mbhs.m ,内容是)(x f 的表达式;再回到Matlab 命令区输入决策变量初值数据x0,再命令[x,fmin]=fminunc(@mbhs,x0) 如:)32(m in 22212x 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 Rx 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 Rx ≤≤=≤=≤∈ 约束条件中:把线性的式子提炼出来得前两个式子;后三个式子都是列向量。

(如:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡===⨯⨯)()()([],[],,,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 上的最大值、最大值点。

Matlab无约束非线性规划的求解

Matlab无约束非线性规划的求解

Matlab ⽆约束⾮线性规划的求解标准形式:min f (X )没有任何的约束条件,在matlab 中,fminsearch() 和 fminunc() 可⽤于求解⾮线性规划。

fminsearch 是⽤单纯形法寻优fminunc 为⽆约束优化提供了⼤型优化和中型优化算法MATLAB 求解⽆约束⾮线性规划的步骤①⾸先建⽴⼀个函数M ⽂件, 如 fun.m ,⽤以储存⽬标函数。

②其次,调⽤格式[x.favl,exitflag,output]=fminunc('fun',X0,options) 或[x.favl,exitflag,output]=fminsearch('fun',X0,options)等号左侧:x:返回最优解。

favl :返回⽬标函数在最优解 x 点的函数值。

exitflag :返回算法的终⽌标志。

output :返回优化算法信息的⼀个数据结构。

等号右侧:第⼀个参数是调⽤⽬标函数储存的⽂件第⼆个参数是决策变量的初始值第三个输⼊参数 options 为设置优化选项参数例:给定初始值为[-1,1],求minf (x )=(4x 21+2x 22+4x 1x 2+2x 2+1)ex 11.编写函数fun.m:function f=fun(x)f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);end 2.输⼊如下:x0=[-1,1];[x,f]=fminunc('fun',x0)3.运⾏结果显⽰:x =0.5000 -1.0000f =3.6609e-16min f (X )min f (x )=(4+2+4+2+1)x 21x 22x 1x 2x 2ex 1。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

例2
min
f x1 2 x 2
1 2
2 x1

1 2
2 x2
2x1+3x2 6 s.t x1+4x2 5 x1,x2 0
1、写成标准形式:
min f x1 2 x 2
1 2
2 x1

1 2
2 x2
s.t.
2 x1 3 x 2 6 0 x1 4 x 2 5 0 0 x1 0 x2
2、先建立M-文件 fun3.m: function f=fun3(x); f=-x(1)-2*x(2)+(1/2)*x(1)^2+(1/2)*x(2)^2
3、再建立主程序youh2.m: x0=[1;1]; A=[2 3 ;1 4]; b=[6;5]; Aeq=[];beq=[]; VLB=[0;0]; VUB=[]; [x,fval]=fmincon('fun3',x0,A,b,Aeq,beq,VLB,VUB) 4、运算结果为: x = 0.7647 1.0588 fval = -2.0294
工 地 位 置 ( a, b) 及 水 泥 日 用 量 d 1 a b d 1 .2 5 1 .2 5 3 2 8 .7 5 0 .7 5 5 3 0 .5 4 .7 5 4 4 5 .7 5 5 7 5 3 6 .5 6 6 7 .2 5 7 .2 5 11
(一)、建立模型
记工地的位置为(ai,bi),水泥日用量为di,i=1,…,6;料场位置为 (xj,yj),日储量为ej,j=1,2;从料场j向工地i的运送量为Xij。
2.再建立M文件mycon.m定义非线性约束:
function [g,ceq]=mycon(x) g=[x(1)+x(2);1.5+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10];
3.主程序youh3.m为: x0=[-1;1]; A=[];b=[]; Aeq=[1 1];beq=[0]; vlb=[];vub=[]; [x,fval]=fmincon('fun4',x0,A,b,Aeq,beq,vlb,vub,'mycon')
注意:
[1] fmincon函数提供了大型优化算法和中型优化算法。默认 时,若在fun函数中提供了梯度(options参数的GradObj设置 为’on’),并且只有上下界存在或只有等式约束,fmincon 函数将选择大型算法。当既有等式约束又有梯度约束时,使用中 型算法。 [2] fmincon函数的中型算法使用的是序列二次规划法。在每 一步迭代中求解二次规划子问题,并用BFGS法更新拉格朗日 Hessian矩阵。 [3] fmincon函数可能会给出局部最优解,这与初值X0的选取 有关。
(4) x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’) (5)x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’,optio ns)
输出极值点
M文件
迭代的初值
变量上下限
参数说明
(6) [x,fval]= fmincon(...) (7) [x,fval,exitflag]= fmincon(...) (8)[x,fval,exitflag,output]= fmincon(...)
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)
(二)使用临时料场的情形
使用两个临时料场A(5,1),B(2,7).求从料场j向工地i的运送量 为Xij,在各工地用量必须满足和各料场运送量不超过日储量的 条件下,使总的吨千米数最小,这是线性规划问题. 线性规划模 型为:
min f
aa ( i , j ) X
j 1 i 1
2
6
ij
4. 运算结果为: x= 4.0000 3.0000 fval =-11.0000 exitflag = 1 output = iterations: 4 funcCount: 17 stepsize: 1 algorithm: [1x44 ] firstorderopt: [] cgiterations: []
应用实例: 供应与选址
某公司有6个建筑工地要开工,每个工地的位置(用平面坐标系 a,b表示,距离单位:千米 )及水泥日用量d(吨)由下表给出。目 前有两个临时料场位于A(5,1),B(2,7),日储量各有20吨。假设从 料场到工地之间均有直线道路相连。 (1)试制定每天的供应计划,即从A,B两料场分别向各工地运 送多少吨水泥,使总的吨千米数最小。 (2)为了进一步减少吨千米数,打算舍弃两个临时料场,改建两 个新的,日储量各为20吨,问应建在何处,节省的吨千米数有多大?
解非线性规划
1、二次型规划
标准型为: Min Z=
1 2
XTHX+cTX
Aeq X beq
s.t. AX<=b
VLB≤X≤VUB 用MATLAB软件求解,其输入格式如下:
1. 2. 3. 4. 5. 6. 7. 8.
x=quadprog(H,C,A,b); x=quadprog(H,C,A,b,Aeq,beq); x=quadprog(H,C,A,b,Aeq,beq,VLB,VUB); x=quadprog(H,C,A,b, Aeq,beq ,VLB,VUB,X0); x=quadprog(H,C,A,b, Aeq,beq ,VLB,VUB,X0,options); [x,fval]=quaprog(...); [x,fval,exitflag]=quaprog(...); [x,fval,exitflag,output]=quaprog(...);
编写程序gying1.m:
clear a=[1.25 8.75 0.5 5.75 3 7.25]; b=[1.25 0.75 4.75 5 6.5 7.75]; d=[3 5 4 7 6 11]; x=[5 2]; y=[1 7]; e=[20 20]; for i=1:6 for j=1:2 aa(i,j)=sqrt((x(j)a(i))^2+(y(j)-b(i))^2); end end CC=[aa(:,1); aa(:,2)]'; A=[1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1];
B=[20;20]; Aeq=[1 0 0 0 0 0 1 0 0 0 0 0 010000010000 001000001000 000100000100 000010000010 0 0 0 0 0 1 0 0 0 0 0 1 ]; beq=[d(1);d(2);d(3);d(4);d(5);d(6 )]; VLB=[0 0 0 0 0 0 0 0 0 0 0 0];VUB=[]; x0=[1 2 3 0 1 0 0 1 0 1 0 1]; [xx,fval]=linprog(CC,A,B,Aeq,be q,VLB,VUB,x0)
1.先建立M-文件fun.m定义目标函数: 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]; [x,fval,exitflag,output] =fmincon('fun',x0,[],[],[],[],VLB,VUB,'mycon2')
例3
f (x) e
s.t.
x
1
2 ( 4 x1

2 2 x2
4 x1 x 2 2 x 2 1 )
x1+x2=0 1.5+x1x2 - x1 - x2 0 -x1x2 –10 0
1.先建立M文件 fun4.m,定义目标函数:
function f=fun4(x); f=exp(x(1)) *(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);
目 标 函 数 为 : min f

2
6
X ij
( x j a i ) ( y j bi )
2
2
j 1 i 1

约束条件为:
2
X ij d i , X ij e j ,
i 1, 2 , , 6
j 1 6

j 1, 2
i 1
当用临时料场时决策变量为:Xij, 当不用临时料场时决策变量为:Xij,xj,yj。
3. 运算结果为: x = -1.2250 1.2250 fval = 1.8951
例4
s .t .
min f X g1 X g2X
2 x1 x 2
2 x1
2 25 x12 x 2 0
7

2 x2
0
0 x1 5 , 0 x 2 10
3、运算结果为: x =0.6667 1.3333
相关文档
最新文档