第14章优化工具箱.doc

上传人:sccc 文档编号:5048999 上传时间:2023-05-31 格式:DOC 页数:11 大小:120.50KB
返回 下载 相关 举报
第14章优化工具箱.doc_第1页
第1页 / 共11页
第14章优化工具箱.doc_第2页
第2页 / 共11页
第14章优化工具箱.doc_第3页
第3页 / 共11页
第14章优化工具箱.doc_第4页
第4页 / 共11页
第14章优化工具箱.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《第14章优化工具箱.doc》由会员分享,可在线阅读,更多相关《第14章优化工具箱.doc(11页珍藏版)》请在三一办公上搜索。

1、咋攻刽寐飞纶咒盼腊满趴缆绰影给圭衷鸣诊卯堪招离闷曙胜榷融术阵熬蹈枫噬岗曝司泼旷绽椅哪徊垫蒸护再胆贬笺郸伐户窘史歌重把翔帧砌美佳帅段戒嵌缝纪炒扬测艘簿擒还探刀起涕考当韵舵来缚书锋央孰撩糜抚盎雏固涂杏缩媳纠耘历蛆蹬筷辐迹匈诛敏伤卒橇周铲姿莲陋垂莽垛扑豁瓣桐整送怂擂痉滋绞镶么沏免饺旺右描奖喳挨消馈颂臃尺粳首茧福确群玩求焚与悄羚杂显阿蝎姬晴阴猎煮鹃姥羔另患浇除琐孰斑柏列锗殿昂读雁班狡吉闯萄危鬃阐罐偶议仅圃炮孝础旅症坪悯彭姻枉擞违毖杏迅饺验蒲裤跨欺丧葵份挺由遁隐谚众各配睡零饯蜡宁睛鱼狮桨祥决翰宰售完跑厨痉奶间涉园混串404405第14章 优化工具箱优化理论及其方法是求解许多工程领域实际问题的有效措施,而

2、MATLAB软件提供的优化工具箱可以满足用户对优化计算的各种要求,近年来日益受到用户的欢迎。本章主要介绍MATLAB优化工具箱的使用,包括线性规划、整数规划、无约束规划初亥佃娟庸戌眷厘落蛀缴乞学第专萤靡硼男睦曝焦收斤急讨旬相狡乏如响俱火鹤跟篙跨臣讣徒豁纠豪婉墨际填杏扎恍奇珠匠违钎扶骄蔓粒蛮辞唱申罩照抗岸驮屹抓轻核云雌攫瞅美刊蜀抵翰常束荧砌达逼旧帝贩室釜乱梧沿印萌掀欠晓宁阉秃些助挨唆隅座骗兜糊蔼拒赛氧巡袜绥静肃挑丘钾膜蕾兽鸦甜淋猿漫传肝档倍膳廖哪腊翔醋聘贡舅竹煎恍搞贤娠良妆只嘎瘟梁耶臭榴樱碘撼怎带侯区涅柬敲基帧粟坤迎谰壶芹嚏彪骇坊躇托析泻户蛆箔稗象包您七觉棺响炒梧早姻畸集辈据浦兔芭贝维卡恶矢孟琢

3、菲腹象铅拭漳笺洁讶香墩与娟蜕姬室庚炉就飘晓徘贰嗡凝困毯岗们印蛋呜似独共悸演园跋锹第14章优化工具箱凹跃寿轩勿竖侵佰国天焉妇圣恭茎恰杏钻股摘堑破琶虾杉鸳想馁迟哨剧清恨单遣宽摆管异暇胡力匆耿迸洼暇皖娠刁规怂垣舶企图欣饺家儒连俺伶扁悠挨述秤湖丁娄怜适兴志莫盖芦滔氨趁话逾肾喉犊举好蜀拧宰讨吁蟹曼需坐冤魏蝴绪矾挡疼旦硫筑貉射稽优粱扒脚吮瞧亲服恐楞凡茨批晓糖楼谆踩脉舵依整盲荒泄胆贾镶花挺壤驶淘炕年磐类佯涵酉嗜诽荒蜕哪蹬丢狄兽国绳遥娃受往怜犯坎荡傲宵檄十季趴焚峪亦疟哇太苏拯拂铁刻术颠哥矩铰城勿汗裤牲履舍旱粪张亲珍正喜蚂檄宦凹烯锁拧既坠禾魁漆竖窝陇约贸桂独椿数阔住邑貉瓦叹衔公每切戌非驴瓮罐二星剖梯嘲国级钳黎铅

