在多目标进化算法中,权重向量的生成非常重要。

Das I, Dennis J E. Normal-boundary intersection: A new method for generating the Pareto surface in nonlinear multicriteria optimization problems[J]. SIAM Journal on Optimization, 1998, 8(3): 631-657.

上述这篇文章提出了生成空间中均匀分布的权重向量的方法。该方法对mmm维空间进行采样,得到CH+m−1m−1" role="presentation" style="position: relative;">Cm−1H+m−1CH+m−1m−1C_{H+m-1}^{m-1}个在空间中均匀分布的权重向量,其中,H>0H>0H > 0为每个目标方向上的采样个数,其采样步长为δ=1/Hδ=1/H\delta = 1 / H。

当m=3,H=4m=3,H=4m = 3, H = 4时,生成的均匀分布的权重向量有C3−14+3−1=15C4+3−13−1=15C_{4+3-1}^{3-1} = 15个,如下所示:

以上问题可以抽象为:

给定mmm和H,输出均匀分布的权重向量集合。

集合A = {0,1/H,2/H,...,1}" role="presentation" style="position: relative;">{0,1/H,2/H,...,1}{0,1/H,2/H,...,1}\{0, 1/H, 2/H, ..., 1\},从集合A里面选择mmm个数,使得这m" role="presentation" style="position: relative;">mmm个数的和为1,即a1+a2+...am=1a1+a2+...am=1a_1 + a_2 + ... a_m = 1。

对这个问题进行分析:

可以转化为从集合B = {0, 1, 2, …, H}中选择mmm个数,使得这m" role="presentation" style="position: relative;">mmm个数的和为H,即b1+b2+...bm=Hb1+b2+...bm=Hb_1 + b_2 + ... b_m = H;

这个问题可以进一步转化为从集合C = {1, 2, 3, …, H + 1}中选择mmm个数,使得这m" role="presentation" style="position: relative;">mmm个数的和为(H + m),cn=bn+1cn=bn+1c_n = b_n +1,即c1+c2+...cm=H+mc1+c2+...cm=H+mc_1 + c_2 + ... c_m = H + m;

这时候就可以分析为什么权重向量个数是Cm−1H+m−1CH+m−1m−1C_{H+m-1}^{m-1}:

和为(H+m)(H+m)(H + m)可以看作有(H+m)(H+m)(H + m)个球排成一排,这(H+m)(H+m)(H + m)个球排成的一排一共有(H+m−1)(H+m−1)(H + m - 1)个空隙,选mmm个数可以用插板法做,选择其中的m−1" role="presentation" style="position: relative;">m−1m−1m - 1个空隙进行插板,分为mmm份。所以总的个数是CH+m−1m−1" role="presentation" style="position: relative;">Cm−1H+m−1CH+m−1m−1C_{H+m-1}^{m-1}。根据每一份的个数得到c1,c2,...cmc1,c2,...cmc_1, c_2, ... c_m。最后,an=(cn−1)/Han=(cn−1)/Ha_n = (c_n - 1) / H。

如何实现:

用一个排列表示,这个排列有m−1m−1m - 1个1,表示有插板,有(H+m−1−(m−1))(H+m−1−(m−1))(H + m - 1 - (m - 1)),即HHH个0,表示没有插板。有多少种不同的排列就有多少个不同的权重向量。根据1和0的位置,得到c1,c2,...cm" role="presentation" style="position: relative;">c1,c2,...cmc1,c2,...cmc_1, c_2, ... c_m,进而得到a1,a2,...ama1,a2,...ama_1, a_2, ... a_m。

实现代码如下:

#include <iostream>
#include <vector>
#include <algorithm>
#include <iomanip>
#include <fstream>
using namespace std;
int main()
{int m; // the number of objectivesdouble stepsize;double H; // H = 1 / stepsizecout << "Please input the number of objectives (m): \n";cin >> m;cout << "Please input the stepsize (1/H): \n";cin >> stepsize;H = 1 / stepsize;cout << "H = " << H << endl;vector<int> sequence;for (unsigned int i = 0; i < H; i++) // the number of zero is (H){sequence.push_back(0);}for (unsigned int i = 0; i < (m - 1); i++) // the number of 1 is (H + m - 1 - (m - 1)){sequence.push_back(1);}vector< vector<double> > ws;do {int s = -1;vector<double> weight;for (unsigned int i = 0; i < (H + m - 1); i++){if (sequence[i] == 1){double w = i - s;w = (w - 1) / H;s = i;weight.push_back(w);}}double w = H + m - 1 - s;w = (w - 1) / H;weight.push_back(w);ws.push_back(weight);} while (next_permutation(sequence.begin(), sequence.end()));ofstream outfile("weight.txt");for (unsigned int i = 0; i < ws.size(); i++){for (unsigned int j = 0; j < ws[i].size(); j++){outfile << ws[i][j] << " ";}outfile << "\n";}return 0;
}

