数学模型-优化模型课件.ppt

上传人:小飞机 文档编号:3292591 上传时间:2023-03-12 格式:PPT 页数:64 大小:876KB
返回 下载 相关 举报
数学模型-优化模型课件.ppt_第1页
第1页 / 共64页
数学模型-优化模型课件.ppt_第2页
第2页 / 共64页
数学模型-优化模型课件.ppt_第3页
第3页 / 共64页
数学模型-优化模型课件.ppt_第4页
第4页 / 共64页
数学模型-优化模型课件.ppt_第5页
第5页 / 共64页
点击查看更多>>
资源描述

《数学模型-优化模型课件.ppt》由会员分享,可在线阅读,更多相关《数学模型-优化模型课件.ppt(64页珍藏版)》请在三一办公上搜索。

1、简要提纲,优化模型简介 LINDO公司的主要软件产品及功能简介 LINDO软件的使用简介 LINGO软件的使用简介 建模与求解实例(结合软件使用),优化模型,实际问题中的优化模型,x决策变量,f(x)目标函数,gi(x)0约束条件,数学规划,线性规划(LP)二次规划(QP)非线性规划(NLP),纯整数规划(PIP)混合整数规划(MIP),整数规划(IP),0-1整数规划一般整数规划,连续规划,LINDO 公司软件产品简要介绍,美国芝加哥(Chicago)大学的Linus Schrage教授于1980年前后开发,后来成立 LINDO系统公司(LINDO Systems Inc.),网址:http

2、:/,LINDO:Linear INteractive and Discrete Optimizer(V6.1)LINGO:Linear INteractive General Optimizer(V8.0)LINDO API:LINDO Application Programming Interface(V2.0)Whats Best!:(SpreadSheet e.g.EXCEL)(V7.0),演示(试用)版、学生版、高级版、超级版、工业版、扩展版(求解问题规模和选件不同),LINDO和LINGO软件能求解的优化模型,LINGO,LINDO,优化模型,线性规划(LP),非线性规划(NLP)

3、,二次规划(QP),连续优化,整数规划(IP),LP QP NLP IP 全局优化(选)ILP IQP INLP,LINDO/LINGO软件的求解过程,LINDO/LINGO预处理程序,线性优化求解程序,非线性优化求解程序,分枝定界管理程序,1.确定常数2.识别类型,1.单纯形算法2.内点算法(选),1、顺序线性规划法(SLP)2、广义既约梯度法(GRG)(选)3、多点搜索(Multistart)(选),建模时需要注意的几个基本问题,1、尽量使用实数优化,减少整数约束和整数变量2、尽量使用光滑优化,减少非光滑约束的个数 如:尽量少使用绝对值、符号函数、多个变量求最大/最小值、四舍五入、取整函数

4、等3、尽量使用线性模型,减少非线性约束和非线性变量的个数(如x/y 5 改为x5y)4、合理设定变量上下界,尽可能给出变量初始值 5、模型中使用的参数数量级要适当(如小于103),需要掌握的几个重要方面,1、LINDO:正确阅读求解报告(尤其要掌握敏感性分析)2、LINGO:掌握集合(SETS)的应用;正确阅读求解报告;正确理解求解状态窗口;学会设置基本的求解选项(OPTIONS);掌握与外部文件的基本接口方法,例1 加工奶制品的生产计划,50桶牛奶,时间480小时,至多加工100公斤A1,制订生产计划,使每天获利最大,35元可买到1桶牛奶,买吗?若买,每天最多买多少?,可聘用临时工人,付出的

5、工资最多是每小时几元?,A1的获利增加到 30元/公斤,应否改变生产计划?,每天:,x1桶牛奶生产A1,x2桶牛奶生产A2,获利 243x1,获利 164 x2,原料供应,劳动时间,加工能力,决策变量,目标函数,每天获利,约束条件,非负约束,线性规划模型(LP),时间480小时,至多加工100公斤A1,模型求解,max 72x1+64x2st2)x1+x2503)12x1+8x24804)3x1100end,OBJECTIVE FUNCTION VALUE 1)3360.000 VARIABLE VALUE REDUCED COST X1 20.000000 0.000000 X2 30.00

