首页 > 其他分享 >nsga2-带约束条件的多目标优化

nsga2-带约束条件的多目标优化

时间:2023-04-26 09:47:20浏览次数:35  
标签:约束条件 popc %% pop npop nsga2 position 优化 empty

logic

code

clc
clear
close all
%% 定义自变量范围
nvar=5;
nobj=2;
npop=20;
maxit=50;
pc=0.8;
nc=round(pc*npop/2)*2;
mu=0.05;
% 自变量约束条件
varmin=[1 0 3 0.6 6];
varmax=[13 2.8 21 1.6 41];
% 自变量变化步长
step=[1 0.1 0.5 0.05 1];
len=(varmax-varmin).*step;
var=[varmin;step;varmax;round(len,0)];
%% 定义结果存放模板
empty.position=[];
empty.cost=[];
empty.rank=[];
empty.domination=[];
empty.dominated=0;
empty.crowdingdistance=[];
pop=repmat(empty,npop,1);
%% 初始化种群
for i=1:npop
    pop(i).position=create_x(var);
    pop(i).cost=costfunction(pop(i).position);
end
%% 非支配排序
[pop,F]=nondominatedsort(pop);
%% 拥挤度计算
pop=calcrowdingdistance(pop,F);
%% 主程序
for it=1:maxit
    popc=repmat(empty,nc/2,2);
    
    for j=1:nc/2 
        p1=tournamentsel(pop);
        p2=tournamentsel(pop);
        [pop(j,1).position,popc(j,2).position]=crossover(p1.position,p2.position);
    end
    
    popc=popc(:);
    
    for k=1:nc
        pop(k).position=mutate(popc(k).posotion,mu,var);
        popc(k).cost=costfunction(popc(k).position);
    end
    
    newpop=[pop;popc];
    
    [pop,F]=nondominatedsort(newpop);
    pop=calcrowdingdistance(pop,F);
    
    %排序
    pop=Sortpop(pop);
    
    %淘汰
    pop=pop(1:npop);
    [pop,F]=nondominatedsort(pop);
    pop=calcrowdingdistance(pop,F);
    pop=Sortpop(pop);
    
    %更新第一等级
    F1=pop(F(1));
    
    %显示迭代信息
    disp(['Iteration' num2str(it) ':Number of F1 Members=' num2str(numel(F1))])
    
    %绘图
    figure(1)
    plotcosts(F1);
    pause(0.01);
end

标签:约束条件,popc,%%,pop,npop,nsga2,position,优化,empty
From: https://www.cnblogs.com/hshsk/p/17354687.html

相关文章

  • 【优化指派】基于禁忌搜索算法求解指派优化问题(耗时最短)附Matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 【LSSVM时序预测】基于被囊群算法优化最小支持向量机TSA-LSSVM实现交通流数据预测附Ma
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • gcc 中-O -O1 -O2 -O3 -Os -Ofast -Og优化的原理
    一般来说,如果不指定优化标识的话,gcc就会产生可调试代码,每条指令之间将是独立的:可以在指令之间设置断点,使用gdb中的p命令查看变量的值,改变变量的值等。并且把获取最快的编译速度作为它的目标。    当优化标识被启用之后,gcc编译器将会试图改变程序的结构(当然会在保证变换之后......
  • Linux性能优化篇-了解CPU上下文切换
     我们了解到导致平均负载,有可能是以下几种方面:CPU密集型(造成cpu利用率升高,可以理解)I/O密集型(io和cpu互斥的,也造成cpu利用率增高-不可中断进程的)大量进程(???)根据平均负载的解释,单位时间内的处于可运行的进程和不可中断进程的进程数,Systemloadaveragesistheaveragenumberofproc......
  • java把word文件流转为pdf并下载优化篇
    上一篇方法虽然能用,但是样式会乱,目录也会丢失。故搜集了多篇博客终于找到了优化版本不会丢失目录,也不会丢失任何东西,样式也能源文件保留首先这个需要下载一个jar包,链接已放自行下载链接:https://pan.baidu.com/s/1viRWwiEOdgLUwb9VxZb8RQ?pwd=m4xu 提取码:m4xu然后放在系统根目......
  • 真实场景sql优化持续更新(老司机必备)
    概述下述场景,均来自实际产品线上经验,出于保密考量,所有需求场景都是仿造的,模拟遇到过的真实场景。场景一:统计数据(Orderby不具备唯一性导致的分页数据混乱)需求在实际业务场景中,我们经常遇到统计分析,比如现在有一张学生表student,现统计姓名为xxx的总共有多少学生。idname......
  • 百度APP iOS端包体积50M优化实践(二) 图片优化
    一、前言在上一篇文章,我们介绍了包体积优化的必要性、安装包组成部分和生成过程、国内外大厂APP包体积分析、百度APP包体积优化技术方案及各项收益,本文重点讲述图片优化,解压IPA包后发现,百度APP中asset和bundle里面图片共有94M,这是我们重点优化的对象。本系列文章目录如下:《百度APP......
  • openstack基础云性能优化
    14.基础云性能优化CSIG/云产品部/企业云平台产品中心Exportedon11/09/2020TableofContentsmariadb3haproxy4keystone5nova6控制节点服务6计算节点服务6cinder7neutron11注意事项12mariadb修改mariadb配置文件,在mariadb所有副本节点上修改配置文件/etc/my.conf[mysqld......
  • sql优化 一般有用 看1
     16.垂直分割“垂直分割”是一种把数据库中的表按列变成几张表的方法,这样可以降低表的复杂度和字段的数目,从而达到优化的目的。(以前,在银行做过项目,见过一张表有100多个字段,很恐怖)示例一:在Users表中有一个字段是家庭地址,这个字段是可选字段,相比起,而且你在数据库......
  • 斯坦福 UE4 C++ ActionRoguelike游戏实例教程 16.优化交互,实现看到物体时出现交互提
    斯坦福课程UE4C++ActionRoguelike游戏实例教程0.绪论概述本篇文章对应Lecture18–CreatingBuffs,WorldInteraction,73节。本文将会重构以前实现过的SurInteractionComponent,实现在玩家注释可交互物体时,可以出现可交互提示,效果如下:在文章的最后,我会放出所有相关的代......