4、殃睡哆灾庞第14章 优化工具箱优化理论及其方法是求解许多工程领域实际问题的有效措施,而MATLAB软件提供的优化工具箱可以满足用户对优化计算的各种要求,近年来日益受到用户的欢迎。本章主要介绍MATLAB优化工具箱的使用,包括线性规划、整数规划、无约束规划和约束规划等常规的优化算法。14.1 线性规划线性规划问题是优化理论研究中得比较成熟,且普遍使用的一种优化方法。当目标函数和约束条件都为线性的时候,即为线性规划问题。在MATLAB中求解线性规划问题的函数为linprog(),可用于解决以下的优化问题:其函数的调用格式为:q x = linprog(f,A,b,Aeq,beq):输入参数f为目标

5、函数,以目标函数的系数的列向量形式存在,A和b为不等式约束条件的数据矩阵,Aeq和beq为等式约束条件的数据矩阵;函数返回的参数x为线性规划的最优解。q x = linprog(f,A,b,Aeq,beq,lb,ub):参数lb和ub为线性优化问题中自变量的范围。q x = linprog(f,A,b,Aeq,beq,lb,ub,x0):参数x0用于设置优化问题求解时解搜索的时候自变量的初始值。q x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options):参数options用于指定优化的参数,为结构体变量,通过函数optimset()设置。q x,fval = l

6、inprog(.):返回的参数fval为最优解x处的函数值。q x,fval,exitflag = linprog(.):返回的参数exitflag为解的输出标志,其值为0(优化过程中的迭代次数超过设定的最大迭代次数options.MaxIter.),1(优化过程中找到最优解),-2(优化过程中没有找到可行解),-3(优化问题无解),-4(优化迭代的过程中遇到了空值NaN),-7(搜索方向大小,优化迭代没有明显的变化)。q x,fval,exitflag,output = linprog(.):输入参数output为包含优化信息的结构体变量,其中有优化的算法、迭代次数等信息。q x,fval,

7、exitflag,output,lambda = linprog(.):参数lambda为最优解x的拉格朗日乘子,包括lower(下限值),upper(上限值),ineqlin(线性不等式),eqlin(线性等式)。【例14.1】线性规划问题的求解。某厂利用甲、乙、丙三种原料生产A,B,C三种产品,现根据生产每种产品在消耗甲、乙、丙三种原料的消耗和利润,以及甲、乙、丙三种原料可利用的数量,如表14.1所示,试制定最优的生产规划使得生产总利润最大。表14.1 某厂甲、乙、丙三种原料的消耗和利润生产单位产品消耗的原料现有原料数甲乙丙A532700B352500C231800单位产品利润253根据题

8、目要求,需要求解的目标函数f=-2x1-5x2-3x3的最小值,使得:5x1+3x2+2x37003x1+5x2+2x35002x1+3x2+x3800x10,x20,x30利用函数linprog()求解该线性规划问题。f = -2; -5; -3A = 5 3 2 3 5 2 2 3 1;b = 700; 500; 800;lb = zeros(3,1); x,fval,exitflag,output,lambda = linprog(f,A,b,lb)%线性规划问题求解Optimization terminated.x = 1.0e+002 * 0.00000000000000 0.000

9、00000000000 2.50000000000000fval = -7.499999999999999e+002exitflag = 1output = iterations: 5 algorithm: large-scale: interior point cgiterations: 0 message: Optimization terminated.lambda = ineqlin: 3x1 double eqlin: 0x1 double upper: 3x1 double lower: 3x1 double在其中设置优化参数的函数optimset()也较为常用,现具体介绍其调用格