6、0000 0.000000 ROW SLACK OR SURPLUS DUAL PRICES 2)0.000000 48.000000 3)0.000000 2.000000 4)40.000000 0.000000 NO.ITERATIONS=2,DO RANGE(SENSITIVITY)ANALYSIS?,No,20桶牛奶生产A1,30桶生产A2,利润3360元。,模型求解,reduced cost值表示当该非基变量增加一个单位时(其他非基变量保持不变)目标函数减少的量(对max型问题),OBJECTIVE FUNCTION VALUE 1)3360.000 VARIABLE VALUE

7、REDUCED COST X1 20.000000 0.000000 X2 30.000000 0.000000 ROW SLACK OR SURPLUS DUAL PRICES 2)0.000000 48.000000 3)0.000000 2.000000 4)40.000000 0.000000 NO.ITERATIONS=2,也可理解为:为了使该非基变量变成基变量,目标函数中对应系数应增加的量,OBJECTIVE FUNCTION VALUE 1)3360.000 VARIABLE VALUE REDUCED COST X1 20.000000 0.000000 X2 30.00000

8、0 0.000000 ROW SLACK OR SURPLUS DUAL PRICES 2)0.000000 48.000000 3)0.000000 2.000000 4)40.000000 0.000000,原料无剩余,时间无剩余,加工能力剩余40,max 72x1+64x2st2)x1+x2503)12x1+8x24804)3x1100end,三种资源,“资源”剩余为零的约束为紧约束(有效约束),结果解释,OBJECTIVE FUNCTION VALUE 1)3360.000 VARIABLE VALUE REDUCED COST X1 20.000000 0.000000 X2 30.

9、000000 0.000000 ROW SLACK OR SURPLUS DUAL PRICES 2)0.000000 48.000000 3)0.000000 2.000000 4)40.000000 0.000000,结果解释,最优解下“资源”增加1单位时“效益”的增量,原料增1单位,利润增48,时间加1单位,利润增2,能力增减不影响利润,影子价格,35元可买到1桶牛奶,要买吗?,35 48,应该买!,聘用临时工人付出的工资最多每小时几元?,2元!,RANGES IN WHICH THE BASIS IS UNCHANGED:OBJ COEFFICIENT RANGES VARIABLE

10、CURRENT ALLOWABLE ALLOWABLE COEF INCREASE DECREASE X1 72.000000 24.000000 8.000000 X2 64.000000 8.000000 16.000000 RIGHTHAND SIDE RANGES ROW CURRENT ALLOWABLE ALLOWABLE RHS INCREASE DECREASE 2 50.000000 10.000000 6.666667 3 480.000000 53.333332 80.000000 4 100.000000 INFINITY 40.000000,最优解不变时目标系数允许变

11、化范围,DO RANGE(SENSITIVITY)ANALYSIS?,Yes,x1系数范围(64,96),x2系数范围(48,72),A1获利增加到 30元/千克,应否改变生产计划,x1系数由243=72 增加为303=90,在允许范围内,不变!,(约束条件不变),结果解释,结果解释,RANGES IN WHICH THE BASIS IS UNCHANGED:OBJ COEFFICIENT RANGES VARIABLE CURRENT ALLOWABLE ALLOWABLE COEF INCREASE DECREASE X1 72.000000 24.000000 8.000000 X2

12、64.000000 8.000000 16.000000 RIGHTHAND SIDE RANGES ROW CURRENT ALLOWABLE ALLOWABLE RHS INCREASE DECREASE 2 50.000000 10.000000 6.666667 3 480.000000 53.333332 80.000000 4 100.000000 INFINITY 40.000000,影子价格有意义时约束右端的允许变化范围,原料最多增加10,时间最多增加53,35元可买到1桶牛奶,每天最多买多少?,最多买10桶?,(目标函数不变),注意:充分但可能不必要,使用LINDO的一些注意

13、事项,“”(或“=”(或“=”)功能相同变量与系数间可有空格(甚至回车),但无运算符变量名以字母开头,不能超过8个字符变量名不区分大小写(包括LINDO中的关键字)目标函数所在行是第一行,第二行起为约束条件行号(行名)自动产生或人为定义。行名以“)”结束行中注有“!”符号的后面部分为注释。如:!Its Comment.在模型的任何地方都可以用“TITLE”对模型命名(最多72个字符),如:TITLE This Model is only an Example,变量不能出现在一个约束条件的右端表达式中不接受括号“()”和逗号“,”等任何符号,例:400(X1+X2)需写为400X1+400X2表

