智能优化模型与算法实现

2023-11-16

优化算法

遗传算法

在这里插入图片描述
选择操作:从旧个体中以一定概率选择优良个体组成新的种群,以繁殖得到下一代。
轮盘赌法:即基于适应度比例的选择策略,个体i被选中的概率为
在这里插入图片描述
交叉操作:从种群中随机选择两个个体,通过两个染色体的交换组合,把父串的优秀特征遗传给子串,从而产生新的优秀个体。
采用实数交叉,第k个染色体ak和第l个染色体al在j位的交叉操作方法为,b为[0, 1]随机数:
在这里插入图片描述
变异操作:从种群中随机选择一个个体,选择个体中的一点进行变异以产生更优秀的个体。
第i个个体的第j个基因aij进行变异操作的方法为,r为[0,1]随机数,gen为当前迭代次数,genmax为最大迭代次数:
在这里插入图片描述
在这里插入图片描述
遗传算法代码很多,并且运算速度慢,相比于下面的粒子群算法更复杂,所以如果遇到优化问题,粒子群算法更方便。

粒子群算法

核心在于更新粒子速度和位置
算法流程:
在这里插入图片描述
由n只鸟组成的种群 B = ( B 1 , B 2 , B 3 , … , B n ) B = (B_1, B_2, B_3,…, B_n) B=(B1,B2,B3,,Bn),其中第 i i i只鸟 B i Bi Bi的位置可表示为 X i = [ x i 1 , x i 2 , … , x i d ] X_i = [x_{i1}, x_{i2}, …, x_{id}] Xi=[xi1,xi2,,xid];其速度为 V i = [ v i 1 , v i 2 , … , V i d ] Vi = [v_{i1}, v_{i2}, …, V_{id}] Vi=[vi1,vi2,,Vid],则第 t + 1 t+1 t+1次迭代中鸟类的位置与速度可更新为:
在这里插入图片描述
新速度= 惯性项(w V)+个体自信度(i best)+全局最优(best)
在这里插入图片描述
W 一般是1或者0.98,也可以随着鸟的飞行不断变小
c1 = c2 = 2或者0.5

求函数最小值

fun函数:

function y = fun(x)
y = sum(x .^ 2);

if (x(1) + x(2) > 2) && (x(1) - x(2) > 0.5)
    y = y;
else
    y = y + 1000;
end

粒子群算法:

% 清空
clc
clear

%% 1、初始化参数
c1 = 1.49445;
c2 = 1.49445;
w = 1;

maxgen = 200;   % 迭代次数
sizepop = 50;   % 粒子个数
nVar = 2;
% 速度上下限
Vmax = 5;
Vmin = -5;
% 位置上下限
popmax = 100;
popmin = -100;

%% 2、初始化粒子位置
for i = 1 : sizepop
    pop(i, :) = (popmax - popmin) * rands(1, nVar) + popmin;
    V(i, :) = (Vmax - Vmin) * rands(1, nVar) + Vmin;
    fitness(i) = fun(pop(i, :));    % 3、计算粒子目标函数值
end

%% 4、确定全局最优粒子
[bestfitness, bestindex] = min(fitness);
gbest = pop(bestindex, :);
pbest = pop;
fitnesspbest = fitness;
fitnessgbest = bestfitness;
%% 5、更新粒子速度和位置
for i = 1 : maxgen
    for j = 1 : sizepop
        w = 0.98 .^ i * w;
        % 速度更新
        V(j, :) = w .* V(j, :) + c1 * rand * (pbest(j, :) - pop(j, :)) + c2 * rand * (gbest - pop(j, :));
        % 限定速度大小
        V(j, find(V(j, :) > Vmax)) = Vmax;
        V(j, find(V(j, :) < Vmin)) = Vmin;
        
        % 更新位置
        pop(j, :) = pop(j, :) + V(j, :);
        % 限定位置
        pop(j, find(pop(j, :) > popmax)) = popmax;
        pop(j, find(pop(j, :) < popmin)) = popmin;
        % 6、计算粒子目标函数值
        fitness(j) = fun(pop(j, :)); 
    end
    
    % 更新全局最优粒子
    for j = 1 : sizepop
        if fitness(j) < fitnesspbest(j)
            pbest(j, :) = pop(j, :);
            fitnesspbest(j) = fitness(j);
        end

        if fitness(j) < fitnessgbest
            gbest = pop(j, :);
            fitnessgbest = fitness(j);
        end
    end 
    yy(i) = fitnessgbest;    
