Hello Mat

 找回密码
 立即注册
查看: 4681|回复: 5

跪求版主上传多目标DE算法Selectzbest函数与uniqueRep函数

[复制链接]

3

主题

28

帖子

1

金钱

新手上路

Rank: 1

积分
29
发表于 2017-8-13 15:06:54 | 显示全部楼层 |阅读模式
跪求版主上传多目标DE算法Selectzbest函数与uniqueRep函数
回复

使用道具 举报

3

主题

28

帖子

1

金钱

新手上路

Rank: 1

积分
29
 楼主| 发表于 2017-8-13 21:56:42 | 显示全部楼层
Halcom 发表于 2017-8-13 20:57
有啊。自己看参考链接啊

参考链接中这两个函数也没做实现
回复 支持 反对

使用道具 举报

1317

主题

1544

帖子

0

金钱

管理员

Rank: 9Rank: 9Rank: 9

积分
22619
发表于 2017-8-13 21:57:59 | 显示全部楼层
lancelotli 发表于 2017-8-13 21:56
参考链接中这两个函数也没做实现

这两个函数,可要可不要,不要也行!Selectzbest函数是从rep中随机选择一个,uniquerep是对结果进行非重复结果提取。
算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复 支持 反对

使用道具 举报

1317

主题

1544

帖子

0

金钱

管理员

Rank: 9Rank: 9Rank: 9

积分
22619
发表于 2017-9-24 14:01:52 | 显示全部楼层
  1. % 选择最优解
  2. function zbest=Selectzbest(rep,beta)
  3.     % 所有的非支配解节点索引数
  4.     GridIndex=[rep.GridIndex];
  5.     % 唯一出现的数值,从小到大排序
  6.     unique_GridIndex=unique(GridIndex);
  7.     % 初始化,唯一出现该数值的次数
  8.     N=zeros(size(unique_GridIndex));
  9.     for k=1:numel(unique_GridIndex)
  10.         N(k)=numel(find(GridIndex==unique_GridIndex(k)));
  11.     end
  12.     % 选择概率
  13.     P=exp(-beta*N);
  14.     P=P/sum(P);
  15.     % 轮赌法随机选择一个节点
  16.     rand_Index=RandWheelSelection(P);
  17.     % 获取对应节点的节点索引数
  18.     rand_GridIndex=unique_GridIndex(rand_Index);
  19.     % 在GridIndex中寻找rand_GridIndex所在的索引值
  20.     index=find(GridIndex==rand_GridIndex);
  21.     % 在【1到numel(index)】之间随机生成一个整数
  22.     integer=randi([1 numel(index)]);
  23.     % zbest
  24.     zbest=rep(index(integer));
  25. end
复制代码
算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复 支持 反对

使用道具 举报

1317

主题

1544

帖子

0

金钱

管理员

Rank: 9Rank: 9Rank: 9

积分
22619
发表于 2017-9-24 14:02:42 | 显示全部楼层
  1. function rep = uniqueRep(rep)
  2. % global nVar sizepop nObj
  3. fitnessFA = [];
  4. fitnessFA = [rep.fitness];  % 适应度值
  5. % fitnessFA = [reshape( fitnessFA, [nObj, sizepop] )]';  % 适应度值
  6. flag = [];
  7. for i=1:size(fitnessFA,2)-1
  8.     for j=i+1:size(fitnessFA,2)
  9.         if fitnessFA(1,j)==fitnessFA(1,i) && fitnessFA(2,i)==fitnessFA(2,j)
  10.             flag = [flag,j];
  11.         end
  12.     end
  13. end
  14. flag = unique(flag);
  15. rep(flag) = [];
复制代码
算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复 支持 反对

使用道具 举报

3

主题

28

帖子

1

金钱

新手上路

Rank: 1

积分
29
 楼主| 发表于 2017-10-6 15:45:43 | 显示全部楼层

感谢余少!!!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Python|Opencv|MATLAB|Halcom.cn ( 蜀ICP备16027072号 )

GMT+8, 2024-10-23 05:38 , Processed in 0.209760 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表