14、达式应化简,如2X1+3X2-4X1应写成-2X1+3X2缺省假定所有变量非负;可在模型的“END”语句后用“FREE name”将变量name的非负假定取消可在“END”后用“SUB”或“SLB”设定变量上下界 例如:“sub x1 10”的作用等价于“x1=10”但用“SUB”和“SLB”表示的上下界约束不计入模型的约束,也不能给出其松紧判断和敏感性分析。14.“END”后对0-1变量说明:INT n 或 INT name15.“END”后对整数变量说明:GIN n 或 GIN name,使用LINDO的一些注意事项,二次规划(QP)问题,LINDO可求解二次规划(QP)问题,但输入方式较

15、复杂,因为在LINDO中不许出现非线性表达式需要为每一个实际约束增加一个对偶变量(LAGRANGE乘子),在实际约束前增加有关变量的一阶最优条件,转化为互补问题“END”后面使用QCP命令指明实际约束开始的行号,然后才能求解建议总是用LINGO解QP注意对QP和IP:敏感性分析意义不大,状态窗口(LINDO Solver Status),当前状态:已达最优解迭代次数:18次约束不满足的“量”(不是“约束个数”):0当前的目标值:94最好的整数解:94整数规划的界:93.5分枝数:1所用时间:0.00秒(太快了,还不到0.005秒)刷新本界面的间隔:1(秒),选项设置,Preprocess:预处

16、理(生成割平面);Preferred Branch:优先的分枝方式:“Default”(缺省方式)、“Up”(向上取整优先)、“Down”(向下取整优先);IP Optimality Tol:IP最优值允许的误差上限(一个百分数,如5%即0.05);IP Objective Hurdle:IP目标函数的篱笆值,即只寻找比这个值更优最优解(如当知道当前模型的某个整数可行解时,就可以设置这个值);IP Var Fixing Tol:固定一个整数变量取值所依据的一个上限(如果一个整数变量的判别数(REDUCED COST)的值很大,超过该上限,则以后求解中把该整数变量固定下来)。,Nonzero L

17、imit:非零系数的个数上限;Iteration Limit:最大迭代步数;Initial Contraint Tol:约束的初始误差上限;Final Contraint Tol:约束的最后误差上限;Entering Var Tol:进基变量的REDUCED COST的误差限;Pivot Size Tol:旋转元的误差限,Report/Statistics,第一行:模型有5行(约束4行),4个变量,两个整数变量(没有0-1变量),从第4行开始是二次规划的实际约束。第二行:非零系数19个,约束中非零系数12个(其中6个为1或-1),模型密度为0.760(密度=非零系数/行数(变量数)。第三行的意

18、思:按绝对值看,系数最小、最大分别为0.3和277。第四行的意思:模型目标为极小化;小于等于、等于、大于等于约束分别有、个;广义上界约束(GUBS)不超过个;变量上界约束(VUBS)不少于个。所谓GUBS,是指一组不含有相同变量的约束;所谓VUBS,是指一个蕴涵变量上界的约束,如从约束X1+X2-X3=0可以看出,若X3=0,则X1=0,X2=0(因为有非负限制),因此X1+X2-X3=0是一个VUBS约束。第五行的意思:只含个变量的约束个数=个;冗余的列数=个,ROWS=5 VARS=4 INTEGER VARS=2(0=0/1)QCP=4NONZEROS=19 CONSTRAINT NON

19、Z=12(6=+-1)DENSITY=0.760SMALLEST AND LARGEST ELEMENTS IN ABSOLUTE VALUE=0.300000 277.000OBJ=MIN,NO.:2 0 2,GUBS=0SINGLE COLS=0 REDUNDANT COLS=0,LINDO行命令、命令脚本文件,批处理:可以采用命令脚本(行命令序列),WINDOWS环境下行命令的意义不大,Example 演示,用FILE/TAKE COMMANDS(F11)命令调入,必须是以LINDO PACKED形式(压缩)保存的文件,FILE/SAVE命令,SAVE行命令,LINGO软件简介,目标与约

20、束段 集合段(SETS ENDSETS)数据段(DATA ENDDATA)初始段(INIT ENDINIT),LINGO模型的构成:4个段,LINGO模型的优点,包含了LINDO的全部功能提供了灵活的编程语言(矩阵生成器),LINGO模型 例:选址问题,某公司有6个建筑工地,位置坐标为(ai,bi)(单位:公里),水泥日用量di(单位:吨),假设:料场和工地之间有直线道路,用例中数据计算,最优解为,总吨公里数为136.2,线性规划模型,决策变量:ci j(料场j到工地i的运量)12维,选址问题:NLP,2)改建两个新料场,需要确定新料场位置(xj,yj)和运量cij,在其它条件不变下使总吨公里