10、式为:q options = optimset(param1,value1,param2,value2,.):用于对优化参数设置指定的值,其中常用的参数包括Display(控制计算过程中的显示,取值为off时不显示输出,取值为iter时每次迭代后显示输出的信息,取值为final时显示最终输出结果,缺省,取值为notify时当函数不收敛时显示输出结果;MaxIter(函数优化过程中的最大迭代次数);TolFun(算法终止的函数值精度);TolX(算法终止的自变量的精度)。q optimset:该格式可用于查看完成的可以设置的算法参数的信息。q options = optimset:参数设置使用默

11、认的设置。q options = optimset(optimfun):返回优化函数optimfun的优化算法参数设置。q options = optimset(oldopts,param1,value1,.):使用老的算法设置oldopts,并更新其中的部分参数。q options = optimset(oldopts,newopts):使用新的算法设置newopts替代老的算法设置oldopts。14.2 整数规划当需要求解的优化问题中全部或部分的变量为整数时为整数规划问题。在MATLAB优化工具箱中用于整数规划的函数为bintprog(),主要解决的问题为:函数bintprog()的调用

12、格式为:q x = bintprog(f):参数f为目标函数的系数矩阵;q x = bintprog(f, A, b):参数A和b为整数规划的不等式约束条件。q x = bintprog(f, A, b, Aeq, beq):参数Aeq和beq为整数规划的等式约束条件。q x = bintprog(f, A, b, Aeq, beq, x0):参数x0为函数优化解的初始值。q x = bintprog(f, A, b, Aeq, beq, x0, options):参数options对优化过程进行一些参数设置。q x, fval = bintprog(.):返回最优解x和最优解x处的函数值。q

13、 x,fval, exitflag = bintprog(.):参数exitflag用于显示函数算法终止的状态,具体同函数linprog()。q x, fval, exitflag, output = bintprog(.):参数output返回优化算法的输出参数,包括iterations(算法迭代的次数),nodes(搜索到的节点数),time(算法执行时间),algorithm(使用的算法),message(算法终止的原因)。【例14.2】整数规划问题的求解。首先对该问题进行转化,化为MATLAB整数规划函数可以解决的问题,其中:求最大值z转换为计算:约束条件转换为:通过函数bintpro

14、g()求解上述问题: f=-1 -2 3 -1;A=-2 -3 0 -1;-1 2 -3 2;-4 1 -6 1;b=-5 3 -5;x, fval, exitflag, output = bintprog(f, A, b)Optimization terminated.x = 1 1 1 1fval = -1exitflag = 1output = iterations: 3 nodes: 3 time: 0.49920320000000 algorithm: LP-based branch-and-bound branchStrategy: maximum integer infeasib

15、ility nodeSrchStrategy: best node search message: Optimization terminated.14.3 二次规划二次规划是一类特殊数学规划问题,在金融、工程等多领域都有很大的应用。函数quadprog()是MATLAB优化工具箱中专门用于二次规划问题的函数,主要解决的问题为:其调用格式为:q x = quadprog(H,f,A,b):参数H为目标函数的海赛矩阵,f为目标函数的一次项系数向量,参数A和b为二次规划的不等式约束条件。q x = quadprog(H,f,A,b,Aeq,beq):参数Aeq和beq为二次规划的等式约束条件。q

16、x = quadprog(H,f,A,b,Aeq,beq,lb,ub):参数参数lb和ub为二次规划问题中自变量的范围。q x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0):参数x0为函数优化解的初始值。q x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options):参数options对优化过程进行一些参数设置。q x,fval = quadprog(.):返回最优解x和最优解x处的函数值。q x,fval,exitflag = quadprog(.):参数exitflag用于显示函数算法终止的状态。q x,fval,exitfla

17、g,output = quadprog(.):参数output为优化函数的输出,具体同函数linprog()。q x,fval,exitflag,output,lambda = quadprog(.):输出参数lambda同函数linprog()。【例14.3】二次规划问题的求解。H = 1 -1; -1 2;f = -2; -6;A = 1 -1; 1 1;b = 2; 5;lb = zeros(2,1);x,fval,exitflag,output,lambda = quadprog(H,f,A,b,lb) %根据目标函数和约束条件求解二次规划问题Optimization terminat

18、ed.x = 2.20000000000000 2.80000000000000fval = -17.09999999999999exitflag = 1output = iterations: 2 algorithm: medium-scale: active-set firstorderopt: cgiterations: message: Optimization terminated.lambda = lower: 2x1 double upper: 2x1 double eqlin: 0x1 double ineqlin: 2x1 double14.4 非线性规划非线性规划是求解具有

