大连理工大学2021最优化方法大作业(3)

大连理工大学2021最优化方法大作业(3)

前面无约束优化(constrained optimization)问题的解法在这: 大连理工大学 2021年最优化方法大作业(1)_JiangTesla的博客-CSDN博客

大连理工大学 2021年最优化方法大作业(2)_JiangTesla的博客-CSDN博客

这是我们第二题,约束优化(constrained optimization)方法中的乘子法。 这个题目既包含等式约束(equality constraint)也包含不等式约束(inequality constraint)(equality constraint),所以需要使用Rockafellar的乘子法,绘制框图如下:

大连理工大学2021最优化方法大作业(3)

 

从框图可以看出来乘子法的逻辑思路很简单,就是先给出初始乘子,然后利用乘子可以形成一个无约束优化(constrained optimization)问题,从给出的初始点来求解这个问题,得到的解就是下次迭代的点。换句话说,乘子法的迭代方式就是不停地求解新的无约束优化(constrained optimization)问题。

下面补充上面没写的公式

1.无约束优化(constrained optimization)问题公式

大连理工大学2021最优化方法大作业(3)

2.结束条件的公式

大连理工大学2021最优化方法大作业(3)

3.乘子迭代的公式

3.1这是等式约束(equality constraint)的乘子迭代,这里的μ对应于框图里的𝜆λ

大连理工大学2021最优化方法大作业(3)

3.2下面是不等式约束(inequality constraint)(equality constraint)的乘子迭代

大连理工大学2021最优化方法大作业(3)

求解无约束优化(constrained optimization)方法之前有提到,我选用的是最好的BFGS方法,下面直接上代码讲解

 

%这三个设定初始值
x = [0;0];
eps = 1e-4;
start_Lagrange(x,eps);
%定义原题的方程式
function f= fun(x)
f=(x(1)-2)^4+(x(1) -2*x(2))^2;
end
%这里写出给出的约束条件,一个等式约束(equality constraint),三个不等式约束(inequality constraint)(equality constraint)
function [h,g] =constrains(x)
h=x(1)^2-x(2);
g=zeros(3,1);
g(1)=4-x(1)^2-x(2)^2;
g(2)=x(1);
g(3)=x(2);
end
%通过原方程和约束方程确定的拉格朗日增广函数,也就是要求的无约束优化(constrained optimization)问题
function fei=Lagrange(x,lamda,miu,c) %拉格朗日增广函数
[h,gk] = constrains(x);
fei = fun(x) + lamda*h + (c/2)*h^2;
for i = 1:3
  fei = fei + (1/(2*c))*((min(0,miu(i) + c*gk(i)))^2 - miu(i)^2);
end
end
%这是求增广函数的梯度(gradient)                
function g = grad_fai(x,lamda,miu,c)
g = zeros(1,2); 
[hh,gg] = constrains(x);
g(1) = 2*x(1) - 4*x(2) + 4*(x(1) - 2)^3 + 2*lamda*x(1) - 2*c*x(1)*(- x(1)^2 + x(2));
g(2) = 8*x(2) - 4*x(1) - lamda + (c*(- 2*x(1)^2 + 2*x(2)))/2;
if miu(1) + c*gg(1) < 0
g(1) =g(1)-2*x(1)*(miu(1) - c*(x(1)^2 + x(2)^2 - 4));
g(2) = g(2)-2*x(2)*(miu(1) - c*(x(1)^2 + x(2)^2 - 4));
end 
if miu(2) + c*gg(2) < 0
g(1) =g(1)+ miu(2) + c*x(1);
g(2) = g(2);
end 
if miu(3) + c*gg(3) < 0
g(1) =g(1);
g(2) = g(2)+miu(3) + c*x(2);
end 
end
%乘子法的核心部分
function start_Lagrange(x0,eps)
r=0.25;
arfa = 2;%框图里的常量
c = 4;
a = 2;
k = 0;
lamda = 0;
miu = zeros(3,1);
xk = get_xk(x0,lamda,miu,c);%这个就是调用无约束优化(constrained optimization)方法
[h0,g0] =constrains(xk);
panduan = h0^2+(min(g0(1),-miu(1)/c))^2+(min(g0(2),-miu(2)/c))^2+(min(g0(3),-miu(3)/c))^2;%判断语句
while panduan > eps^2
    [h1,g1]=constrains(xk);
    beita = norm(h1)/norm(h0);
    if beita > r
        c = a*c;
    end
    for i=1:3
        miu(i)= min(0,miu(i)+c*g1(i));
    end
    lamda = lamda + c*h1;
    fprintf('The %d-th iteration, the residual is %f\n',k,panduan);
    k = k+1;
    x0 = xk;
    xk = get_xk(x0,lamda,miu,c);
    [h0,g0] =constrains(x0);
    panduan = h0^2+(min(g0(1),-miu(1)/c))^2+(min(g0(2),-miu(2)/c))^2+(min(g0(3),-miu(3)/c))^2;
end
  fprintf('The %d-th iteration, the residual is %f\n',k,panduan);
  fprintf('x=[%f,%f],min(f):%f\n',xk(1),xk(2),fun(xk));
