网站制作比较好的公司,网站管理员权限,河南网站建设设计价格,网站开发前端后端实验的目的和要求#xff1a;通过本次实验使学生较为熟练使用MATLAB软件#xff0c;并能利用该软件进行约束最优化方法的计算。
实验内容#xff1a;
#xff11;、罚函数法的MATLAB实现
#xff12;、可行方向法的MATLAB实现
学习建议#xff1a;
本次实验就是要通…实验的目的和要求通过本次实验使学生较为熟练使用MATLAB软件并能利用该软件进行约束最优化方法的计算。
实验内容
、罚函数法的MATLAB实现
、可行方向法的MATLAB实现
学习建议
本次实验就是要通过对一些具体问题的分析进一步熟悉软件的操作并加深对理论知识的理解。
重点和难点
可行点和辅助函数选取。
一 罚函数法
用罚函数法解min f(x)(x1-1)2x22
S.T. g(x)x2-10
编写下面m文件
fahanshu.msyms x1 x2 f(x1-1)^2x2^2;gx2-1;x[x1;x2];x0[0;0];e0.0001;M1;while abs(subs(g,x,x0))eif subs(g,x,x0)0 QfM*g^2;else Qf;endx0xzNewton(Q,x,x0,0.0001);M10*M;endx0运行得fahanshu
x0
1.0000
0.9999
与理论值x[1;1]很接近。
二 投影梯度法
1.梯度投影法基本原理和步骤
思想当迭代点是可行域的内点时将目标函数负梯度作为搜索方向当迭代点在可行域边界上时将目标函数负梯度在可行域边界上的投影作为搜索方向。无论何种情况所构造的方向都是可行下降方向。然后在可行域内沿该方向进行最优一维搜索得到新的迭代点。 MATLAB实现:
2.代码及数值算例:
(1) 程序源代码:
function [ X,FMIN,K ] tidutouying( f,A,b,x1,x,e )% [ X,FMIN,K ] tidutouying( f,A,b,x1,e ) 梯度投影法% f 目标函数% A 约束矩阵 b 右端项% x1 初始点 x 自由变量% e 精度要求% X 极小点% FMIN 极小值% K 迭代次数% 张超编写与2014/5/3count1;nlength(x1);tfjacobian(f,x);while 1[A1,A2,b1,b2,k]fenjie(A,b,x1);while 1MA1;if isempty(M) Peye(n);else Peye(n)-M*(M*M)^(-1)*M;endPk-P*subs(tf,x,x1);if norm(Pk)e if isempty(M) x1;break; else W(M*M)^(-1)*M*subs(tf,x,x1); uW; if min(u)0 for i1:length(u) if u(i)min(u) ji; end end A1(j,:)[]; else x1;break; end endelse b_b2-A2*x1; P_A2*Pk; for i1:length(P_) if P_(i)0 r(i)b_(i)/P_(i); else r(i)10000; end end rmaxmin(r); syms t yx1t*Pk; ft(t)subs(f,x,y); [r1]find0618(ft,0,double(rmax),0.00001); x1x1r1*Pk; break;endendcountcount1;if isempty(M) break;endif min(u)0 break;endendXx1;FMINsubs(f,x,X);Kcount;endfunction [A1,A2,b1,b2,k ] fenjie( A,b,x )% 分解起作用约束AA;bb;x0x;k0;q0;ssize(A);A1zeros(s(1),s(2));A2zeros(s(1),s(2));b1zeros(s(1),1);b2zeros(s(1),1);for i1:s(1)giA(i,:)*x0-b(i);if abs(gi)0.0000001 kk1; A1(k,:)A(i,:); b1(k,1)b(i);else qq1; A2(q,:)A(i,:); b2(q,1)b(i);endendif k0A1A1(1:k,:);b1b1(1:k,:);elseA1[];endif q0A2A2(1:q,:);b2b2(1:q,:);end end(2) 数值算例:
Min f(x) 2*x1^22*x2^2 – 2*x1*x2 – 4*x1 – 6*x2S.T. –x1 – x2 –2–x1 – 5*x2 –5x10x20初值x0[0;0]在matlab command window里输入syms x1 x2 f2*x1^22*x2^2-2*x1*x2-4*x1-6*x2;A[-1 -1;-1 -5;1 0;0 1];b[-2;-5;0;0];x1[0;0];x[x1;x2];e0.01;[X,FMIN,K]tidutouying(f,A,b,x1,x,e)X 1.12920.7742FMIN -7.1613N 16