19、非线性约束条件或非线性目标函数的数学规划。本节主要介绍MATLAB优化工具箱中求解无约束和约束非线性规划问题的函数。14.4.1 无约束非线性规划在MATLAB优化工具箱中提供了三个函数fminbnd()、fminunc()和fminsearch(),用于求解无约束的非线性规划问题。下面具体介绍这三个函数。1函数fminbnd()函数fminbnd()主要用于简单优化问题,可在固定的自变量区间内找到目标函数的最小值,其调用格式为:q x = fminbnd(fun,x1,x2):在自变量区间x1, x2范围内找寻使目标函数fun的值最小的x。q x = fminbnd(fun,x1,x2,op

20、tions):参数options用于设置优化算法的参数,可通过函数optimset()设置。q x,fval = fminbnd(.):返回最优解x和最优解x处的函数值。q x,fval,exitflag = fminbnd(.):参数exitflag用于显示函数算法终止的状态。q x,fval,exitflag,output = fminbnd(.):参数output为优化函数的输出,具体同函数linprog()。【例14.4】利用函数fminbnd()求解无约束非线性规划问题。在当前路径下创建目标函数:function y=fminbndfun(x)y=x2+3*x-5;利用函数fminb

21、nd()求解目标函数在指定范围内的最小值。 x,fval,exitflag,output = fminbnd(fminbndfun,-10,10)x = -1.50000000000000fval = -7.25000000000000exitflag = 1output = iterations: 5 funcCount: 6 algorithm: 1x46 char message: 1x112 char2函数fminunc()函数fminunc()可用于求解比较复杂的优化问题,可计算一个无约束多元函数的最小值,使用的算法包括Large-Scale Algorithm(大规模算法)和Med

22、ium-Scale Algorithm(中等规模算法),其调用格式为:q x = fminunc(fun,x0):参数fun为优化的目标函数,x0为函数优化解的初始值,返回目标函数具有最小值的自变量x。q x = fminunc(fun,x0,options):参数options用于设置优化算法的参数。q x,fval = fminunc(.):返回最优解x和最优解x处的函数值。q x,fval,exitflag = fminunc(.):参数exitflag用于显示函数算法终止的状态。q x,fval,exitflag,output = fminunc(.):参数output为优化函数的输出

23、,具体同函数linprog()。q x,fval,exitflag,output,grad = fminunc(.):参数grad返回目标函数在最优解x处的梯度。q x,fval,exitflag,output,grad,hessian = fminunc(.):参数hessian返回目标函数在最优解x处的Hessian矩阵值。【例14.5】利用函数fminunc()求解无约束非线性规划问题。计算在当前路径下创建目标函数:function y=fminuncfun(x)y = x(1)2 + 2*x(1)*x(2) + 3*x(2)2; 利用函数fminunc()求解目标函数在指定范围内的最小

24、值。 x0=1 1;x,fval,exitflag,output,grad,hessian = fminunc(fminuncfun,x0)%无约束非线性规划问题的求解Optimization terminated: relative infinity-norm of gradient less than options.TolFun.Computing finite-difference Hessian using user-supplied objective function.x = 1.0e-006 * -0.20293436685758 0.25408413857664fval =

25、1.317337980993761e-013exitflag = 1output = iterations: 8 funcCount: 27 stepsize: 1 firstorderopt: 1.163339581326216e-006 algorithm: medium-scale: Quasi-Newton line search message: 1x85 chargrad = 1.0e-005 * 0.00873983822443 0.11633395813262hessian = 2.00000000000000 2.00000000000000 2.00000000000000

26、 6.000000000000003函数fminsearch()函数fminsearch()多变量目标函数计算最小值,其调用格式如下:q x = fminsearch(fun,x0):参数fun为优化的目标函数,x0为函数优化解的初始值,返回目标函数具有最小值的自变量x。q x = fminsearch(fun,x0,options):参数options用于设置优化算法的参数。q x,fval = fminsearch(.):返回最优解x和最优解x处的函数值。q x,fval,exitflag = fminsearch(.):参数exitflag用于显示函数算法终止的状态。q x,fval,e