end
%bfgs算法,大家应该能看出来和上一篇一样,只是改了点参数来嵌入(Embedding)乘子法
function x1 = get_xk(x0,lamda,miu,c)
n=2;
g0 = grad_fai(x0,lamda,miu,c);
h0 = eye(2,2);
s0 = -h0*g0.';
k = 0;
count = 0;
lambda = wolfe_powell(x0,s0,lamda,miu,c);
x1 = x0 +lambda*s0;
g1 = grad_fai(x1,lamda,miu,c);
eps = 1e-6;
while (norm(g1) > eps)
    if k<n-1
        detax = x1 - x0;
        detag = g1.' - g0.';
        h1 = get_hk(h0,detax,detag);
        s1 = -h1*g1.';
        k = k+1;
        x0 = x1;
        g0 = grad_fai(x0,lamda,miu,c);
        s0 = s1;
        h0 = h1;
        lambda = wolfe_powell(x0,s0,lamda,miu,c);
        x1 = x0 +lambda*s0;
        g1 = grad_fai(x1,lamda,miu,c);
    else 
      x0 = x1;
      g0 = grad_fai(x0,lamda,miu,c);
      h0 = eye(2,2);
      s0 = -h0*g0.';
      lambda = wolfe_powell(x0,s0,lamda,miu,c);
      x1 = x0 +lambda*s0;
      g1 = grad_fai(x1,lamda,miu,c);
      k = 0;
    end
    count=count+1;
end
end
%一维搜索
function lamda1 = wolfe_powell(xk,dk,lamda,miu,c)
c1 = 0.1;c2=0.5;
a = 0; b =Inf;
lamda1 = 1;
while(1)
    if ~(Lagrange(xk+lamda1*dk,lamda,miu,c)-Lagrange(xk,lamda,miu,c) <= c1*lamda1*grad_fai(xk,lamda,miu,c)*dk)
        b = lamda1;
        lamda1 = (lamda1 + a)/2;
    continue;
    end
    if ~(grad_fai(xk+lamda1*dk,lamda,miu,c)*dk >= c2*grad_fai(xk,lamda,miu,c)*dk)
        a = lamda1;
        lamda1 = min([2*lamda1,(b+lamda1)/2]);
     continue;
    end
    break;
end
end
function hk = get_hk(h,x,g)%进来的是列向量
miu = 1 + g.'*h*g/(x.'*g);
fenzi = miu*x*x.'-h*g*x.'-x*g.'*h;
hk = h + fenzi/(x.'*g);
end

 创作不易,还请各位校友感觉有用的话点个赞,嘿嘿嘿~~~~~~~~~~~~

版权声明:本文为博主Jiang_Tesla原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接: https://blog.csdn.net/JiangTesla/article/details/121408940

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
0
在python3.8下创建虚拟环境
上一篇 2021年11月22日 下午9:04
Python使用佩加索斯(Pegasos)算法实现软间隔SVM
下一篇 2021年11月22日 下午9:33

相关推荐

  • Leetcode算法系列| 8. 字符串转换整数 (atoi) 2023年12月29日
  • 在动态规划的海洋中遨游(一) 2023年12月13日
  • 机器学习问题汇总(分类篇) 2022年5月9日
  • 【数据结构】链表OJ题(顺序表)(C语言实现) 2023年12月8日
  • 【数据结构】十大排序 2023年12月20日
  • 【探索排序算法的魅力:优化、性能与实用技巧】 2023年12月27日
  • 使用python语言、django开发框架、mysql数据库实现简单在线图书推荐系统 基于用户的协同过滤推荐算法 人工智能 机器学习 可视化数据分析 爬虫 个性化图书推荐系统 2023年11月7日
  • 智能优化算法:人工兔优化算法-附代码 2023年2月26日
  • Python机器学习17——极限学习机(ELM) 2023年4月6日
  • 朴素贝叶斯:教你用Python一步步识别手写数字 2022年3月22日
  • Azure AI 内容安全Content Safety Studio实战 2024年1月11日
  • python入门到精通 练习题30道(初级) 2023年3月10日
  • 外星人入侵游戏-(创新版) 2023年9月26日
  • 随机化快速排序(Java 实例代码) 2023年9月2日
  • 机器学习实战 | Python机器学习算法应用实践 2023年2月25日
  • C语言入门:冒泡法排序、交换法排序和选择法排序算法的详解(代码分析) 2023年12月8日

赞助商

PHP网站源码宝安优秀网站设计公司抚州营销网站多少钱郑州模板推广报价平湖推广网站上饶百姓网标王推广报价株洲网站搭建哪家好阿坝seo报价海西SEO按天计费公司漯河网站改版报价威海关键词按天收费公司河源设计公司网站公司济源设计网站公司娄底网站搜索优化多少钱文山外贸网站制作报价济宁外贸网站建设公司白银网络推广公司汕头百度网站优化推荐铜陵网站优化排名四平设计网站丽江网站建设设计哪家好武威网络营销临沂设计网站公司黄石关键词按天收费哪家好塔城百度关键词包年推广哪家好仙桃优化推荐襄樊SEO按天扣费多少钱双龙SEO按效果付费报价钦州百度竞价价格民治网站定制哪家好济源网站关键词优化公司歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化