① 如何用matlab做高阶系统的辨识,可以详细讲解下么
系统辨识往往也包括参数的辨识,即知道模型,辨识其中的参数,这种意义的辨识比较容易,线性的有很多,常用有最小二乘,非线性也可用用智能优化算法,如遗传算法、粒子群。
系统辨识若是一般的意义,即包括模型辨识和参数辨识,首先需要确定模型,之后再参数辨识,模型可根据经验确定,如AR模型,或直接确定阶次近似模型。
matlab,不能确定模型,需要自己选,选定之后就是参数辨识,matlab中有参数辨识的方法。
② 用matlab的optimization工具箱遗传算法,添加约束条件的问题。
你看到下边那个nonlinear constraint function了吗?
把你的约束写在一个m文件的function中,函数名比如取为:xconstr
则将@xconstr写到nonlinear constraint function后面的框里,应该就可以了。线性约束的话直接写在上方的栏目中。
你的优化问题没看到,用遗传算法求解一般没有问题。这种智能优化算法的最大优点在于求解多局部解优化问题时能得到全局性较好的最有解。如果你不考解的全局最优性的话,可以直接使用fmincon函数来求解。关于fmincon函数,可以在matlab命令行中输入 doc fmincon命令以查看帮助。
③ 用matlab的哪种算法可以较好地解决下面这种优化问题
Matlab最优算法只能解0,1变量的整数规划,其他整数变量据我所知还解不了。智能算法倒是可以试试,或者选择其他软件。不知道你是想最优求解,还是近优求解?
④ matlab优化工具箱里面的fmincon用的是哪个优化算法啊
帮助文件里,有介绍的:对于大规模优化问题,采用一种子空间信赖域算法(基于内点反射牛顿算法);对于中等规模优化问题,采用的是SQP序列二次规划算法。
⑤ matlab最优化算法有哪些
matlab最优化程序包括
无约束一维极值问题 进退法 黄金分割法 斐波那契法 牛顿法基本牛顿法 全局牛顿法 割线法 抛物线法 三次插值法 可接受搜索法 Goidstein法 Wolfe.Powell法
单纯形搜索法 Powell法 最速下降法 共轭梯度法 牛顿法 修正牛顿法 拟牛顿法 信赖域法 显式最速下降法, Rosen梯度投影法 罚函数法 外点罚函数法
内点罚函数法 混合罚函数法 乘子法 G-N法 修正G-N法 L-M法 线性规划 单纯形法 修正单纯形法 大M法 变量有界单纯形法 整数规划 割平面法 分支定界法 0-1规划 二次规划
拉格朗曰法 起作用集算法 路径跟踪法 粒子群优化算法 基本粒子群算法 带压缩因子的粒子群算法 权重改进的粒子群算法 线性递减权重法 自适应权重法 随机权重法
变学习因子的粒子群算法 同步变化的学习因子 异步变化的学习因子 二阶粒子群算法 二阶振荡粒子群算法
⑥ matlab一个迭代优化算法
第五步的限制条件,可以这样来写:
if abs(F(i)-F(i-1))<=0.01
返回到第二步,调用第二步的函数
end
⑦ matlab程序,哪位大神可以优化算法节省时间,这个程序耗时太长了T^T
修改算法。。。这一大串的代码有多少人会仔细看啊,说明/注释都没有。
找出问题自己想办法改吧
大致看了下,主要时间大概还是在多重循环那了。想缩减时间的话,简化一下那部分
也可以调用matlab自带的计时工具,看那个函数占用时间做多。
⑧ matlab智能算法30个案例分析中第十二章免疫优化算法在物流配送中心选址的应用
罚函数是把约束条件变成目标函数一部分的一种方法,系数4是随意取的,当然这个要根据实际情况,一般和你的目标函数在一个数量级上即可。如果系数取大了,那么不同的自变量使得目标函数的值不同就表现不出来,如果取小了,反应不出约束条件的第一重要性。
⑨ 智能优化算法学习的问题
在matlab中?可以用matlab自带的遗传算法工具箱,也可以自己编写遗传算法或蚁群算法代码去解决问题。属于用智能算法解决工程优化问题吧。
望采纳。
⑩ 【求助】智能优化算法用哪些仿真工具
liubinxp(站内联系TA)通过利用MATLAB提供的丰富的内置函数库,可以很快的编写出比较复杂的算法
并且可以利用其强大的绘图和人机交互功能进行数据分析和显示
但是由于很多功能是内置的,无法修改,所以灵活性不足
例如多数人不喜欢matlab内置的遗传算法工具箱而宁愿自己编写算法
而采用C#、C++等编程语言设计算法,虽然需要更长的开发时间,但更加灵活自主
特别当你还想评估算法的运算量和运行效率时更加方便准确
特别是图形的处理ghtvc(站内联系TA)应该学习一下编程了absoluty(站内联系TA)matlab是一种解释性语言,就运行程序速度来说没有C#等编译语言快,但是matlab就其用途来说,适合于科研学习,仿真试验,由于其带有大量的函数,可以对矩阵,图像等进行直接操作,而C#等语言没有这个功能,必须自己编程去作,也就是说如果你仅仅是做试验,建议用matlab,方便,容易学习,基本一周内就可以学会,而且可以编程,而C#其他语言,就没怎么简单拉,如果要用他们去编程试验,估计一个月能入门就不错啦,别说做试验,还有一种语言F#也不错,做仿真试验也挺好,但还是建议你用matlab