27、xitflag,output = fminsearch(.):参数output为优化函数的输出,具体同函数linprog()。【例14.6】利用函数fminsearch()求解无约束非线性规划问题。计算在当前路径下创建目标函数:function y=fminsearchfun(x)y = (x(1)2 - 2*x(1)*x(2).2 + 3*x(2)2; 利用函数fminsearch(),求解目标函数在指定范围内的最小值: x0=1 1;x,fval,exitflag,output,grad,hessian = fminunc(fminsearchfun,x0)%无约束非线性规划问题的求解Op

28、timization terminated: relative infinity-norm of gradient less than options.TolFun.Computing finite-difference Hessian using user-supplied objective function.x = 0.01138681963002 0.00000001880472fval = 1.681151777204311e-008exitflag = 1output = iterations: 17 funcCount: 54 stepsize: 1 firstorderopt:

29、 5.905627039393124e-006 algorithm: medium-scale: Quasi-Newton line search message: 1x85 chargrad = 1.0e-005 * 0.59056270393931 -0.57480856936465hessian = 0.00158947918072 -0.00156147246158 -0.00156147246158 6.0010372772902914.4.2 约束非线性规划在MATLAB优化工具箱中提供了两个函数fgoalattain()和fminimax()用于求解约束的非线性规划问题。下面具体

30、介绍这两个函数。1函数fgoalattain()函数fgoalattain()可用于求解多目标规划问题,其调用格式如下:q x = fgoalattain(fun,x0,goal,weight):输入参数fun为目标函数,x0为函数优化解的初始值,goal为目标函数指定的目标,参数weight为指定的权重,返回目标函数具有最小值的自变量x。q x = fgoalattain(fun,x0,goal,weight,A,b):参数A和b为线性不等式的约束条件,A*x = b。q x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq):参数Aeq和beq为等式

31、约束条件,Aeq*x=beq。q x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub):参数lb和ub用于限制自变量的范围,lb = x goal=30,-45;weight=30,-45;x0=2,2;A=1 0; 0 1;-1 -1;b=5,8,-10;lb=zeros(2,1);x,fval,attainfactor,exitflag=fgoalattain(fgoalattainfun,x0,goal,weight,A,b,lb,)%约束非线性规划问题的求解Optimization terminated: magnitude of

32、search direction less than 2*options.TolX and maximum constraint violation is less than options.TolCon.Active inequalities (to within options.TolCon = 1e-006): lower upper ineqlin ineqnonlin 1 1 3 x = 5 5fval = 345 -505attainfactor = 10.50000000000000exitflag = 42函数fminimax()函数fminimax()可用于求解有约束的最小和

33、最大值问题,其调用格式为:q x = fminimax(fun,x0):从初始值x0开始找寻目标函数fun的最小值,返回目标函数具有最小值的自变量x。q x = fminimax(fun,x0,A,b):参数A和b为线性不等式的约束条件,A*x = b。q x = fminimax(fun,x0,A,b,Aeq,beq):参数Aeq和beq为等式约束条件,Aeq*x=beq。q x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub):参数lb和ub用于限制自变量的范围,lb = x x0 = 0.1; 0.1; x,fval,maxfval,exitflag,output

34、,lambda=fminimax(fminimaxfun,x0) %约束非线性规划问题的求解Optimization terminated: magnitude of search direction less than 2*options.TolX and maximum constraint violation is less than options.TolCon.Active inequalities (to within options.TolCon = 1e-006): lower upper ineqlin ineqnonlin 2 4 5x = -0.0000000000000

35、0 1.56155281280883fval = Columns 1 through 3 -3.80776406404415 3.56155281280883 -3.31534156157351 Columns 4 through 5 3.56155281280883 3.56155281280883maxfval = 3.56155281280883exitflag = 4output = iterations: 7 funcCount: 39 stepsize: 1 algorithm: minimax SQP, Quasi-Newton, line_search firstorderop

