matlab优化问题求解

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

©
谢中华, MATLAB应用培训.
优化问题求解
主要内容 无约束最优化 线性规划 非线性规划 0-1规划 多目标规划——最大最小问题 最优化问题求解工具
2013/10/22
©
谢中华, MATLAB应用培训.
优化问题求解
第一节 无约束最优化
2013/10/22
©
谢中华, MATLAB应用培训.
工 序 选料 提纯 调配 利润(元/kg)
2013/10/22
单位产品耗用工时(h/kg)
A
1.1 0.5 0.7 12
B
1.2 0.6 0.8 14
C
1.4 0.6 0.6 13 ©
每周有效工时(h) 4600 2100 2500
谢中华, MATLAB应用培训.
优化问题求解
【例14.2-1续】该例数学模型如下:
注:应先化为标准型。
2013/10/22
©
谢中华, MATLAB应用培训.
优化问题求解
1. 大规模内点法求解
>> f = [-12,-14,-13]; >> A= [1.1, 1.2, 1.4; 0.5, 0.6, 0.6; 0.7, 0.8, 0.6]; >> b= [4600; 2100; 2500]; >> Aeq=[]; >> beq=[]; >> lb=[0; 0; 0]; >> ub=[]; >> [x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb,ub)
2013/10/22
©
谢中华, MATLAB应用培训.
优化问题求解
【例14.1-2】求解 f= ( x) e −0.1x sin 2 x − 0.5( x + 0.1) sin x 在区 间[-10, 10]上的极小值。
>> fun = @(x)exp(-0.1*x).*sin(x).^2-0.5*(x+0.1).*sin(x); >> [x1,f1] = fminbnd(fun,-10,10) x1 = 2.5148 f1 = -0.4993 >> [x2,f2] = fminbnd(fun,6,10) x2 = 8.0236 f2 = -3.5680 >> ezplot(fun,[-10,10]); >> hold on; >> plot(x1,f1,'ro'); >> plot(x2,f2,'r*');
2013/10/22
©
谢中华, MATLAB应用培训.
优化问题求解
2. 单纯形法求解
>> options = optimset('LargeScale', 'off', 'Simplex', 'on','Display','iter'); >> [x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb,ub,[],options) % 最优解 x= 1.0e+003 * 0.7500 1.2500 1.6250 % 最优值 fval = -47625
优化问题求解
一、无约束最优化问题的标准型
不失一般性,无约束最优化问题的标准型为:
min f ( x)
x ∈ Rn
其中, f ( x) 为目标函数,可以是一元函数,也可以是多元 函数。 对于无约束最大化问题,可以通过如下转换将其转化 为标准型:
max f ( x)
x ∈ Rn x ∈ Rn
©
谢中华, MATLAB应用培训.
2013/10/22
©
谢中华, MATLAB应用培训.
优化问题求解
五、含参数线性规划
1. 目标函数含参数 【例14.2-2】求解含参数线性规划问题
min f = a1 x1 + a2 x2 + a3 x3 7 x1 + 3 x2 + 9 x3 ≤ 1 8 x + 5 x + 4 x ≤ 1 1 2 3 st 6 x1 + 9 x2 + 5 x3 ≤ 1 x1 , x2 , x3 ≥ 0
优化参数设置
谢中华, MATLAB应用培训.
优化问题求解
2. fminbnd函数 求解一元函数在区间[x1, x2] 上的极小值。 [x,
最优解
2013/10/22
fval] = fminbnd(fun,
最优值 目标函数表达式或句柄
x1,
区间左端点
ቤተ መጻሕፍቲ ባይዱ
x2,
区间右端点 ©
options)
优化参数设置
2013/10/22
©
谢中华, MATLAB应用培训.
优化问题求解
四、线性规划应用案例
【例14.2-1】某厂生产 三种产品,每种产品生产需经过三道工序: 选料、提纯和调配。根据现有的生产条件,可确定各工序有效 工时、单位产品耗用工时及利润如表14.1-1所列。试问应如何安 排各种产品的周产量,才能获得最大利润?
x1 2 2 min f ( x = ) e (4 x + 2 x 【例14.1-1】求解 1 2 + 4 x1 x2 + 2 x2 + 1)
>> fun = @(x)exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1); >> [x,f] = fminsearch(fun,[-1, 1]) x = 0.5000 -1.0000 f = 5.1425e-10 >> [x,f] = fminunc(fun,[-1, 1]) x = 0.5000 -1.0000 f = 3.6609e-15 >> fs = @(x,y)exp(x).*(4*x.^2+2*y.^2+4*x.*y+2*y+1); >> ezmesh(fs,[0,1,-2,0]); hold on; >> plot3(x(1),x(2),f,'r*');
⇒ min − f ( x)
2013/10/22
优化问题求解
二、求解无约束最优化问题的MATLAB函数
1. fminsearch函数 求解一元或多元函数极小值。 [x,
最优解
2013/10/22
fval] = fminsearch(fun,
最优值 目标函数表达式或句柄
x0,
初值 ©
options)
2013/10/22
©
谢中华, MATLAB应用培训.
优化问题求解
【例14.1-3】求解如下优化问题(含200个变量)
12 min f = ∑ ( x(i ) − ) , n = 200 i i =1
>> LargObjFun = @(x)sum((x-1./(1:numel(x))).^2); >> n = 200; >> x0=10*ones(1,n); % 初始迭代点 % 利用optimset函数进行大规模算法设置 % 'LargeScale','on'开启大规模计算 % 'display','iter'显示迭代过程 % 'TolFun',1e-8 设置松弛变量,松弛变量越小解的精度越高, % 但如果太小计算无法终止,通常为1e-8或者1e-6 >> options = optimset('LargeScale','on','display','iter','TolFun',1e-8); >> [x,fval] = fminunc(LargObjFun,x0,options)
Display
LargeScale MaxIter TolFun
Simplex
2013/10/22
©
谢中华, MATLAB应用培训.
优化问题求解
三、线性规划的求解方法
1. Matlab求解线性规划用到的算法 大规模内点法(Large-scale interior-Point) 中等规模作用集算法(Medium-scale active set) 中等规模单纯形算法(Medium-scale Simplex)
max
z = 12 x1 + 14 x2 + 13 x3
1.1x1 + 1.2 x2 + 1.4 x3 ≤ 4600 0.5 x + 0.6 x + 0.6 x ≤ 2100 1 2 3 s.t. 0.7 x1 + 0.8 x2 + 0.6 x3 ≤ 2500 x1 ≥ 0, x2 ≥ 0, x3 ≥ 0
2013/10/22
©
谢中华, MATLAB应用培训.
二、求解线性规划问题的MATLAB函数
1. linprog函数 [x, fval] = linprog(f, A,
最优解
2013/10/22
优化问题求解
b, Aeq, beq, lb, ub, x0, options)
优化参数设置 可行域上界 等式约束系数矩阵 可行域下界 不等式约束常数向量 初始迭代点 等式约束常数向量
其中a1 = -1, a2 = -2, a3 = -3 为参数。
2013/10/22
©
谢中华, MATLAB应用培训.
优化问题求解
>> f0 = [1,1,1]; >> a = [-1,-2,-3]; >> f = a.*f0; >> A = [7, 3, 9; 8, 5, 4; 6, 9, 5]; >> b = [1; 1; 1]; >> Aeq = []; >> beq = []; >> lb = [0, 0, 0]; >> ub = []; >> [x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb,ub)
2013/10/22
n
©
谢中华, MATLAB应用培训.
优化问题求解
第二节 线性规划
2013/10/22
©
谢中华, MATLAB应用培训.
优化问题求解
一、线性规划问题的标准型
min z = f x
T
A⋅ x ≤ b s.t Aeq ⋅ x = beq lb ≤ x ≤ up
其中f 为目标函数中决策变量的系数值向量,A为线性不 等式约束的系数矩阵,b为线性不等式约束的右端常数向 量,Aeq为线性等式约束的系数矩阵,beq为线性等式约 束的右端常数向量,lb为决策变量 x 的下界值向量,up为 决策变量x的上界值向量。
最优值
不等式约束系数矩阵
目标函数中决策变量的系数值向量
©
谢中华, MATLAB应用培训.
优化问题求解
2. options参数的字段及说明
字 段 Diagnostics 说 明 显示目标函数的诊断信息,可选字段值如下: 'on' 显示诊断信息 'off' 不显示诊断信息(默认) 结果显示方式,可选字段值如下: 'off' 不显示输出结果 'iter' 显示每一步迭代结果,只适用于大规模内点法和中等规模单纯形算 法 'final' 只显示最终结果(默认) 设置迭代算法,可选字段值如下: 'on' 使用大规模内点法(默认) 'off' 使用中等规模算法 设置迭代步数,字段值为正整数 设置目标函数的终止容限,对于大规模内点法,默认值为1e-8,对于单 纯形法,默认值为1e-6 设置中等规模算法,可选字段值如下: 'on' 使用单纯形算法,此时不需要用户指定初始迭代点x0 'off' 使用中等规模作用集算法(默认)
2013/10/22
©
谢中华, MATLAB应用培训.
优化问题求解
2. 约束函数含参数 【例14.2-3】求解含参数线性规划问题
− x1 − x2 − x3 min f = a1 x1 + 3 x2 + 9 x3 ≤ 1 8 x + a x + 4 x ≤ 1 1 2 2 3 st 6 x1 + 9 x2 + a3 x3 ≤ 1 x1 , x2 , x3 ≥ 0
优化问题求解
优化问题求解
谢中华
E-mail: xiezhh@tust.edu.cn MATLAB统计分析与应用:40个案例分析 MATLAB从零到进阶 http://www.matlabsky.com http://www.ilovematlab.cn/forum-181-1.html
2013/10/22
谢中华, MATLAB应用培训.
优化问题求解
3. fminunc函数 求解一元或多元函数极小值。 [x,
最优解
2013/10/22
fval] = fminunc(fun,
最优值 目标函数表达式或句柄
x0,
初值
options)
优化参数设置 ©
谢中华, MATLAB应用培训.
优化问题求解
三、无约束最优化实例
其中a1 = 7, a2 = 5, a3 = 3 为参数。
2013/10/22
©
谢中华, MATLAB应用培训.
优化问题求解
>> f = [-1,-1,-1]; >> a = [7,5,5]; >> A = [a(1), 3, 9; 8, a(2), 4; 6, 9, a(3)]; >> b = [1; 1; 1]; >> Aeq = []; >> beq = []; >> lb = [0, 0, 0]; >> ub = []; >> [x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb,ub)
相关文档
最新文档