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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
9
程序运行结果
输出: Optimization terminated successfully. optx =
25.0000 10.0000 funvalue = -190.0000 exitflag =
1
10
解释得出实际问题的解 当分别种植A、B两种作物为25亩、10亩时,预计共获得利润190(百元)。
< 0 该线性规划问题不可行或者linprog计算失败
8
例题的求解程序
模型: max 6x1+4x2 s.t. 2x1+5x2 ≤100
4x1+2x2 ≤120
Matlab求解程序:
A=[2 5;4 2]; b=[100 120]; f=-[6 4]; [optx ,funvalue,exitflag]=linprog(f,A,b,[],[],[0 0],[inf,inf])
14
fmincon示例
min
2 x12
3
x
2 2
4
x
2 3
x1 x2 x3 1000
s.t. x12
x
2 2
2x3
900
x
i
0i
1,2,3
求解步骤: ▪ (1)编写目标函数文件(这里文件名用myobjfun2.m) ▪ (2)编写约束条件函数文件(mymodelcons.m) ▪ (3)编写调用fmincon主程序(mymain2.m)
3
100
2
120
4
2
例题建模
典型的优化问题 三大要素:
▪ 目标:种植A,B两种作物获得最大利润 ▪ 决策:安排种植A,B两种作物各所少亩 ▪ 约束:肥料限制;种植土地面积限制 建立模型
max 6x1+4x2 s.t. 2x1+5x2 ≤100
4x1+2x2 ≤120
3
Matlab优化工具箱
6
linprog输入参数说明: f, A, b, Aeq, beq lb,ub 边界设置 说明: 如果x(i)无边界,则 lb(i) = -inf, ub(i) = inf
7
linprog
输出参数说明:
x 决策Байду номын сангаас量取值
fval
目标函数最优值
exitflag
> 0 成功找到最优解
0 达到最大迭代次数也没有找到最优解
清洁工要打扫温室上方的楼房的窗户。他只有借助于梯子,一头放在花园中,一头靠在楼房的墙上,攀援 上去进行工作。他只有一架20米长的梯子,你认为他能否成功?能满足要求的梯子的最小长度是多少?请 就以上问题建立数学模型,并编程求解。
19
提示:
20
16
文件myobjfun2.m
fun='myobjfun2';%目标函数文件名字符串 x0=[0 0 1000];%初始点,注意满足等式约束 %基本约束条件初始化 A=[];b=[];Aeq=[];beq=[]; lb=[0 0 0];ub=[inf,inf,inf]; nonlcon='mymodelcons';%约束条件文件名 %调用fmincon求解 [x,fval,exitflag]= fmincon(fun,x0,A,b,Aeq,beq,...
13
输入参数的几点说明
模型中如果没有A,b,Aeq,beq,lb,ub的限制,则以空矩阵[ ]作为 参数传入; nonlcon:如果包含非线性等式或不等式约束,则将这些函数
编写为一个Matlab函数, nonlcon就是定义这些函数的程序文件名; 不等式约束 c(x)<=0 等式约束 ceq(x)=0. 如果nonlcon=‘mycon’ ; 则myfun.m定义如下 function [c,ceq] = mycon(x) c = ... % 计算非线性不等式约束在点x处的函数值 ceq = ... %计算机非线性等式约束在点x处的函数值
MATLAB优化工具箱线性规划非 线性规划
例子:某农场种植两种作物A、B,需要甲、乙两种化肥。种植每亩作物A和作物B分别需用的化肥数,可得利润与农场 现有化肥数量如下表所示:
问在现有条件下,如何安排种植,才能使利润最大?
作物
每亩所需化肥
A (百公斤)
化肥

2

4
每亩利润(百元) 6
现有化肥
B (百公斤)
11
fmincon函数求解形如下面的有约束非线性规划模型
一般形式:
min f ( X ) s .t . AX b
A eq X b eq l X u c(X ) 0 c eq ( X ) 0
Matlab求解有约束非线性最小化 1.约束中可以有等式约束 2.可以含线性、非线性约束均可
12
输入参数语法: x = fmincon(fun,x0,A,b) x = fmincon(fun,x0,A,b,Aeq,beq) x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub) x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon) x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2, ...) [x,fval,exitflag,output,lambda]=fmincon(fun,x0,...)
lb,ub,nonlcon)
17
学习小结
最优化问题建模的关键是先要确定三要素,再转化为数学表达式(数学模型)。 学习中既要初步掌握最优化问题的建模步骤,也要善于运用Matlab的优化工具箱求解优化模型。 有些模型可以采用多个Matlab函数求解,可以比较结果,加深认识。
18
思考题
一幢楼房的后面是一个很大的花园。在花园中紧靠着楼房建有一个温室,温室高10英尺,延伸进花园7英尺。
线性规划:linprog 非线性规划:fminbnd,fminsearch,fmincon
4
Matlab求解线性规划模型 函数linprog
求解下列形式的线性规划模型:
min f T X s .t . AX b
A eq X b eq l X u
5
linprog 语法: x = linprog(f,A,b,Aeq,beq) x = linprog(f,A,b,Aeq,beq,lb,ub) x = linprog(f,A,b,Aeq,beq,lb,ub,x0) x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options) [x,fval] = linprog(...) [x,fval,exitflag] = linprog(...) [x,fval,exitflag,output] = linprog(...) [x,fval,exitflag,output,lambda] = linprog(...)
15
fmincon示例程序 文件myobjfun2.m function r=myobjfun1(x) %目标函数值计算,并返回 r=2*x(1)^2+3*x(2)^2+4*x(3)^2;
文件mymodelcons.m function [C,CEQ]=mymodelcons(x) C(1)=x(1)^2+x(2)^2-2*x(3)-900;%<=0 CEQ(1)=x(1)+x(2)+x(3)-1000;%=0
相关文档
最新文档