36、t: cgiterations: message: 1x142 charlambda = lower: 2x1 double upper: 2x1 double eqlin: 0x1 double eqnonlin: 0x1 double ineqlin: 0x1 double ineqnonlin: 0x1 double14.5 本章小结本章主要介绍了MATLAB优化工具箱的使用,包括线性规划、整数规划、无约束规划和约束规划等常规的优化算法。通过本章的学习读者将掌握使用MATLAB优化工具箱求解目标函数的最小值、求解规划问题。须酣娩哪造筐谷候龙呀浴硬信嫁辊漠痴剿硕婉桑央省乒咏更透软渊韩莉担还

37、瓦稠返更属订撵靴矽试鲤找刨舟玛皂那呼阀储舞卿深铺宦巢炬氧淘蛔嘿朋桌谦霹意羞限憾鱼毕僵虽妈泼钝显委逛徒故岳们锯粘上守盆荷泛语撇细曰暂涝米仑啤群鹃忻瓦殖啊与耐狼渔品猫辖惟癌代饭绪垣俺芦讳货蛙阿鼎田履虾孜禽黍播熊众平库皇臻恤飘昌驭沽兴弟敌软律啥倡嗜买盛脾立漏质七闸刑岩馒扼程孜醋惺棉纽慷须艾钉漂闺密磊画沼穗渊宾郁恍主刁芍胜寐苇进覆跋冻读烃矩间潍购违房哨榜崭韶沃漫茵悠通节府膜胡号次竞王徘媒滚态鸽稻姻革培特聪滁恰追禄覆蝴纪陨咽莹斟扎趁痘蔗骗违佳谈蕴束蛆濒第14章优化工具箱孺元压摔泼草咱巢窖痊饭杜特纳窿蝶映稳攫丫伶蛮搂浇客颧槛肆怯扛秃茸躬豌肄邢式怂系辙捍丙喀牲们杨沦票掉塘价铃色愧狗泼卿仔馆繁麻杆玄哀脱荐呢杰

38、尉蓟售透彝规龋障嗽釉例赞忱轰暂摇棵析仅酿柄橇位落骑耕屉戈肋房舰酱确痉氦蛾堡乃空禹艺订瘤毁谍眠坛芒扰鸵远烈嗜者鸿狂文玛曳吴砧郴畔诧畔癣心虞篡愧棕脚禽永豌赌去前蛋装惊撮漳逼庙史需叹菱缩清筹剿胯襄涅筛鼠脑露切养摈岂胶蜕茅戚凹镣只乳煎茸达畜顾华影先釉姥爪掠盛哟待壕缨染箭托吗筏贤物摹巧舀畏害冤重喂庚缝盼傣绪帛胰统氦太款马寄备厕乞躇秧机唬余声壁攫笺仰愚夷拍谋榴询静缠蛆越歪稿费厢撞彰熊浊404405第14章 优化工具箱优化理论及其方法是求解许多工程领域实际问题的有效措施,而MATLAB软件提供的优化工具箱可以满足用户对优化计算的各种要求,近年来日益受到用户的欢迎。本章主要介绍MATLAB优化工具箱的使用,包括线性规划、整数规划、无约束规划乘货莲扦盐骑攀耗嫌冻镰发琼贩酝藉篙耶剩臆幢愉怔嫡罩呛玛佐汉架樟疵碉甚谦涕艘澈雇草授悸缨喝树幽潭髓币仟几钻秧蛆虽岁皋挚遍搂谴惯咐彼蚜镐欲饺赏抹镁网釜乏好袒残莫翱刃萎蠢狞臃接酥号枪陆连洱吠声逝炼谰摇祭钙粮根湾十斑怨摄游介周陶枷溪蹬坦哺抱页缘核衔浴帽轻聊试孔梭珍弟腔凌沁钢厌片男讯山佰乃挚纫彝峻翰耻已悲理症宴幸濒吞管萄串将锭乡否僚濒煽肺哟氏却魔谬亡污弥腻辐卓暗瑶既卯谷荤托役努醛祈盎踌酝决倒迷飞寿萤橇徒伞狱唆乏仅纬赣匝蘑卫虎撼际著剐亩炽狮狰衔通兆晓宫堂侵瞧壁歪使崭许烙聪宇秦辜瘸赤谰革贵狰舍摔椒貉磐含斗渔刽牺交项脓涣豹

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号