第五章(优化设计)
第五章 优化设计
5.1 概述 (1)无约束优化问题
给定目标函数g ( X ), X 为设计变量X (x1 , x2 ,..., xn ), 寻找X *, 使g ( X *)值最小。 由于-g ( X *)值最小与g ( X *)最大等价,所以优化目标函数总 是假设使目标函数最小。
例:
2 min{x1 x2 3x1x2 4x14}
(3)线性规划问题 目标函数和约束函数都是线性函数的优化问题。
例:假如生产零件A消耗材料9kg , 消耗时间3小时, 消耗电能4kW , 获利润60块,生产零件B消耗材料4kg , 消耗时间10小时,消耗电能5kW , 获利润120块,现有 材料360kg,时间300个小时,电能200KW,如何布置生 产才能获得最大利润?
x1+x2+x3+x4+x5=100 X>=0 Min{0.1x2+0.2x3+0.3x4+0.4x5}
5.3.3 二次规划求解函数quadprog 数学模型:
1 T min{ X GX qT X } 2 s.t : AX b Aeq beq lb X ub 用法:
x = quadprog(G,q,A,b) x = quadprog(G,q,A,b,Aeq,beq) x = quadprog(G,q,A,b,Aeq,beq,lb,ub) x = quadprog(G,q,A,b,Aeq,beq,lb,ub,x0) x = quadprog(G,q,A,b,Aeq,beq,lb,ub,x0,options)
(2)约束优化问题
给定目标函数g ( X ), X 为设计变量X (x1 , x2 ,..., xn ), 满足: 等式约束条件:pi ( x) 0, (i 1, 2,..., l ) 不等式约束条件:q j ( x) 0, ( j 1, 2,..., m) 假设两者约束的变量空间为D,寻找X * D, 使g ( X *)值最小。
Output:保存输出状态的变量 Grad:保存梯度计算值的变量 Hessian:保存目标函数Hessian矩阵的变量
强烈建议使用格式[x y exit]=fminunc(@fun,x0,options)
计算设置: op=optimset('MaxIter',10000); op=optimset(op,'TolFun',1.e-4); op=optimset(op,'TolX',1.e-6); [x y exit]=fminunc(@f2,[1;2],op); function f=f2(X) y1=X(1)+cos(X(2)); y2=sin(X(1))+X(2)+10; f=y1*y1+y2*y2;
假设产品A生产x个,产品B生产Y个,那么: 利润: max f ( x, y ), f ( x, y ) 60 x 120 y 约束条件: 9 x 4 y 360 3 x 10 y 300 4 x 5 y 200 x 0, y 0
(4)多目标规划问题 目标函数个数大于1的约束或无约束优化问题
用法: x = linprog(c,A,b) x = linprog(c,A,b,Aeq,beq) x = linprog(c,A,b,Aeq,beq,lb,ub) x = linprog(c,A,b,Aeq,beq,lb,ub,x0)
x = linprog(c,A,b,Aeq,beq,lb,ub,x0,options) 英文Help说第2个 [x,fval] = linprog(...) 参数为Lagrange乘 [x,fval,exitflag] = linprog(...) 子参数, 是错误的, [x,fval,exitflag,output] = linprog(...) [x,fval,exitflag,output,lambda] = linprog(...) 实际上仍为目标 函数值 Set Aeq=[] and beq=[] if no equalities exist. Set A=[] and b=[] if no inequalities exist. Set lb=[] and ub=[] if no boudary exist 1:function converged to a solution x. 0:Number of iterations exceeded options.MaxIter. -2:No feasible point was found. -3:Problem is unbounded. -4:NaN value was encountered during execution of the algorithm. -5:Both primal and dual problems are infeasible. -7:Search direction became too small. No further progress could be made.
(3)确定步长a*, X k 1 X k ad k , 保证X 在允许空间内, 并求 min f ( X k ad k )对应a *. (4)如果f ( X k a * d k )满足设计要求, 或者 || f ( X k 1 ) || 很小, 或者k 大于给定计算次数,或者 || X k 1 - X k || 足够小, 那么转(5) 结束, 否则k k 1转(2). (5)结束.
例:人字架由两根钢管组成,顶点 受力2F,跨度为2 B,壁厚为T, 弹性模量为E,密度为,许应 应力为[ ],求钢管在不超过许 应应力和失稳条件下,耗材最少 的人字架的高度h很钢管外径半R.
(a)目标函数模型 g (h, R) 2 h 2 B 2 ( R 2 ( R T ) 2 )
(b)设计变量约束条件 假设F1为钢管所受压力,那么 F1 强度条件为: [ ] A 稳定性条件为:F1
2 EI
l2 其中A ( R 2 ( R T ) 2 ),l 2 h 2 B 2 4 几何条件 : R T , h 0 I
( R 4 ( R T )4 )
[x,fval] = quadprog(...) [x,fval,exitflag] = quadprog(...) [x,fval,exitflag,output] = quadprog(...) [x,fval,exitflag,output,lambda] = quadprog(...) 返回标志: 1:Function converged to a solution x. 3:Change in the objective function value was smaller than the specified tolerance. 4:Local minimizer was found. 0:Number of iterations exceeded options.MaxIter. -2:Problem is infeasible. -3:Problem is unbounded. -4:Current search direction was not a direction of descent. No further progress could be made. -7:Magnitude of search direction became too small. No further progress could be made.
例:假如生产零件A消耗材料9kg , 消耗时间3小时, 消耗电能4kW , 获利润60块,生产零件B消耗材料4kg , 消耗时间10小时,消耗电能5kW , 获利润120块,现有 材料360kg,工时300个,供电200kW,如何布置生产 才能消耗电能最少、生产时间最少、耗材最少,获取 最大利润?
假设产品A生产x个,产品B生产Y 个,那么问题转化为: min{ f ( x, y )} f ( x, y ) 60 x 120 y min{9 x 4 y}
例:某车间要100套钢架,每套钢架由2.0m, 2.1m,1.5m长的钢材 各一段组成,现有钢材每条240m,如何分配才能使尾料最少。
段数
套1
套2
套3
套4
套5
2.9
2.1 1.5 尾料
1
0 3 0
2
0 1 0.1
0
2 2 0.2
1
2 0+5.8x2+2.9x3<=240 4.2x3+4.2x4+2.1x5<=240 4.5x1+1.5x2+3x3+4.5x5<=240
求解下降方 向d不同方法 对应不同优 化算法
5.3 优化问题的matlab求解函数 5.3.1 fminunc函数:求无约束目标函数最小值
用法: x = fminunc(@fun,x0) x = fminunc(@fun,x0,options) [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(...) X:极小点 Fval:极小值 Fun:目标函数名字 X0:初值,列 向量 Option:选项 Exitflag:=1求解成功,其他值表示不成功
例:
min{x 2xy y 4x 6 y}
4 4
(a)定义目标函数 (b)调用fminunc函数 (c)根据返回结果,如果计算不成功(可用计算点判断 它是否满足约束条件),修改计算选项,直至计算结 果满意。