11stOpt使用手册七维高科2009年5月1日2第一篇1stOpt基础及简介1.1概要1stOpt是七维高科有限公司(7D-SoftHighTechnologyInc.)独立开发,拥有完全自主知识产权的一套数学优化分析综合工具软件包。在非线性回归,曲线拟合,非线性复杂模型参数估算求解,线性/非线性规划等领域傲视群雄,首屈一指,居世界领先地位。除去简单易用的界面,其计算核心是基于七维高科有限公司科研人员十数年的革命性研究成果【通用全局优化算法】(UniversalGlobalOptimization-UGO),该算法之最大特点是克服了当今世界上在优化计算领域中使用迭代法必须给出合适初始值的难题,即用户勿需给出参数初始值,而由1stOpt随机给出,通过其独特的全局优化算法,最终找出最优解。以非线性回归为例,目前世界上在该领域最有名的软件工具包诸如Matlab,OriginPro,SAS,SPSS,DataFit,GraphPad等,均需用户提供适当的参数初始值以便计算能够收敛并找到最优解。如果设定的参数初始值不当则计算难以收敛,其结果是无法求得正确结果。而在实际应用当中,对大多数用户来说,给出(猜出)恰当的初始值是件相当困难的事,特别是在参数量较多的情况下,更无异于是场噩梦。而1stOpt凭借其超强的寻优,容错能力,在大多数情况下(大于90%),从任意随机初始值开始,都能求得正确结果。1.2国内外类似软件概况数据综合分析领域,国外软件无疑占绝对统治地位。在非线性曲线拟合,参数优化方面,名声大,应用广的有诸如OriginPro,Matlab,SAS,SPSS,DataFit,GraphPad,TableCurve2D,TableCurve3D等。无论这些软件界面,历史,名声如何,最常用算法有麦夸特法(Levenberg-Marquardt)或简面体爬山法(SimplexMethod)等,均可归属于局部最优法。因而如何有效地确定参数初始值始终是难以克服的瓶颈,由于此,一些实际问题可能永远无法获得正解。国内方面,因无自己独特有效的技术理论与方法,虽有个别分析软件面市,与上述国外类似产品相比,功能相差甚远,即使在国内也无竞争优势,在国际上就更无声影了。而1stOpt凭借自己革命性的算法理论,在非线性拟合,参数估算等优化领域强于目前世界上任何已知软件包,其英文版已远销美国,德国,法国,英国,芬兰,瑞典,荷兰,南非,澳大利亚,新西兰,土耳其等国。1.31stOpt应用的优化算法最优化算法包括:1)通用全局优化算法(UniversalGlobalOptimization-UGO)2)下山単体法(SimplexMethod-SM)+通用全局优化算法(UniversalGlobalOptimization-UGO)33)差分进化法(DifferentialEvolution-DE)4)最大继承法(MaxInheritOptimization-MIO)5)遗传算法(GeneticAlgorithms-GA)6)摸拟退火(SimulatedAnnealing-SA)7)离子群法(ParticleSwarmOptimization-PSO)8)自组织群移法(Self-OrganizingMigratingAlgorithms-SOMA)9)禁忌搜索法(TabuSearch-TS)10)单纯线性规划法(SimplexLinearProgram)1.41stOpt应用范围1)模型自动优化率定2)参数估算3)任意模型公式线性,非线性拟合,回归4)非线性连立方程组求解5)常微分方程及方程组,初值及边值问题6)任意维函数,隐函数极值求解7)隐函数根求解,作图,求极值8)线性,非线性及整数规划9)组合优化问题10)高级计算器1.51stOpt特长1)功能强劲,是目前唯一能以任何初始值而求得美国国家标准与技术研究院(NIST:NationalInstituteofStandardsandTechnology)非线性回归测试题集最优解的软件包。2)可广泛用于水文水资源及其它工程模型优化计算。内镶VB及Pascal语言,可帮助描述处理复杂模型。3)可连接由任何语言(C++,Fortran,Basic,Pascal…)编译而成的外部目标函数动态连接库或命令行可执行文件。4)非线性曲线拟合可处理任意类型模型公式,任意多数目的待求参数及变量,批量数据拟合、权重拟合、带约束拟合、缺失变量拟合。5)模型自动率定时可同时处理多个数据文件6)可非常容易处理一些特殊的参数,如降雨径流模型中的流域初期土壤含水量7)可同时处理多个输出量8)实时显示计算结果9)可直接读存Excel,CSV等格式文件10)界面简单友好,使用方便11)自带有上百个实例,覆盖范围包括几乎所有优化方面。通过不同类型实例,用户可轻松掌握1stOpt的用法。41.61stOpt关键词主要关键词关键词名意义及示例Parameter定义参数例:定义a,b,c,d四个参数:Parametera,b,c,d;例:定义a1,a2,a3,a4,a5,a6,a7,a8,a9,a10十个参数:Parametera1,a2,a3,a4,a5,a6,a7,a8,a9,a10;也可简写为:Parametera(1:10);或:Parametera(10);例:定义参数a,其取值范围在[-1,1],初始值为0.5Parametera=0.5[-1,1];例:定义参数a为整数,其取值范围在[-100,100]Parametera[-100,100,0];ParameterDomain批量定义参数范围例:定义参数a范围为[-1,1],其它均为[0,10];Parametera=0.5[-1,1],b,c,d,e,f,g;ParameterDomain=[0,10];BinParameter定义0-1参数例:定义a为非0即1的参数BinParametera;IntParameter定义正整数参数例:定义参数a为大于0的正整数IntParametera;StartRange定义参数初始值取值范围例:定义参数a初始值取值范围为[-100,100]StartRangea=[-100,100];Variable定义变量例:定义x,y,z三个变量:Variablex,y,z;QuickReg设定快速拟合功能Function定义函数例:两变量曲线拟合:Functiony=a+b*exp(c–x);例:两变量函数优化:Function(x+((2-x)*(2+y))^2)*sin(x*y);Constant定义常量例:两变量曲线拟合:Functiony=a+b*exp(c–x);例:两变量函数优化:Function(x+((2-x)*(2+y))^2)*sin(x*y);ConstStr定义常字符串量例:两变量曲线拟合:Functiony=a*(c-x)^2+b*exp((c–x)^4);可写为:ConstStrB=(c-x)^2Functiony=a*B+b*exp(B^2);VarConstant定义变常量5VarParameter定义变参数Data定义数据开始RowDataDataFile定义数据文件NewDivision定义新的代码块SubDivision定义子代码块StartProgram编程模式开始EndProgram编程模式结束Maximum求最大值Minimum求最小值PlotFunction画函数图Algorithms定义优化方法Exclusive定义问题为排它问题,如TSP问题MutliRunHotRunSharedModel定义共享参数问题DataSetEndDataSet定义常数结束定义常数RowDataSetEndRowDataSetMinFunction最小值求优MaxFunction最大值求优PlotParaFunction画参数方程函数图Title定义代码块名RegType设定最小一乘法拟合MDataSetEndMDataSet设定网络节点数据格式,等同于矩阵格式ConstrainedResult编程模式中约束函数值ObjectiveResult编程模式中目标函数值BatchFileModelFullLoopModel全循环计算模式MinMax最大最小优化问题求解SharedModel多函数拟合时共享模式WeightedReg权重拟合ExeParameterFile调用外部命令行执行文件时,定义参数输出文件ExeObjectiveFile调用外部命令行执行文件时,定义目标函数值输出文件MaxIteration1stOpt还有三个特殊定义符:求和定义Sum如()1sin(1)niiixx=⋅+∑,在1stOpt中表达为:Sum(i=1:n)(x[i]*sin(x[i]+1))6如果下标号均为i,上述也可简写为:Sum(i=1:n,x)(x*sin(x+1))如果下标号i起始值为1,还可简写为:Sum(i=n,x)(x*sin(x+1))求积定义Prod如()1sin(1)niiixx=⋅+∏,在1stOpt中表达为:Prod(i=1:n)(x[i]*sin(x[i]+1))如果下标号均为i,上述也可简写为:Prod(i=1:n,x)(x*sin(x+1))如果下标号i起始值为1,还可简写为:Prod(i=n,x)(x*sin(x+1))循环符For如方程组:⎪⎪⎪⎩⎪⎪⎪⎨⎧=+−=+−=+−=+−=+−05)sin(04)sin(03)sin(02)sin(01)sin(555444333222111xxxxxxxxxxxxxxx1stOpt代码:Functionx1*sin(x1)-1+x1=0;x2*sin(x2)-2+x2=0;x3*sin(x3)-3+x3=0;x4*sin(x4)-4+x4=0;x5*sin(x5)-5+x5=0;用For语句,简写如下:FunctionFor(i=1:5)(x[i]*sin(x[i])-i+x[i]=0);或FunctionFor(i=1:5,x)(x*sin(x)-i+x=0);或FunctionFor(i=5,x)(x*sin(x)-i+x=0);1.71stOpt支持的数学函数序号函数说明例1Abs(X:Real):Real;绝对值函数Abs(-0.25)=0.2572Arccos(X:Real):Real;反余弦函数Arccos(-0.25)=1.8234765823Arccosh(X:Real):Real;反余弦双曲函数Arccosh(-0.25)=04Arcsin(X:Real):Real;反正弦函数Arcsin(-0.25)=-0.25268025515Arcsinh(X:Real):Real;反正弦双曲函数Arcsinh(-0.25)=-0.2474664616Arctan(X:Real):Real;反正切函数Arctan(-0.25)=-0.24497866317Arctanh(X:Real):Real;反正切双曲函数Arctanh(-0.25)=-0.2554128118ATan(X:Real):Real;ATan(-0.25)=-0.24497866319ATand(X:Real):Real;ATand(-0.25)=-0.004363295410BessI(N:Integer,X:Real):Real;贝塞尔I型函数BessI(2,0.25)=0.007853269511BessI0(X:Real):Real;贝塞尔I0型函数BessI0(0.25)=1.01568613312BessI1(X:Real):Real;贝塞尔I1型函数BessI1(0.25)=0.125979108613BessJ(N:Integer,X:Real):Real;贝塞尔J型函数BessJ(2,0.25)=0.007771889214BessJ0(X:Real):Real;贝塞尔J0型函数BessJ0(0.25)=0.984435931415BessJ1(X:Re