怎样在一个matlab粒子群优化算法中添加一个等式约束条件?

7665℃ CHRISTY

怎样在一个matlab粒子群优化算法中添加一个等式约束条件?

PSO工具箱中,如何添加等式约束条件

1条回答

首先回答你第一个问题:怎么加入变量的约束条件?

打开遗传算法工具箱的窗体中会有下图所示的选项,即是约束条件的编辑

至于添加的方式,这里要重点的提一下,首先将问题抽象成规划问题的标准形式(如果你不懂什么是标准形式的话,建议你去翻阅运筹学那本书,上告诉你什么是标准形式),然后用矩阵语言写出来,最后将矩阵的系数填写到线性不等约束和线性相等约束中,同时定义所求变量x的上界和下界(记住有多少个变量就有多少列,如果你发现有些条件中没有出现某些变量,那么就应该用0补足,这个是matlab解决规划问题与lingo想比较麻烦的一个地方,)。

然后回答你第二个问题:可否在M文件中添加约束条件?

当然可以,界面的东西是为了方便不熟悉matlab编程的人而设计出来的,但是其底层的算法和接口肯定是有的。

碰到不懂的函数,请记得:help 函数名

help ga 之后会得到一下一些函数

ga

Find minimum of function using genetic algorithm //这个是定义

Syntax // 这个是语法也即是调用的规则

x = ga(fitnessfcn,nvars)

x = ga(fitnessfcn,nvars,A,b)

x = ga(fitnessfcn,nvars,A,b,Aeq,beq)

x = ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB)

x = ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB,nonlcon)

x = ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB,nonlcon,options)

x = ga(problem)

[x,fval] = ga(...)

[x,fval,exitflag] = ga(...)

直接给你将最长的那个吧

x = ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB,nonlcon,options)

X是返回所求的解

fitnessfcn是适应度函数

nvars是适应度函数中所含变量的维数

A是不等式约束中变量的系数矩阵,b是不等式约束中不含变量的值矩阵

Aeq是等式约束中变量的系数矩阵,beq是等式约束中不含变量的值矩阵

LB是下界,UB是上界

nonlcon 是非线性约束条件

至于options嘛 我也木有用过,其实你也可以不用管的。

懂了木有呢,亲?

求带约束条件的粒子群算法的MATLAB编程

恩 这个比较简单,可以很容易的做出来

Matlab中提供了两种方法,数值和解析

1.数值解法使用filter函数

对于递推公式

a(1)*y(n)+a(2)*y(n-1) + ... + a(na+1)*y(n-na) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb)

我们可以变成如下

filter(b,a,x,zi)其中a和b就是上面的系数,x是需要计算的n,zi是初值

由于使用filter函数需要信号基础 我们这里不详细说明

2.解析解法就是Z变换

%首先我们要改变递推公式如下,否则没法的到正确结果

%y(n+1)=2y(n),y(0)=-2

L=ztrans(sym('y(n+1)'));%等式左边的Z变换

R=ztrans(sym('2*y(n)'));%等式右边的Z变换

S=L-R

%将初值y(0)带入,我们可以根据y(-1)推出y(0)=-2

%令Y=ztrans(y(n),n,z),y0=y(0),求解出S中的y(n)的Z变换结果

y0=-2;

s=subs(S,{'ztrans(y(n),n,z)','y(0)'},{'Y',y0});

%求解出y(n)的Z变换结果

Y=solve(s,'Y')

%对Y进行反Z变化

iztrans(Y)

S =

z*ztrans(y(n),n,z)-y(0)*z-2*ztrans(y(n),n,z)

Y =

-2*z/(z-2)

ans =

-2*2^n

matlab求最优解的的优化算法怎么加约束条件?

试下附件中的fminsearchbnd函数,请把fminsearchbnd.m文件放在你的工作路径中。

fminsearchbnd(@(x)f(x(1),x(2),x(3)), [0;0;0], [0;0;0], [30;30;2])

ans =

   15.0848

   20.5081

    0.5452此文件下载自File exchange,作者:John D'Errico

粒子群算法求解一个带约束的优化问题

可以使用matlab的优化工具箱进行求解,参考fmincon等优化求解函数。