{"id":17262891,"url":"https://github.com/425776024/moead","last_synced_at":"2025-07-27T23:36:29.026Z","repository":{"id":37657758,"uuid":"159632156","full_name":"425776024/MOEAD","owner":"425776024","description":"MOEAD.多目标差分进化算法的学习，Python实现\u0026动态展示过程","archived":false,"fork":false,"pushed_at":"2022-06-22T02:07:23.000Z","size":531,"stargazers_count":159,"open_issues_count":4,"forks_count":42,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-12-11T00:27:11.649Z","etag":null,"topics":["moead","moead-python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/425776024.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-11-29T08:24:48.000Z","updated_at":"2024-11-29T13:20:41.000Z","dependencies_parsed_at":"2022-09-07T22:00:43.082Z","dependency_job_id":null,"html_url":"https://github.com/425776024/MOEAD","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/425776024%2FMOEAD","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/425776024%2FMOEAD/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/425776024%2FMOEAD/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/425776024%2FMOEAD/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/425776024","download_url":"https://codeload.github.com/425776024/MOEAD/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230520390,"owners_count":18238948,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["moead","moead-python"],"created_at":"2024-10-15T07:54:58.882Z","updated_at":"2024-12-20T01:14:57.545Z","avatar_url":"https://github.com/425776024.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## MOEAD-python动态+bilibili视频讲解😄\n\n### 有不能理解的可以加QQ一起沟通\n\n\n本代码是对[MOEA/D: A Multiobjective Evolutionary Algorithm Based on Decomposition](https://ieeexplore.ieee.org/document/4358754)论文中算法编程实现。（也许是：全网第一个python\u0026可视化版本）\n\n\n\nMOEAD算法论文大致介绍详细，这个中文的帖子也不错：[https://blog.csdn.net/sinat_33231573/article/details/80271801](https://blog.csdn.net/sinat_33231573/article/details/80271801)\n\n**不过自己实现中发现，坑点至少有2个：**\n1.**如何生成均匀权向量**，这个在**Mean_Vector_Utils.py**文件中已经实现，可以直接用，大致是用一个拔插法的思想，我的另一个帖子也说了下怎么生成的一个效果：[MOEAD算法中均匀权向量的实现---Python](https://blog.csdn.net/jiang425776024/article/details/84528415)。\n2.**如何产生下一代解y**，这个处理的不好几乎做不到论文中那样完美的Pareto前沿面效果，论文中也只是说了一句话：产生新解o(╥﹏╥)o，我这里用了当目标优化的遗传GA加极值优化EO产生下一代，效果尚可，2个30维函数的目标联合优化，只需要100代，1-2秒钟左右即可找到较完美的解，3目标的DTLZ1的pareto前沿形状找的很完美，但是解还是差太多，可是是哪里出了问题。持续改进中。\n\n\n\n## bilibili本代码视频\n\n（确保）已经基本了解MOEAD和看了本代码了\n\n[MOEAD bilibili](https://www.bilibili.com/video/BV1Rf4y117Zk/)\n\n\n\n**代码结构：**\nproblem：求解问题函数目录\nvector_csv_file:求解问题的均匀权向量生成目录\n![](img/category.png)\nZDT1:\n![](img/zdt1.png)\n\nZDT2:\n![](img/zdt2.png)\n\nZDT4:\n![](img/zdt4.png)\n\nDTLZ1:\n![](img/dtlz1.png)\n\n**MOEA/D算法:**\n\n**（我这只简单介绍，详情网上、paper看，然后再看这代+b站视频，这样会好点。希望能帮到你！）**\n\n```\n输入: \n•多目标优化 \n•停止标准;\n•N: MOEA/D考虑的子问题的数量\n•N个权重向量的均匀分布: λ1,...,λN；\n•T:每个权重向量的附近的权重向量的数量\n输出:EP\n\n步骤1) 初始化:\n第1.1 步)创建一个外部种群（EP）用于存储过程优秀个体，初始为空\n第1.2 步)计算任何两个权重向量之间的欧氏距离，然后计算出每个权重向量的最近权重向量T。对于每个i=1,…,N,设置\nB(i)={i1,...,iT},其中λi1,,..,λiT是λi的最近T权重向量\n第1.3 步)生成初始数量的随机的x1,...,xN或特定问题的方法。设置FVi=F(xi) \n第1.4 步)由特定于问题的方法初始化z=(z1,...,zm)T。\n步骤2) 更新：\n对于i =1,…,N\n步骤2.1) 复制: 从B(i)随机选择两个索引k,l，然后通过使用差分进化从xk和xl生成一个新的解决方案y。\n步骤2.2) 改进: 应用特定于问题的修复/改进启发式由y 产生y’\n步骤2.3) 更新Z：对于每一个j=1,...,m,判断y是否可能替换原有极值，如果zj\u003cfj(y’)，则设置zj=fj(y’)\n步骤2.4)更新领域解B(i)，对于领域中每个权值向量λj，如果得到优化，则更新；\n步骤2.5) 更新EP：从EP中删除所有被F(y’)支配的向量。如果外部种群 (EP)中没有支配F(y’)的向量，则将F(y’)添加至EP\n步骤3) 停止条件: 如果满足停止条件,则停止和输出EP。否则，重复步骤 2\n在初始化中, B(i)包含λi的T最近向量。我们使用欧几里德距离来测量任何两个权重向量之间的接近程度。因此，λi的最近向量是它自己，其中i∈B(i)。如果j∈B(i),则第j个子问题可以看作是子问题i的近邻。\n\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F425776024%2Fmoead","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F425776024%2Fmoead","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F425776024%2Fmoead/lists"}