当前位置: 首页 > news >正文

阳山网站建设《网站建设与管理》方案

阳山网站建设,《网站建设与管理》方案,网站集约化建设困难,wordpress nextgen gallery1. 理论部分 2. 序列二次规划算法代码及解析 3.完整代码 1.理论部分 a.约束优化问题的极值条件 库恩塔克条件(Kuhn-Tucker conditions#xff0c;KT条件)是确定某点为极值点的必要条件。如果所讨论的规划是凸规划#xff0c;那么库恩-塔克条件也是充分条件。 #xff…1. 理论部分 2. 序列二次规划算法代码及解析 3.完整代码 1.理论部分 a.约束优化问题的极值条件 库恩塔克条件(Kuhn-Tucker conditionsKT条件)是确定某点为极值点的必要条件。如果所讨论的规划是凸规划那么库恩-塔克条件也是充分条件。 1判断数值x处起作用的约束计算x处各约束的取值是否为0找出起作用的约束条件。并非所有约束条件都起作用即并非落在所有约束条件的边界交集处。对于起作用的边界条件满足边界函数g(x)或h(x)为0 2数值x处目标函数导数f(x)和起作用的约束导数g(x)的数值 3代入KT条件ex. 求解拉格朗日乘子λ的大小判断λ是否大于0若大于零则为极值点。 4若不满足条件继续迭代。 具体做法如下 其中λ为拉格朗日乘子当某一点x使λ 0存在时称满足KT条件则该点x是极值点。 约束优化问题的应用示例如下图 b.约束优化方法及迭代 此处介绍和使用外惩罚函数法/外点法 外点法是一种从随机一点一般在可行域外出发逐渐移动到可行区域的方法。 对于约束优化问题 构造外惩罚函数 即当g(x)不满足条件时该项有大于0的值h(x)不满足条件时该项也有值加和的越大代表该数值点距离距离约束的可行域越远惩罚项的值越大惩罚作用越明显。。其中Mk为外罚因子M 0 M 1 M 2 . . . M k 为递增的正数序列一般M01递增系数c5~8。 迭代终止满足两个判断条件中一个即可 1. Q为当前数值点多个约束函数中最大的值即满足了所有的约束函数条件。 2.  且 R为外罚因子控制量M超出外罚因子的极限R 外点法的迭代图如下 外点法的示例如下图 a. 定义变量 vars 2; % 自变量数量 cons 1; % 约束数量 maxIter100; % 最大迭代次数 x [-1;4]; % 初始猜测值 l 0; % 拉格朗日乘子 H eye(vars,vars); % Hessian 矩阵假设为I矩阵 目标函数为 及目标函数的导数为 function y f(x)y x(1)^4 - 2*x(2)*x(1)^2 x(2)^2 x(1)^2 - 2*x(1)5; endfunction y gradf(x)y(1) 2*x(1)-4*x(1)*x(2)4*x(1)^3-2;y(2) -2*x(1)^2 2*x(2); end 约束项不等式为 以及其导数为 function y g(x)y(1) -(x(1)0.25)^20.75*x(2); endfunction y gradg(x)y(1,1) -2*x(1)-1/2;y(1,2) 3/4; end 求解KKT条件 function y SolveKKT(gradfEval,gradgEval,gEval,Hessian)A [Hessian -gradgEval;gradgEval 0]; %对称矩阵约束函数的梯度矩阵b [-gradfEval -gEval];y A\b; %方程 Ay b 解出y值分别对应最优的x值的梯度和最优的拉格朗日乘子的值%即此时Ay-b 0kkt条件成立 end 判断数值点x是否满足约束条件 function [gViol,lViol] Viols(gEval,l)%约束条件函数值拉格朗日乘子lgViol[];lViol[];for i 1:length(gEval)if gEval(i)0 %如果约束条件函数值小于零即不满足约束条件gViol(i)gEval(i); %将约束条件函数值和拉格朗日乘子l放入列表lViol(i)l(i);end end end 处理不满足约束的情况构造惩罚函数lViol对应Mk累加得到惩罚函数 function y Penalty(fEval,gViol,lViol) %代入该点处的函数值不满足约束的约束函数值以及拉格朗日乘子lsum 0;y fEval;for i 1:length(gViol) %找出不满足约束条件的约束函数值sum sum lViol(i)*abs(gViol(i)); %约束函数值g(x)求反再乘一个系数即||l_1*g(x1)l2*g(x2) ||endy y sum; end 在初始点首先进行初始计算找出不满足约束的约束计算其损失函数。 % EVALUATE AT STARTING POINTfEval f(x); gEval g(x); [gViol,lViol] Viols(gEval,l); gradfEval gradf(x); gradgEval gradg(x); P Penalty(fEval,gViol,lViol); 开始进入SQP算法主体,求解kkt条件得到xSol为函数x的解lSol为拉格朗日乘子的解。 for i1:maxIter %开始循环迭代% SOLVE KKT CONDITIONS FOR THE OPTIMUM OF THE QUADRATIC APPROXIMATION%求解二次优化的KKT条件sol SolveKKT(gradfEval,gradgEval,gEval,H);%代入导数f(x)g(x),约束函数值g(x)Hessian矩阵xSol sol(1:vars);lSol sol(vars1:varscons); 如果拉格朗日乘子有负的即不满足约束条件则将其设为0并重新求解方程 for j 1:length(lSol)if lSol(j)0 %如果拉格朗日乘子有一个是负的sol H\(-gradfEval); %将结果重新求解H*x -gradfEvalxSol sol(1:vars);lSol(j)0; %该约束的拉格朗日乘子置为0endend 计算新的数值点情况 xNew x xSol; %更新得到新的数值点lNew lSol; % 得到新的拉格朗日乘子fEvalNew f(xNew);%计算新点目标函数的数值gEvalNew g(xNew);%计算新点的约束函数数值gradfEvalNew gradf(xNew);%计算该点目标函数梯度gradgEvalNew gradg(xNew);%计算该点约束函数梯度[gViolNew,lViolNew] Viols(gEvalNew,lNew);%找出不满足的约束条件PNew Penalty(fEvalNew,gViolNew,lViolNew);%求解惩罚函数 如果惩罚函数增加减小步长到原来的一半 % IF PENALTY FUNCTION INCREASED, LOWER THE STEP BY 0.5while PNew-P1e-4xSol 0.5*xSol;xNew x xSol;fEvalNew f(xNew);gEvalNew g(xNew);gradfEvalNew gradf(xNew);gradgEvalNew gradg(xNew);[gViolNew,lViolNew] Viols(gEvalNew,lNew);PNew Penalty(fEvalNew,gViolNew,lViolNew);end 如果x数值变化很小停止迭代找到最优结束迭代 % STOPPING CRITERIONif norm(xNew(1:vars)-x(1:vars))1e-2breakend 更新Hessian矩阵Q为Mk1- Mk的值 % UPDATE THE HESSIANgradLEval gradLagr(gradfEval,gradgEval,lNew,vars); %拉格朗日函数的梯度 lnew not l!!!gradLEvalNew gradLagr(gradfEvalNew,gradgEvalNew,lNew,vars);%新的数值点处拉格朗日函数的梯度Q gradLEvalNew-gradLEval;%拉格朗日函数数值的差分L(x_k1) - L(x_k)dx xNew-x;%自变量x的差分HNew UpdateH(H,dx,Q);%求解H矩阵 计算拉格朗日乘子梯度的函数 function y gradLagr(gradfEval,gradgEval,l,n)y gradfEval;sum zeros(n,1);for i 1:length(l)sum sum -l(i)*gradgEval(i:n);endy y sum; %x处目标函数的梯度减去约束函数的梯度。即拉格朗日函数的梯度 end 更新Hessian矩阵gamma为Mk1- Mk的值 function y UpdateH(H,dx,gamma)%gamma是拉格朗日函数的两次差分term1(gamma*gamma) / (gamma*dx);term2 ((H*dx)*(dx*H)) / (dx*(H*dx));y H term1-term2; %更新得到新的H矩阵 end 更新所有的变量用于下次的迭代包括Hessian矩阵H数值点x惩罚函数值P目标函数值fEval目标函数值梯度gradEval约束函数值gEval约束函数值梯度gradgEval % UPDATE ALL VALUES FOR NEXT ITERATIONH HNew;fEval fEvalNew;gEval gEvalNew;gradfEval gradfEvalNew;gradgEval gradgEvalNew;P PNew;x xNew; 3.可以运行的完整代码如下 % EXAMPLE OF SQP ALGORITHMclear variables; close all; clc; fprintf(---------------------------------------------------------------\n) fprintf(An implementation of Sequential Quadratic Programming method\nin a nonlinear constrained optimization problem\n) fprintf(---------------------------------------------------------------\n)% INITIAL VALUES - INPUTvars 2; % number of variables cons 1; % number of constraints maxIter100; % max iterations x [-1;4]; % initial guess point l 0; % LagrangeMultipliers vector H eye(vars,vars); % Hessian matrix assumed to be identity% EVALUATE AT STARTING POINTfEval f(x); gEval g(x); [gViol,lViol] Viols(gEval,l); gradfEval gradf(x); gradgEval gradg(x); P Penalty(fEval,gViol,lViol);% SQP ALGORITHMfor i1:maxIter% SOLVE KKT CONDITIONS FOR THE OPTIMUM OF THE QUADRATIC APPROXIMATIONsol SolveKKT(gradfEval,gradgEval,gEval,H);xSol sol(1:vars);lSol sol(vars1:varscons);% IF THE LAGRANGE MULTIPLIER IS NEGATIVE SET IT TO ZEROfor j 1:length(lSol)if lSol(j)0 sol H\(-gradfEval);xSol sol(1:vars);lSol(j)0;endend% EVALUATE AT NEW CANDIDATE POINTxNew x xSol; lNew lSol;fEvalNew f(xNew);gEvalNew g(xNew);gradfEvalNew gradf(xNew);gradgEvalNew gradg(xNew);[gViolNew,lViolNew] Viols(gEvalNew,lNew);PNew Penalty(fEvalNew,gViolNew,lViolNew);% IF PENALTY FUNCTION INCREASED, LOWER THE STEP BY 0.5while PNew-P1e-4xSol 0.5*xSol;xNew x xSol;fEvalNew f(xNew);gEvalNew g(xNew);gradfEvalNew gradf(xNew);gradgEvalNew gradg(xNew);[gViolNew,lViolNew] Viols(gEvalNew,lNew);PNew Penalty(fEvalNew,gViolNew,lViolNew);end% STOPPING CRITERIONif norm(xNew(1:vars)-x(1:vars))1e-2breakend% UPDATE THE HESSIANgradLEval gradLagr(gradfEval,gradgEval,lNew,vars); % lnew not l!!!gradLEvalNew gradLagr(gradfEvalNew,gradgEvalNew,lNew,vars);Q gradLEvalNew-gradLEval;dx xNew-x;HNew UpdateH(H,dx,Q);% UPDATE ALL VALUES FOR NEXT ITERATIONH HNew;fEval fEvalNew;gEval gEvalNew;gradfEval gradfEvalNew;gradgEval gradgEvalNew;P PNew;x xNew; endfprintf(SQP: Optimum point:\n x1%10.4f\n x2%10.4f\n iterations %10.0f \n, x(1), x(2), i)% FUNCTIONS NEEDEDfunction y SolveKKT(gradfEval,gradgEval,gEval,Hessian)A [Hessian -gradgEval;gradgEval 0];b [-gradfEval -gEval];y A\b; endfunction y f(x)y x(1)^4 - 2*x(2)*x(1)^2 x(2)^2 x(1)^2 - 2*x(1)5; endfunction y gradf(x)y(1) 2*x(1)-4*x(1)*x(2)4*x(1)^3-2;y(2) -2*x(1)^2 2*x(2); endfunction y gradLagr(gradfEval,gradgEval,l,n)y gradfEval;sum zeros(n,1);for i 1:length(l)sum sum -l(i)*gradgEval(i:n);endy y sum; endfunction y gradg(x)y(1,1) -2*x(1)-1/2;y(1,2) 3/4; endfunction y g(x)y(1) -(x(1)0.25)^20.75*x(2); endfunction [gViol,lViol] Viols(gEval,l)gViol[];lViol[];for i 1:length(gEval)if gEval(i)0gViol(i)gEval(i);lViol(i)l(i);end end endfunction y Penalty(fEval,gViol,lViol)sum 0;y fEval;for i 1:length(gViol)sum sum lViol(i)*abs(gViol(i));endy y sum; endfunction y UpdateH(H,dx,gamma)term1(gamma*gamma) / (gamma*dx);term2 ((H*dx)*(dx*H)) / (dx*(H*dx));y H term1-term2; end最后输出结果为 --------------------------------------------------------------- An implementation of Sequential Quadratic Programming method in a nonlinear constrained optimization problem --------------------------------------------------------------- SQP: Optimum point:x1 0.4999x2 0.7498iterations 9
http://www.w-s-a.com/news/396010/

相关文章:

  • 网站搭建免费模板飞鱼crm下载
  • 网站开发竞品分析app制作公司深圳
  • 网站建设ssc源码修复设计班级网站建设
  • 网站重定向凡科做网站不要钱
  • 佛山html5网站建设微信营销软件破解版
  • 网站单页做301南京百度推广
  • 私人做网站要多少钱展芒设计网页
  • 怎样网站制作设计如何在网上推广农产品
  • 做关键词排名卖网站聚名网
  • 吉林省住房城乡建设厅网站首页体育器材网站建设方案
  • 网站建设及维护专业手机金融界网站
  • 常州网站建设工作室建立网站有怎么用途
  • 如何盗取网站推广策划书模板
  • 游戏网站建设计划书网络开发需要学什么
  • 手机网站维护费网站开发包括网站过程
  • 懂做游戏钓鱼网站的网站建设技术的发展
  • 网站被百度收录百度一下你就知道 官网
  • 雅客网站建设做网站用什么做
  • 做宣传海报网站专业网站设计速寻亿企邦
  • 秦皇岛市住房和城乡建设局网站有关网站开发的参考文献
  • 晋城城乡建设局网站深圳外贸业务员工资
  • 招聘网站开发的公司销售运营主要做什么
  • 徐州网站无障碍建设wordpress证书
  • c语言可以做网站吗请人做网站收费多少
  • 中英双语网站怎么做网站为什么做静态
  • 毕业设计做音乐网站可以吗网站运营方案
  • windos 下做网站工具网站右侧返回顶部
  • 点餐网站怎么做济源网站建设济源
  • 嘉兴公司网站制作文明网站的建设与管理几点思考
  • 扬州公司做网站徐州网站建设优化