![](https://csdnimg.cn/release/download_crawler_static/88451281/bg6.jpg)
2014 届合肥工业大学数学建模培训资料
内部使用,请勿外泄——王刚
6
x = ga(problem)
[x,fval] = ga(...)
[x,fval,exitflag] = ga(...)
其中,fitnessfcn 是自适应函数或者目标函数;nvars 是带求解变量的个数;
A 和 b 分别是线性不等约束条件
A x b
的矩阵系数 A 和向量 b;
Aeq 和 beq 分别是
线性等式约束条件
Aeq x beq
的矩阵系数 Aeq 和向量 beq;
LB 和 UB 分别为 nvars
个带求解变量的上下限向量。注意:这里面的向量都是列向量哦!其他参数可以
参考 matlab 的 help。
应用举例:
目标函数:
2 2
1 2 1 2 1 2
0.5 2 6y x x x x x x
约束条件:
1
1 2
2
1 1 2
1 2 2 , 0, 0
2 1 3
x
x x
x
求解程序:
%% 线性非等式约束
A = [1 1; -1 2; 2 1];
b = [2; 2; 3];
%% 变量下限
lb = zeros(2,1);
%% 调用工具箱
[x,fval,exitflag] = ga(@gatestfun,2,A,b,[],[],lb)
其中,gatestfun 如下:
function y = gatestfun(x)
p1=0.5;
p2=6.0;
y = p1*x(1)^2 + x(2)^2 -x(1)*x(2) -2*x(1) - p2*x(2);
结果如下:
x =
0.6670 1.3340
fval =
-8.2258
exitflag =
1
注意:
exitflag 是算法终止标志,1 代表正常终止,其它参考 help。这里的函数参数传
递是通过@gatestfun 匿名方式的,而上面我们编写的 newton 是通过'myfun'字符串方
式传递的。ga 工具箱求解的是函数的最小值。