matlab,matlab 遗传算法函数,多目标函数求极值

如何用MATLAB求函数的极值点和最大值_硫酸钡_新浪博客
如何用MATLAB求函数的极值点和最大值
两种方法:
1、求导的方法:syms x y;
y=x^3+x^2+1
ans =3*x^2 + 2*x
solve(ans)
极值有两点。
同时也是最值;​
2、直接用最小值函数:​
求最大值,既求-y的最小值:
f=@(x)(-x^3-x^2-1)
f =@(x)(-x^3-x^2-1)
x=fminunc(f,-3,3)%&&
在-3;-3范围内找Warning: Gradient must be provided for
trust-& using line-search method
instead.&& In fminunc at
354Optimization terminated: relative infinity-norm of gradient less
than options.TolFun.
-1.1481在规定范围内的最大值是1.1481由于函数的局限性,
求出的极值可能是局部最小(大)值。求全局最值要用遗传算法。
例子:syms x
&f=(200+5*x)*(0.65-x*0.01)-x*0.45;&
&s=diff(f);%一阶导数
s2=diff(f,2);%二阶导数
h=double(solve(s));%一阶导数为零的点可能就是极值点,注意是可能,详情请见高数课本
i=1:length(h)&
subs(s2,x,h(i))&0&
&disp(['函数在' num2str(h(i))
'处取得极大值,极大值为' num2str(subs(f,x,h(i)))])
subs(s2,x,h(i))&0&
&disp(['函数在' num2str(h(i))
'处取得极小值,极小值为'
num2str(subs(f,x,h(i)))])&
&disp(['函数在' num2str(h(i))
'处二阶导数也为0,故在该点处函数可能有极大值、极小值或无极值'])%%%详情见高数课本&
博客等级:
博客积分:0
博客访问:12,448
关注人气:0
荣誉徽章:16:13 提问
新手求助一个超详细讲解的遗传算法的MATLAB程序
主要是要对函数优化,函数是三个范数只和求最小值。用遗传算法来优化。
回复数排序
sj0=load('sj.txt');
%加载100个目标的数据
x=sj0(:,1:2:8); x=x(:);
y=sj0(:,2:2:8); y=y(:);
sj=[x y]; d1=[70,40];
sj=[d1;d1]; sj=sj*pi/180;
%单位化成弧度
d=zeros(102); %距离矩阵d的初始值
for i=1:101
for j=i+1:102
d(i,j)=6370*acos(cos(sj(i,1)-sj(j,1))*cos(sj(i,2))*cos(sj(j,2))+sin(sj(i,2))*sin(sj(j,2)));
d=d+d'; w=50; g=100; %w为种群的个数,g为进化的代数
rand('state',sum(clock)); %初始化随机数发生器
%通过改良圈算法选取初始种群
c=randperm(100); %产生1,...,100的一个全排列
c1=[1,c+1,102]; %生成初始解
for t=1:102 %该层循环是修改圈
flag=0; %修改圈退出标志
for m=1:100
for n=m+2:101
if d(c1(m),c1(n))+d(c1(m+1),c1(n+1))&d(c1(m),c1(m+1))+d(c1(n),c1(n+1))
c1(m+1:n)=c1(n:-1:m+1);
flag=1; %修改圈
if flag==0
J(k,c1)=1:102; break %记录下较好的解并退出当前层循环
J(:,1)=0; J=J/102; %把整数序列转换成[0,1]区间上的实数,即转换成染色体编码
%该层循环进行遗传算法的操作
A=J; %交配产生子代B的初始染色体
c=randperm(w); %产生下面交叉操作的染色体对
for i=1:2:w
F=2+floor(100*rand(1)); %产生交叉操作的地址
temp=A(c(i),[F:102]); %中间变量的保存值
A(c(i),[F:102])=A(c(i+1),[F:102]); %交叉操作
A(c(i+1),F:102)=
%为了防止下面产生空地址,这里先初始化
while ~length(by)
by=find(rand(1,w)&0.1); %产生变异操作的地址
B=A(by,:); %产生变异操作的初始染色体
for j=1:length(by)
bw=sort(2+floor(100*rand(1,3)));
%产生变异操作的3个地址
B(j,:)=B(j,[1:bw(1)-1,bw(2)+1:bw(3),bw(1):bw(2),bw(3)+1:102]); %交换位置
G=[J;A;B]; %父代和子代种群合在一起
[SG,ind1]=sort(G,2); %把染色体翻译成1,...,102的序列ind1
num=size(G,1); long=zeros(1,num); %路径长度的初始值
for j=1:num
for i=1:101
long(j)=long(j)+d(ind1(j,i),ind1(j,i+1)); %计算每条路径长度
[slong,ind2]=sort(long); %对路径长度按照从小到大排序
J=G(ind2(1:w),:); %精选前w个较短的路径对应的染色体
path=ind1(ind2(1),:), flong=slong(1)
%解的路径及路径长度
xx=sj(path,1);yy=sj(path,2);
plot(xx,yy,'-o') %画出路径
Columns 1 through 19
Columns 20 through 38
Columns 39 through 57
Columns 58 through 76
Columns 77 through 95
Columns 96 through 102
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐跪求一份多目标优化遗传算法 matlab源代码,不甚感激。邮 箱_百度知道
跪求一份多目标优化遗传算法 matlab源代码,不甚感激。邮 箱
我有更好的答案
我给你一个标准遗传算法程序供你参考:该程序是遗传算法优化BP神经网络函数极值寻优:%% 该代码为基于神经网络遗传算法的系统极值寻优%% 清空环境变量clcclear%% 初始化遗传算法参数%初始化参数maxgen=100;
%进化代数,即迭代次数sizepop=20;
%种群规模pcross=[0.4];
%交叉概率选择,0和1之间pmutation=[0.2];
%变异概率选择,0和1之间lenchrom=[1 1];
%每个变量的字串长度,如果是浮点变量,则长度都为1bound=[-5 5;-5 5];
%数据范围individuals=struct('fitness',zeros(1,sizepop), 'chrom',[]);
%将种群信息定义为一个结构体avgfitness=[];
%每一代种群的平均适应度bestfitness=[];
%每一代种群的最佳适应度bestchrom=[];
%适应度最好的染色体%% 初始化种群计算适应度值% 初始化种群for i=1:sizepop
%随机产生一个种群
individuals.chrom(i,:)=Code(lenchrom,bound);
x=individuals.chrom(i,:);
%计算适应度
individuals.fitness(i)=fun(x);
%染色体的适应度end%找最好的染色体[bestfitness bestindex]=min(individuals.fitness);bestchrom=individuals.chrom(bestindex,:);
%最好的染色体avgfitness=sum(individuals.fitness)/ %染色体的平均适应度% 记录每一代进化中最好的适应度和平均适应度trace=[avgfitness bestfitness]; %% 迭代寻优% 进化开始for i=1:maxgen
individuals=Select(individuals,sizepop);
avgfitness=sum(individuals.fitness)/
individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound);
individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,[i maxgen],bound);
% 计算适应度
for j=1:sizepop
x=individuals.chrom(j,:); %解码
individuals.fitness(j)=fun(x);
%找到最小和最大适应度的染色体及它们在种群中的位置
[newbestfitness,newbestindex]=min(individuals.fitness);
[worestfitness,worestindex]=max(individuals.fitness);
% 代替上一次进化中最好的染色体
if bestfitness&newbestfitness
bestfitness=
bestchrom=individuals.chrom(newbestindex,:);
individuals.chrom(worestindex,:)=
individuals.fitness(worestindex)=
avgfitness=sum(individuals.fitness)/
trace=[avgfitness bestfitness]; %记录每一代进化中最好的适应度和平均适应度end%进化结束%% 结果分析[r c]=size(trace);plot([1:r]',trace(:,2),'r-');title('适应度曲线','fontsize',12);xlabel('进化代数','fontsize',12);ylabel('适应度','fontsize',12);axis([0,100,0,1])disp('适应度
变量');x=% 窗口显示disp([bestfitness x]);
采纳率:23%
为您推荐:
其他类似问题
遗传算法的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。苹果/安卓/wp
积分 36, 距离下一级还需 9 积分
道具: 涂鸦板, 彩虹炫, 雷达卡, 热点灯下一级可获得
道具: 显身卡, 匿名卡, 金钱卡
购买后可立即获得
权限: 隐身
道具: 金钱卡, 变色卡, 彩虹炫, 雷达卡, 热点灯, 涂鸦板
苦逼签到天数: 1 天连续签到: 1 天[LV.1]初来乍到
(59.5 KB, 售价: 80 个论坛币)
20:41:36 上传
售价: 80 个论坛币
求解什么问题,我这里有本书上面就有,还有对应的matlab程序
求解什么问题,我这里有本书上面就有,还有对应的matlab程序
目标函数是线性的还是非线性的
求解的带复杂约束条件的多目标规划问题,请问可以求解吗?
dgj2014 发表于
目标函数是线性的还是非线性的求解的带复杂约束条件的多目标规划问题,请问可以求解吗?
duanmuxiaotian 发表于
求解的带复杂约束条件的多目标规划问题,请问可以求解吗?我的附件中有相应的问题描述及式子
我一不小心点了你的文件我得80个币没了,好残忍啊
dgj2014 发表于
我一不小心点了你的文件我得80个币没了,好残忍啊什么意思??
楼主您既然求助于别人那您就不应该在问题介绍的附件中出价80论坛币出售,我相信没人愿意花费80论坛币去帮您。从您的问题描述中,我看一般的算法已经不能求解出满意解了,可以考虑用遗传算法。我正在学,暂时还帮不了您,等我学有所成时在看看您是否需要帮忙吧。
争取做到每日一善
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
如有投资本站或合作意向,请联系(010-);
邮箱:service@pinggu.org
投诉或不良信息处理:(010-)
论坛法律顾问:王进律师豆丁微信公众号
君,已阅读到文档的结尾了呢~~
遗传算法 matlab matlab遗传算法实例 matlab遗传算法程序 matlab遗传算法教程 matlab中的遗传算法 matlab遗传算法编程 遗传算法matlab代码 matlab遗传算法设计 matlab 极大值 求极大值matlab
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
遗传算法求函数极大值(matlab实现)
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口}

我要回帖

更多关于 matlab多元函数求极值 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信