发布网友 发布时间:2022-05-02 09:48
共1个回答
热心网友 时间:2022-06-19 01:03
用matlab的ga()遗传算法函数求非线性多目标的最小值(或最大值),其解决帮助如下:
1、首先建立自定义目标函数,y=FitFun(x)
2、其二建立自定义约束函数,[c,ceq]=NonCon(x)
3、最后,根据已知条件,用ga()函数求解。
为了说明问题,没有用你随意给的问题。下面,给你一个例子作参考。
FitFun.m
function f = FitFun(x,a1)
f = exp(x(1))*(4*x(1)^2 + 2*x(2)^2 + 4*x(1)*x(2) + 2*x(2) + a1);
end
NonCon.m
function [c,ceq] = NonCon(x,a2)
c = [1.5 + x(1)*x(2) - x(1) - x(2);-x(1)*x(2) - a2];
ceq = [];
end
ga_main.m
a1 = 1; a2 = 10;
options = gaoptimset('MutationFcn',@mutationadaptfeasible);
x = ga(@(x) FitFun(x,a1),2,[],[],[],[],[],[],@(x) NonCon(x,a2),options)
运行结果