end
%% 画图
plot(yy)
title('最优个体适应度', 'fontsize', 12);
xlabel('进化代数', 'fontsize', 12);
ylabel('适应度', 'fontsize', 12);

disp('函数值                   变量');
disp([fitnessgbest, gbest]);

在这里插入图片描述

函数值                   变量
    2.1251    1.2501    0.7499

遗传算法与粒子群算法的改进策略

惩罚函数:用于解决约束条件下的最优化问题。通过惩罚函数可以将有约束的目标函数转化为无约束的目标函数。
f ( X ) ′ = f ( X ) + C f(X)^{'} = f(X)+C f(X)=f(X)+C

遗传算法的精英库策略

粒子群的变异策略

多目标优化

在实际问题中大都具有多个目标且需要同时满足,即在同一问题模型中同时存在几个非线性目标,而这些目标函数需要同时进行优化处理,并且这些目标又往往是互相冲突的,称这类问题称为多目标规划问题。
在这里插入图片描述
支配
在多目标优化问题中,如果个体p至少有一个目标比个体q好,而且个体p的所有目标都不比个体q差,那么称个体p支配个体q。

A和B支配C,但是A和B不存在支配关系
在这里插入图片描述
序值:如果p支配q,那么p的序值比q低。如果p和q互不支配,那么p和q有相同的序值。
在这里插入图片描述
拥挤距离:用来计算某前端中的某个体与该前端中其他个体之间的距离,用以表征个体间的拥挤程度。
在这里插入图片描述

例子

在这里插入图片描述

代码

example.m

clear
clc

MultiObj.fun = @(x) [-10.*(exp(-0.2.*sqrt(x(:,1).^2+x(:,2).^2)) + exp(-0.2.*sqrt(x(:,2).^2+x(:,3).^2))), ...
                             sum(abs(x).^0.8 + 5.*sin(x.^3),2)];
MultiObj.nVar = 3;
MultiObj.var_min = -5 .* ones(1, MultiObj.nVar);
MultiObj.var_max = 5 .* ones(1, MultiObj.nVar);

params.Np = 200;
params.Nr = 150;	% 想要多少个点	
params.maxgen = 100;
params.W = 0.4;
params.C1 = 2;
params.C2 = 2;
params.ngrid = 20;	% 网格个数。算拥挤距离
params.maxvel = 5;	
params.u_mut = 0.5;	% 变异率(防止粒子群算法陷入局部最优)

REP = MOPSO(params, MultiObj);

MOPSO.m

function REP = MOPSO(params, MultiObj)
    Np = params.Np;
    Nr = params.Nr;
    maxgen = params.maxgen;
	
    W = params.W;
    C1 = params.C1;
    C2  = params.C2;
	
    ngrid = params.ngrid;
    maxvel = params.maxvel;
    u_mut = params.u_mut;
	
    fun = MultiObj.fun;	% 优化函数
    nVar = MultiObj.nVar; % 变量个数
	
    var_min = MultiObj.var_min(:);
    var_max = MultiObj.var_max(:);
    
    POS = repmat((var_max-var_min)', Np, 1) .* rand(Np, nVar) + repmat(var_min', Np, 1);
    VEL = zeros(Np, nVar);	% 初始速度为0
    POS_fit = fun(POS);		% 计算适应度
	
    PBEST = POS;
    PBEST_fit = POS_fit;
    DOMINATED = checkDomination(POS_fit);
    REP.pos = POS(~DOMINATED, :);
    REP.pos_fit = POS_fit(~DOMINATED, :);
    REP = updateGrid(REP, ngrid);
    maxvel = (var_max - var_min) .* maxvel ./ 100;
    gen = 1;

    display(['Generation #0 - Repository size: ' num2str(size(REP.pos,1))]);
    
    stopCondition = false;
    while ~stopCondition
        h = selectLeader(REP);
        VEL = W .* VEL + C1 * rand(Np, nVar) .* (PBEST - POS) ...
                       + C2 * rand(Np, nVar) .* (repmat(REP.pos(h, :), Np, 1) - POS);
        POS = POS + VEL;
        POS = mutation(POS, gen, maxgen, Np, var_max, var_min, nVar, u_mut);
        [POS, VEL] = checkBoundaries(POS, VEL, maxvel, var_max, var_min);       
        POS_fit = fun(POS);
        
        REP = updateRepository(REP, POS, POS_fit, ngrid);	% 更新记忆库
        if(size(REP.pos, 1) > Nr)	% 基因库大于所需个体
             REP = deleteFromRepository(REP, size(REP.pos, 1) - Nr, ngrid);
        end
        
        pos_best = dominates(POS_fit, PBEST_fit);
        best_pos = ~dominates(PBEST_fit, POS_fit);
        best_pos(rand(Np, 1) >= 0.5) = 0;
        if(sum(pos_best) > 1)
            PBEST_fit(pos_best, :) = POS_fit(pos_best, :);
            PBEST(pos_best, :) = POS(pos_best, :);
        end
        if(sum(best_pos) > 1)
            PBEST_fit(best_pos, :) = POS_fit(best_pos, :);
            PBEST(best_pos, :) = POS(best_pos, :);
        end
        
        display(['Generation #' num2str(gen) ' - Repository size: ' num2str(size(REP.pos,1))]);
        
        gen = gen + 1;
        if(gen > maxgen)
            stopCondition = true;
        end
    end
    h_rep = plot(REP.pos_fit(:,1),REP.pos_fit(:,2),'ok');
end

function REP = updateRepository(REP, POS, POS_fit, ngrid)
	% 更新基因库
	
    DOMINATED = checkDomination(POS_fit);
    REP.pos = [REP.pos; POS(~DOMINATED, :)];
    REP.pos_fit = [REP.pos_fit; POS_fit(~DOMINATED, :)];
    DOMINATED = checkDomination(REP.pos_fit);
    REP.pos_fit = REP.pos_fit(~DOMINATED, :);
    REP.pos = REP.pos(~DOMINATED, :);
    REP = updateGrid(REP, ngrid);	% 更新网格
end

function [POS, VEL] = checkBoundaries(POS, VEL, maxvel, var_max, var_min)
	% 边界控制
	
    Np = size(POS, 1);
    MAXLIM = repmat(var_max(:)', Np, 1);
    MINLIM = repmat(var_min(:)', Np, 1);
    MAXVEL = repmat(maxvel(:)', Np, 1);
    MINVEL = repmat(-maxvel(:)', Np, 1);
    
    VEL(VEL > MAXVEL) = MAXVEL(VEL > MAXVEL);
    VEL(VEL < MINVEL) = MINVEL(VEL < MINVEL);
    VEL(POS > MAXLIM) = (-1) .* VEL(POS > MAXLIM);	% 反方向飞
    POS(POS > MAXLIM) = MAXLIM(POS > MAXLIM);
    VEL(POS < MINLIM) = (-1) .* VEL(POS < MINLIM);	% 反方向飞
    POS(POS < MINLIM) = MINLIM(POS < MINLIM);
end

function dom_vector = checkDomination(fitness)
    Np = size(fitness, 1);
    dom_vector = zeros(Np, 1);
    all_perm = nchoosek(1 : Np, 2);		% 1到Np中两两组合
    all_perm = [all_perm; [all_perm(:, 2), all_perm(:, 1)]];
    
    d = dominates(fitness(all_perm(:, 1), :), fitness(all_perm(:, 2), :));
    dominated_particles = unique(all_perm(d == 1, 2));
    dom_vector(dominated_particles) = 1;
end

function d = dominates(x, y)
	% 判断支配
    d = all(x <= y, 2) & any(x < y, 2);
end

function REP = updateGrid(REP, ngrid)
	% 更新网格
	
    ndim = size(REP.pos_fit, 2);
    REP.hypercube_limits = zeros(ngrid + 1, ndim);
    for dim = 1 : ndim
        REP.hypercube_limits(:, dim) = linspace(min(REP.pos_fit(:, dim)), max(REP.pos_fit(:, dim)), ngrid + 1)';
    end
    
	% 计算优秀个体在网格中的分布个数
    npar = size(REP.pos_fit, 1);
    REP.grid_idx = zeros(npar, 1);
    REP.grid_subidx = zeros(npar, ndim);
    for n = 1 : 1 : npar
        idnames = [];
        for d = 1 : 1 : ndim
            REP.grid_subidx(n, d) = find(REP.pos_fit(n, d) <= REP.hypercube_limits(:, d)', 1, 'first') - 1;
            if(REP.grid_subidx(n,d) == 0)
                REP.grid_subidx(n,d) = 1;
            end
            idnames = [idnames ',' num2str(REP.grid_subidx(n, d))];
        end
        REP.grid_idx(n) = eval(['sub2ind(ngrid.*ones(1,ndim)' idnames ');']);
    end
    
    REP.quality = zeros(ngrid, 2);
    ids = unique(REP.grid_idx);
    for i = 1 : length(ids)
        REP.quality(i, 1) = ids(i);	% 网格中个体个数越多质量越差
        REP.quality(i, 2) = 10 / sum(REP.grid_idx == ids(i));	% 计算网格质量
    end
end

function selected = selectLeader(REP)
	% 选择网格中的一个个体做为最优个体
    prob = cumsum(REP.quality(:,2));
    sel_hyp = REP.quality(find(rand(1, 1) * max(prob) <= prob, 1, 'first'), 1);
    idx = 1 : 1 : length(REP.grid_idx);
    selected = idx(REP.grid_idx == sel_hyp);
    selected = selected(randi(length(selected)));
end

function REP = deleteFromRepository(REP, n_extra, ngrid)
    crowding = zeros(size(REP.pos, 1), 1);
    for m = 1 : 1 : size(REP.pos_fit, 2)
        [m_fit, idx] = sort(REP.pos_fit(:, m), 'ascend');	% 升序排列
        m_up = [m_fit(2 : end); Inf];
        m_down = [Inf; m_fit(1 : end - 1)];
        distance = (m_up - m_down) ./ (max(m_fit) - min(m_fit));
        [~, idx] = sort(idx, 'ascend');
        crowding = crowding + distance(idx);	% 计算距离
    end
    crowding(isnan(crowding)) = Inf;
    
    [~, del_idx] = sort(crowding, 'ascend');
    del_idx = del_idx(1 : n_extra);
    REP.pos(del_idx, :) = [];
    REP.pos_fit(del_idx, :) = [];
    REP = updateGrid(REP, ngrid); 
end

function POS = mutation(POS, gen, maxgen, Np, var_max, var_min, nVar, u_mut)
	% 变异,避免陷入局部最优
	
	% 个体分为3份
    fract = Np / 3 - floor(Np / 3);	
    if fract < 0.5
        sub_sizes =[ceil(Np / 3), round(Np / 3), round(Np / 3)];
    else
        sub_sizes =[round(Np / 3), round(Np / 3), floor(Np / 3)];
    end
    cum_sizes = cumsum(sub_sizes);
    
	% 第二份变异
    nmut = round(u_mut * sub_sizes(2));
    if(nmut > 0)
        idx = cum_sizes(1) + randperm(sub_sizes(2), nmut);
        POS(idx, :) = repmat((var_max - var_min)', nmut, 1) .* rand(nmut, nVar) + repmat(var_min', nmut, 1);
    end
    
	% 第三份变异
    per_mut = (1 - gen / maxgen) ^ (5 * nVar);	% 变异率随代数变小
    nmut = round(per_mut * sub_sizes(3));
    if nmut > 0
        idx = cum_sizes(2) + randperm(sub_sizes(3), nmut);
        POS(idx, :) = repmat((var_max - var_min)', nmut, 1) .* rand(nmut, nVar) + repmat(var_min', nmut, 1);
    end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

智能优化模型与算法实现 的相关文章

  • FileInputFormat详解

    转载 http blog csdn net hellozpc article details 45771933 https my oschina net leejun2005 blog 133424 1 概述 我们在设置MapReduce输
  • ThinkPhp5.1快速创建模块

    快速生成模块 生成一个test模块的指令如下 gt php think build module test 表示自动生成test模块 自动生成的模块目录包含了config controller model和view目录以及common ph
  • 【内存泄漏】- 4. 使用python的gc+pyrasite模块检测python内存泄漏

    Python内存泄漏测试 1 Python内存泄漏处理机制 为了解决内存泄漏的问题 Python2 0的版本开始引入 引用计数 并基于引用计数实现了自动垃圾收集 后来为了解决循环引用导致内存泄漏的问题 又引入 标记 清除 分代回收 机制 P
  • Java实现图片上传

    使用 IDEA 软件 实现文件上传 结合JSP form表单及Servlet 实现文件上传 一 JSP界面 HTML界面 配置 实现文件上传需要配置form表单 基本设置 其中固定两个值是 提交方式只能为post enctype是固定的
  • 瑞萨电子TPS-1教学-第一讲TPS-1 PROFINET Demo Board概述 视频

    瑞萨电子TPS 1教学 第一讲TPS 1 PROFINET Demo Board概述 Renesas
  • 【深度好文】企业数字化转型的核心要素及能力架构分析

    数字化转型究竟是什么 首先我们还是摘录下百度词条上对数字化转型的一个简单说明如下 数字化转型是建立在数字化转换和数字化升级基础上 进一步触及公司核心业务 以新建一种商业模式为目标的高层次转型 数字化转型是开发数字化技术及支持能力以新建一个富
  • 72. Edit Distance

    Given two words word1 and word2 find the minimum number of steps required to convert word1 to word2 each operation is co
  • Self-attention计算方法

    三个矩阵 首先 Inputs为x1 x4 是一个sequence 每一个Input先通过一个Embedding 乘上一个Matrix得到 a1 a4 然后放入self attention 在self attention当中 每一个Input
  • Qt中的C++指针

    Qt中的C 指针 q ptr 在私有类中定义一个名字为q ptr 类型为公有类的数据指针 通过这个指针来访问公有类的数据 d ptr 在公有类中定义一个名字为d ptr 类型为私有类的数据指针 通过这个指针来访问私有类的数据 具体定义在qg
  • C语言

    要求设计的管理系统能够实现以下功能 1 每一条记录包括一个学生的学号 姓名 3个成绩 平时成绩 作业成绩 考试成绩 2 成绩录入功能 成绩信息用文件保存 可以一次完成若干条记录 3 成绩信息显示浏览功能 完成全部学生记录的显示 4 查询功能
  • elasticsearch 集群no known master node

    为什么80 的码农都做不了架构师 gt gt gt It is usually handled automatically If autodiscovery doesn t work Edit the elastic search conf
  • 装饰器在js中的实现原理

    在项目中总是能看到 connect Debounce 巴拉巴拉 通过百度才知道它叫做装饰器 装饰器有什么好 比如说 当我们写好了一个组件它叫做纯洁 当时在创造它的时候我们只想让它做一件事 但是突然有人告诉你我要加一个功能 可是我又不想让我的
  • 医学图像配准软件 ANTs(Advanced Normalization Tools)的安装和使用说明

    本文是关于医学图像配准软件 ANTs Advanced Normalization Tools 的安装和使用说明 ANTs ANTs 是 Advanced Normalization Tools 的缩写 是基于 C 语言的一个医学图像处理的
  • 利用openslide-python处理病理

    参考 博客总结https www jianshu com p bd5b572b5269 官方文档 https openslide org api python module openslide 获取元信息 如每个像素有多少微米 import
  • 杭电ACM 第2036题

    include
  • Linux 定时备份mysql数据并同步到其他mysql服务器中

    备份还原操作 导出数据库 usr bin mysqldump u root pwd database gt database sql 导入数据库 mysql u root p database lt database sql 备份到压缩文件
  • Android 实现WebView

    activity main xml

随机推荐

  • Git首次提交代码到仓库步骤(资料)

    第一步 登陆码云 第二步 创建一个 新的项目 第三步 创建成功后到这个页面 Git 全局设置 git config global user name 意米 git config global user email 142453222851
  • 数据结构<1>时间复杂度详解和leetcode例题

    文章目录 什么是时间复杂度和空间复杂度 前言 算法效率 时间复杂度的计算 空间复杂度的计算 oj练习 什么是时间复杂度和空间复杂度 前言 算法效率 算法效率分析分为两种 第一种是时间效率 第二种是空间效率 时间效率被称为时间复杂度 而空间效
  • Java与WCF交互(一):Java客户端调用WCF服务

    第一步 生成WCF服务 新建WCF解决方案 分别添加三个项目 HelloTimeService 类库 HelloTimehost 控制台程序 HelloTimeClient 控制台程序 项目结构如图 各个项目的主要代码 service Ho
  • 无人机的基本知识

    一 无人机的定义 无人驾驶飞机是指由动力驱动 不搭载操作人员的一种空中飞行器 它依靠空气动力为飞行器提供升力 能够自主或遥控飞行 能携带多种任务设备 执行多种任务 可一次性或多次重复使用的无人驾驶航空器 简称无人机 Unmanned Aer
  • Java Web JSP开发模型

    看之前先点赞 1 JSP开发模型 为了方便使用JSP技术 SUN公司玮JSP技术提供了两种开发模型 JSP Mode1 和 JSP Mode2 JSP Mode1 JSP Mode2 我们将按照Model2思想来完成用户注册功能 1 创建项
  • LUA延时控制

    LUA延时控制 与C 交互实现 其它可参考方式 Lua封装延时执行函数 LUA的延时调用功能 Sleep Function 与C 交互实现 通过C 提供Sleep函数给LUA调用即可 可以任意实现 比如超过5秒再提示相应倒计时功能 if f
  • 听说你搞过架构设计?来,我这里有个系统设计一下...

    V xin ruyuan0330 获得600 页原创精品文章汇总PDF 目录 一 前情提示 二 选择性订阅部分核心数据 三 RabbitMQ的queue与exchange的绑定回顾 四 direct exchange实现消息路由 五 按需订
  • 【云原生

    目录 K8s 控制器 Replicaset 一 Replicaset 控制器 概念 原理解读 1 1 Replicaset 概述 1 2 Replicaset 工作原理 如何管理 Pod 二 Replicaset 资源清单文件编写技巧 三
  • centos 启用远程日志功能_CentOS7下搭建Rsyslog Server记录远程主机系统日志

    rsyslog是一个快速处理收集系统日志的开源程序 提供了高性能 安全功能和模块化设计 rsyslog 是syslog 的升级版 它将多种来源输入输出转换结果到目的地 rsyslog被广泛用于Linux系统以通过TCP UDP协议转发或接收
  • yaml数组解析_YAML详解

    1 YAML简介 YAML 即YAML Ain t Markup Language的缩写 YAML 是一种简洁的非标记语言 YAML以数据为中心 使用空白 缩进 分行组织数据 从而使得表示更加简洁易读 YAML的在线Demo这个YAML转化
  • 使用卷积神经网络(CNN)算法进行多变量时间序列预测的实战教程(Python)

    使用卷积神经网络 CNN 算法进行多变量时间序列预测的实战教程 Python 深度学习在多变量时间序列预测中展现了广泛的应用前景 其中卷积神经网络是最为经典的算法之一 本篇文章将通过一个实例 介绍如何使用卷积神经网络算法来预测交通流量情况
  • 21道常见Transformer面试题(GPT4帮你搞定)

    最近看到一篇关于Transfomer的面试题 写的挺好的 美中不足的是回答的有点简单 刚好我PLUS还没过期 就想着将问题放给无所不能的GPT4来解答 有什么问题欢迎留言私信我好及时修改 不能误人子弟嘿嘿 接下来一起瞧瞧吧 目录部分 按需查
  • Android学习之路3——数据库SQLite的使用以及Android申请权限

    Android学习之路3 数据库SQLite的使用以及Android申请权限 一 实验题目 数据存储 学习SQLite数据库的使用 学习ContentProvider的使用 复习Android的界面编程 二 实现内容 进入程序 可以选择单选
  • 【OpenCV】用Python进行缺陷检测和展示

    目录 OpenCV 使用Python进行缺陷检测和展示 图片数据预处理 展示检测结果 效果展示 完整代码如下 OpenCV 使用Python进行缺陷检测和展示 在工业生产中 为了保证产品质量 通常需要对生产线上的产品进行缺陷检测 在数字图像
  • Win 11 通过WSL 安装子系统Ubuntu 20.0.4 进行编译构建Android Aosp 源码

    Win 11 通过WSL 安装子系统Ubuntu 20 0 4 进行编译构建Android Aosp 源码 准备工作 win11 家庭版 通过WSL安装 虚拟子系统 ubuntu20 0 4 扩大挂载的虚拟硬盘 Swap 扩大处理 针对sw
  • ​java的jmap命令使用详解​

    jmap命令简介 jmap Java Virtual Machine Memory Map 是JDK提供的一个可以生成Java虚拟机的堆转储快照dump文件的命令行工具 除此以外 jmap命令还可以查看finalize执行队列 Java堆和
  • [leetcode] 412. Fizz Buzz 解题报告

    题目链接 https leetcode com problems fizz buzz Write a program that outputs the string representation of numbers from 1 to n
  • 接口调用工具类

    import java io import java net HttpURLConnection import java net MalformedURLException import java net URL import java u
  • STM32F767ZG ADC DMA多通道采集转换

    实例简介 实现在STM32F767ZG 平台上实现多通道ADC采集 使用DAM传输 该程序已经在767平台测试可用 若有不足之处请多多指教 文件 590m com f 25127180 497629933 273f06 访问密码 55168
  • 智能优化模型与算法实现

    优化算法 遗传算法 选择操作 从旧个体中以一定概率选择优良个体组成新的种群 以繁殖得到下一代 轮盘赌法 即基于适应度比例的选择策略 个体i被选中的概率为 交叉操作 从种群中随机选择两个个体 通过两个染色体的交换组合 把父串的优秀特征遗传给子