21、数最小。,决策变量:ci j,(xj,yj)16维,非线性规划模型,LINGO模型的构成:4个段,集合段(SETS ENDSETS),数据段(DATA ENDDATA),初始段(INIT ENDINIT),目标与约束段,局部最优:89.8835(吨公里),LP:移到数据段,边界,集合的类型,集合 派生集合 基本集合 稀疏集合 稠密集合 元素列表法 元素过滤法 直接列举法 隐式列举法,setname/member_list/:attribute_list;,setname(parent_set_list)/member_list/:attribute_list;,SETS:CITIES/A1,A

22、2,A3,B1,B2/;ROADS(CITIES,CITIES)/A1,B1 A1,B2 A2,B1 A3,B2/:D;ENDSETS,SETS:STUDENTS/S1.S8/;PAIRS(STUDENTS,STUDENTS)|ENDSETS,集合元素的隐式列举,运算符的优先级,三类运算符:算术运算符 逻辑运算符 关系运算符,集合循环函数,四个集合循环函数:FOR、SUM、MAX、MINfunction(setname(set_index_list)|condition:expression_list);,objective MAX=SUM(PAIRS(I,J):BENEFIT(I,J)*MA

23、TCH(I,J);FOR(STUDENTS(I):constraints SUM(PAIRS(J,K)|J#EQ#I#OR#K#EQ#I:MATCH(J,K)=1);FOR(PAIRS(I,J):BIN(MATCH(I,J);MAXB=MAX(PAIRS(I,J):BENEFIT(I,J);MINB=MIN(PAIRS(I,J):BENEFIT(I,J);,Example:,状态窗口,Solver Type:B-and-BGlobal Multistart,Model Class:LP,QP,ILP,IQP,PILP,PIQP,NLP,INLP,PINLP,State:Global Optim

24、umLocal OptimumFeasibleInfeasibleUnboundedInterruptedUndetermined,7个选项卡(可设置80-90个控制参数),程序与数据分离,文本文件,使用外部数据文件,Cut(or Copy)Paste 方法FILE 输入数据、TEXT输出数据(文本文件)OLE函数与电子表格软件(如EXCEL)连接ODBC函数与数据库连接LINGO命令脚本文件,LG4(LONGO模型文件)LNG(LONGO模型文件)LTF(LONGO脚本文件)LDT(LONGO数据文件)LRP(LONGO报告文件),常用文件后缀,FILE和TEXT:文本文件输入输出,MODE

25、L:SETS:MYSET/FILE(myfile.txt)/:FILE(myfile.txt);ENDSETSMIN=SUM(MYSET(I):SHIP(I)*COST(I);FOR(MYSET(I):CON1 SHIP(I)NEED(I);CON2 SHIP(I)SUPPLY(I);DATA:COST=FILE(myfile.txt);NEED=FILE(myfile.txt);SUPPLY=FILE(myfile.txt);TEXT(result.txt)=SHIP,DUAL(SHIP),DUAL(CON1);ENDDATAEND,myfile.txt文件的内容、格式:Seattle,De

26、troit,Chicago,DenverCOST,NEED,SUPPLY,SHIP12,28,15,201600,1800,1200,10001700,1900,1300,1100,演示 MyfileExample.lg4,OLE:与EXCEL连接,MODEL:SETS:MYSET:COST,SHIP,NEED,SUPPLY;ENDSETSMIN=SUM(MYSET(I):SHIP(I)*COST(I);FOR(MYSET(I):CON1 SHIP(I)NEED(I);CON2 SHIP(I)SUPPLY(I);DATA:MYSET=OLE(D:JXIEBJ2004MCMmydata.xls,

27、CITIES);COST,NEED,SUPPLY=OLE(mydata.xls);OLE(mydata.xls,SOLUTION)=SHIP;ENDDATAEND,mydata.xls文件中必须有下列名称(及数据):CITIES,COST,NEED,SUPPLY,SOLUTION,在EXCEL中还可以通过“宏”自动调用LINGO(略)也可以将EXCEL表格嵌入到LINGO模型中(略),演示 MydataExample.lg4,ODBC:与数据库连接,输入基本集合元素:setname/ODBC(datasource,tablename,columnname)/输入派生集合元素:setname/O

28、DBC(source,table,column1,column2)/,目前支持下列DBMS:(如为其他数据库,则需自行安装驱动)ACCESS,DBASE,EXCEL,FOXPRO,ORACLE,PARADOX,SQL SERVER,TEXE FILES,使用数据库之前,数据源需要在ODBC管理器注册,输入数据:Attr_list=ODBC(source,table,column1,column2)输出数据:ODBC(source,table,column1,column2)=Attr_list,具体例子略,建模实例与求解,最短路问题下料问题露天矿的运输问题钢管运输问题,最短路问题,求各点到T的

29、最短路,问题1.如何下料最节省?,例 钢管下料,问题2.客户增加需求:,节省的标准是什么?,由于采用不同切割模式太多,会增加生产和管理成本,规定切割模式不能超过3种。如何下料最节省?,按照客户需要在一根原料钢管上安排切割的一种组合。,切割模式,合理切割模式的余料应小于客户需要钢管的最小尺寸,钢管下料,为满足客户需要,按照哪些种合理模式,每种模式切割多少根原料钢管,最为节省?,合理切割模式,2.所用原料钢管总根数最少,钢管下料问题1,两种标准,1.原料钢管剩余总余量最小,xi 按第i 种模式切割的原料钢管根数(i=1,2,7),约束,满足需求,决策变量,目标1(总余量),按模式2切割12根,按模

30、式5切割15根,余料27米,最优解:x2=12,x5=15,其余为0;最优值:27,整数约束:xi 为整数,当余料没有用处时,通常以总根数最少为目标,目标2(总根数),钢管下料问题1,约束条件不变,最优解:x2=15,x5=5,x7=5,其余为0;最优值:25。,xi 为整数,按模式2切割15根,按模式5切割5根,按模式7切割5根,共25根,余料35米,虽余料增加8米,但减少了2根,与目标1的结果“共切割27根,余料27米”相比,钢管下料问题2,对大规模问题,用模型的约束条件界定合理模式,增加一种需求:5米10根;切割模式不超过3种。,现有4种需求:4米50根,5米10根,6米20根,8米15

31、根,用枚举法确定合理切割模式,过于复杂。,决策变量,xi 按第i 种模式切割的原料钢管根数(i=1,2,3),r1i,r2i,r3i,r4i 第i 种切割模式下,每根原料钢管生产4米、5米、6米和8米长的钢管的数量,满足需求,模式合理:每根余料不超过3米,整数非线性规划模型,钢管下料问题2,目标函数(总根数),约束条件,整数约束:xi,r1i,r2i,r3i,r4i(i=1,2,3)为整数,增加约束,缩小可行域,便于求解,原料钢管总根数下界:,特殊生产计划:对每根原料钢管模式1:切割成4根4米钢管,需13根;模式2:切割成1根5米和2根6米钢管,需10根;模式3:切割成2根8米钢管,需8根。原

32、料钢管总根数上界:31,模式排列顺序可任定,钢管下料问题2,需求:4米50根,5米10根,6米20根,8米15根,每根原料钢管长19米,LINGO求解整数非线性规划模型,Local optimal solution found at iteration:12211 Objective value:28.00000Variable Value Reduced CostX1 10.00000 0.000000X2 10.00000 2.000000X3 8.000000 1.000000R11 3.000000 0.000000R12 2.000000 0.000000R13 0.000000 0

33、.000000R21 0.000000 0.000000R22 1.000000 0.000000 R23 0.000000 0.000000 R31 1.000000 0.000000 R32 1.000000 0.000000 R33 0.000000 0.000000 R41 0.000000 0.000000 R42 0.000000 0.000000 R43 2.000000 0.000000,模式1:每根原料钢管切割成3根4米和1根6米钢管,共10根;模式2:每根原料钢管切割成2根4米、1根5米和1根6米钢管,共10根;模式3:每根原料钢管切割成2根8米钢管,共8根。原料钢管总根数

34、为28根。,演示cut02a.lg4;cut02b.lg4,露天矿里铲位已分成矿石和岩石:平均铁含量不低于25%的为矿石,否则为岩石。每个铲位的矿石、岩石数量,以及矿石的平均铁含量(称为品位)都是已知的。每个铲位至多安置一台电铲,电铲平均装车时间5分钟,卡车在等待时所耗费的能量也是相当可观的,原则上在安排时不应发生卡车等待的情况。,露天矿生产的车辆安排(CUMCM-2003B),矿石卸点需要的铁含量要求都为29.5%1%(品位限制),搭配量在一个班次(8小时)内满足品位限制即可。卸点在一个班次内不变。卡车载重量为154吨,平均时速28km,平均卸车时间为3分钟。,问题:出动几台电铲,分别在哪些

35、铲位上;出动几辆卡车,分别在哪些路线上各运输多少次?,平面示意图,问题数据,问题分析,与典型的运输问题明显有以下不同:这是运输矿石与岩石两种物资的问题;属于产量大于销量的不平衡运输问题;为了完成品位约束,矿石要搭配运输;产地、销地均有单位时间的流量限制;运输车辆只有一种,每次满载运输,154吨/车次;铲位数多于铲车数意味着要最优的选择不多于7个产地作为最后结果中的产地;最后求出各条路线上的派出车辆数及安排。,近似处理:先求出产位、卸点每条线路上的运输量(MIP模型)然后求出各条路线上的派出车辆数及安排,模型假设,卡车在一个班次中不应发生等待或熄火后再启动的情况;在铲位或卸点处由两条路线以上造成

36、的冲突问题面前,我们认为只要平均时间能完成任务,就认为不冲突。我们不排时地进行讨论;空载与重载的速度都是28km/h,耗油相差很大;卡车可提前退出系统,等等。,如理解为严格不等待,难以用数学规划模型来解 个别参数队找到了可行解(略),符号,xij:从i铲位到j号卸点的石料运量(车)单位:吨;cij:从i号铲位到j号卸点的距离 公里;Tij:从i号铲位到号j卸点路线上运行一个周期平均时间 分;Aij:从号铲位到号卸点最多能同时运行的卡车数 辆;Bij:从号铲位到号卸点路线上一辆车最多可运行的次数 次;pi:i号铲位的矿石铁含量 p=(30,28,29,32,31,33,32,31,33,31)%

37、qj:j号卸点任务需求,q=(1.2,1.3,1.3,1.9,1.3)*10000 吨cki:i号铲位的铁矿石储量 万吨cyi:i号铲位的岩石储量 万吨fi:描述第i号铲位是否使用的0-1变量,取1为使用;0为关闭。,(近似),优化模型,(1)道路能力(卡车数)约束(2)电铲能力约束(3)卸点能力约束(4)铲位储量约束(5)产量任务约束(6)铁含量约束(7)电铲数量约束(8)整数约束,.,xij为非负整数fi 为0-1整数,计算结果(LINGO软件),计算结果(派车),结论:铲位1、2、3、4、8、9、10处各放置一台电铲。一共使用了13辆卡车;总运量为85628.62吨公里;岩石产量为321

38、86吨;矿石产量为38192吨。,此外:6辆联合派车(方案略),最大化产量,结论:(略),目标函数变化此外:车辆数量(20辆)限制(其实上面的模型也应该有),铁路运价表,钢管运输问题(CUMCM-2000B),常用解法:二次规划先计算最小运费矩阵两种运输方式(铁路公路)混合最短路问题是普通最短路问题的变种,需要自己设计算法,钢管运输问题(CUMCM-2000B),fi表示钢厂i是否使用;xij是从钢厂i运到节点j的钢管量yj是从节点j向左铺设的钢管量;zj是向右铺设的钢管量,钢管运输问题(CUMCM-2000B),LINDO/LINGO得到的结果比matlab得到的好,其他优化赛题,飞行管理问题空洞探测问题钻井布局问题抢渡长江问题等等,Thats all.Any Questions?,谢谢大家!,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号