均匀权重向量集合的生成相关推荐

  1. 波形生成:均匀和非均匀时间向量

    波形生成-- 脉冲.chirp.VCO.正弦函数.周期性/非周期性和调制信号 使用 chirp 生成线性.二次和对数 chirp.使用 square.rectpuls 和 sawtooth 创建方波. ...

  2. python生成词向量_词向量是如何生成的

    终于开了NLP的坑了(`・д・´),这次聊聊词向量是怎样生成的.现在有很多现成的模型,cbow,skip-gram,glove等,在python不同的库里面就可以调用(比如fasttext,genis ...

  3. 读论文1.Preference-inspired co-evolutionary algorithms using weight vectors 使用权重向量的偏好启发式协同进化算法(多目标优化算法)

    1请抄写抽到论文的题目,并用中文翻译论文题目和关键词.(10分) Preference-inspired co-evolutionary algorithms using weight vectors ...

  4. 05.序列模型 W2.自然语言处理与词嵌入(作业:词向量+Emoji表情生成)

    文章目录 作业1: 1. 余弦相似度 2. 单词类比 3. 词向量纠偏 3.1 消除对非性别词语的偏见 3.2 性别词的均衡算法 作业2:Emojify表情生成 1. Baseline model: ...

  5. java加载中文词向量_Chinese Word Vectors:目前最全的中文预训练词向量集合

    对于国内自然语言处理的研究者而言,中文词向量语料库是需求很大的资源.近日,来自北京师范大学和人民大学的研究者开源了「中文词向量语料库」,试图为大家解决这一问题,该库包含经过数十种用各领域语料(百度百科 ...

  6. 阿士比亚:搜索团队智能内容生成实践

    一.项目背景 1.1 什么是智能内容生成?         更准确的定义应该是智能文本内容生成,指的是训练机器模型,智能生成单品推荐理由.多商品清单文章一类的文本型内容,显然,与智能内容生成相对的概念 ...

  7. 淘宝总知道你要什么?万字讲述智能内容生成实践 | 技术头条

    参加「CTA 核心技术及应用峰会·杭州」,请扫码报名 ↑↑↑ 作者 | 清淞 来源 | 清淞的知乎专栏 专栏地址: https://zhuanlan.zhihu.com/p/33956907 本文主要 ...

  8. MOPSO算法总结,包括OMOPSO,SMPSO,dMOPSO,CMPSO,DDMOPSO,MMOPSO等

    MOPSO学习小结: 一些基本的定义 1. 一般化的多目标优化问题即多目标优化问题的数学模型:(分最小化和最大化问题)决策空间和目标空间,不等和等式约束条件: 2. Parto支配关系,非劣解:(决策 ...

  9. 无速率码(入门五):Raptor Codes

    2006<Raptor Codes>学习笔记   Raptor码是LT码的扩展,采用线性时间编码和解码. 对比LT码,Raptor码具有更低的解码器错误概率. Raptor码开源项目参考 ...

  10. 机器学习:计算机学习西洋跳棋

    一.西洋跳棋 西洋跳棋是一种两人棋盘游戏.玩家的棋子都是沿斜角走的.棋子可跳过敌方的棋子并吃掉它. 相关规则参考:Wiki 二.机器学习 通过让程序分析人们购物清单,来分析人们对商品的品牌.价格的偏好 ...

最新文章

  1. ACMNO.12有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出这个数列的前N项之和,保留两位小数。 输入 N 输出 数列前N项和 样例输入 10
  2. bp神经网络应用实例_人工智能BP神经网络学习神器——AISPACE
  3. 部署nginx反向代理及缓存
  4. 2015年第六届蓝桥杯 - 省赛 - C/C++大学C组 - A. 隔行变色
  5. AppDelegate的模块化+瘦身
  6. 【转】js老生常谈之this,constructor ,prototype
  7. 如何将.crt的ssl证书文件转换成.pem格式
  8. html如何查找文件,如何查找网站上HTML的CLASS文件并下?如何查找网站上HTM 爱问知识人...
  9. php将excel日期转成时间戳,使用PHP将Excel日期编号转换为Unix时间戳时不匹配
  10. 谷歌浏览器不能用flash插件的问题
  11. 基于Java的进销存管理系统 附:源码课件
  12. 暑期游戏阅历++plan01——游戏引擎发展史简记
  13. 司空见惯 - 大哲学家康德的作息时间表
  14. apex显示服务器连接超时,apex与服务器链接超时
  15. 使用Travis CI进行在线build
  16. NotePad++ 添加HEX-Editor插件
  17. 漏洞复现篇——利用XSS漏洞实现键盘记录
  18. verilog异步复位jk触发器_JK触发器(异步复位置位)
  19. 一花独放不是春 梆梆安全呼吁构建物联网安全共同体
  20. TCP协议-TCP中的定时器/计时器

热门文章

  1. 迅雷下载链接转为普通链接
  2. 海洋cms v6.53 v6.54版本漏洞复现
  3. 后摩尔时代下先进封装技术
  4. 最大规模开源中文语音数据集 — aidatatang_1505zh及其语音识别基准实验详解
  5. 图片转excel方法
  6. 通识与专业结合的大学之路
  7. 【JavaEE Spring】SpringBoot 日志文件详解
  8. PPT炫酷英文字体设置之Centaur
  9. 数值计算——追赶法求解三对角方程组(附代码)
  10. haar特征简单分析