首页 > 编程语言 >数学建模智能算法

数学建模智能算法

时间:2024-03-29 21:34:18浏览次数:25  
标签:种群 new1 建模 sol 数学 new2 limit x0 智能算法

模拟退火算法


%生成初始解,求目标函数f(x)=x1^2+x2^2+8在x1^2-x2>0;-x1-x2^2+2=0约束下的最小值问题  
sol_new2=1;%(1)解空间(初始解)  
sol_new1=2-sol_new2^2;  
sol_current1 = sol_new1;   
sol_best1 = sol_new1;  
sol_current2 = sol_new2;   
sol_best2 = sol_new2;  
E_current = inf;  
E_best = inf;  
  
rand('state',sum(clock)); %初始化随机数发生器  
t=90; %初始温度  
tf=89.9; %结束温度  
a = 0.99; %温度下降比例  
  
while t>=tf%(7)结束条件  
    for r=1:1000 %退火次数  
          
        %产生随机扰动(3)新解的产生  
        sol_new2=sol_new2+rand*0.2;  
        sol_new1=2-sol_new2^2;  
          
        %检查是否满足约束  
        if sol_new1^2-sol_new2>=0 && -sol_new1-sol_new2^2+2==0 && sol_new1>=0 &&sol_new2>=0  
        else  
            sol_new2=rand*2;  
            sol_new1=2-sol_new2^2;  
            continue;  
        end  
          
        %退火过程  
        E_new=sol_new1^2+sol_new2^2+8;%(2)目标函数  
        if E_new<E_current%(5)接受准则  
                E_current=E_new;  
                sol_current1=sol_new1;  
                sol_current2=sol_new2;  
                if E_new<E_best  
                    %把冷却过程中最好的解保存下来  
                    E_best=E_new;  
                    sol_best1=sol_new1;  
                    sol_best2=sol_new2;  
                end  
        else  
                if rand<exp(-(E_new-E_current)/t)%(4)代价函数差  
                    E_current=E_new;  
                    sol_current1=sol_new1;  
                    sol_current2=sol_new2;  
                else  
                    sol_new1=sol_current1;  
                    sol_new2=sol_current2;  
                end  
        end  
        plot(r,E_best,'*')  
        hold on  
    end  
    t=t*a;%(6)降温  
end  
  
disp('最优解为:')  
disp(sol_best1)  
disp(sol_best2)  
disp('目标表达式的最小值等于:')  
disp(E_best)  

粒子群算法

基本步骤
1 找出待优化的目标函数
2 设定种群规模大小(不会设置可直接采用下方代码的)
3 替换掉下方公式即可

%% 初始化种群  
f= @(x)x .* sin(x) .* cos(2 * x) - 2 * x .* sin(3 * x); % 函数表达式    % 求这个函数的最大值  
figure(1);ezplot(f,[0,0.01,20]);  
N = 50;                         % 初始种群个数  
d = 1;                          % 空间维数  
ger = 100;                      % 最大迭代次数       
limit = [0, 20];                % 设置位置参数限制  
vlimit = [-1, 1];               % 设置速度限制  
w = 0.8;                        % 惯性权重  
c1 = 0.5;                       % 自我学习因子  
c2 = 0.5;                       % 群体学习因子   
for i = 1:d  
    x = limit(i, 1) + (limit(i, 2) - limit(i, 1)) * rand(N, d);%初始种群的位置  
end  
v = rand(N, d);                  % 初始种群的速度  
xm = x;                          % 每个个体的历史最佳位置  
ym = zeros(1, d);                % 种群的历史最佳位置  
fxm = zeros(N, 1);               % 每个个体的历史最佳适应度  
fym = -inf;                      % 种群历史最佳适应度  
hold on  
plot(xm, f(xm), 'ro');title('初始状态图');  
figure(2)  
%% 群体更新  
iter = 1;  
record = zeros(ger, 1);          % 记录器  
while iter <= ger  
     fx = f(x) ; % 个体当前适应度     
     for i = 1:N        
        if fxm(i) < fx(i)  
            fxm(i) = fx(i);     % 更新个体历史最佳适应度  
            xm(i,:) = x(i,:);   % 更新个体历史最佳位置  
        end   
     end  
if fym < max(fxm)  
        [fym, nmax] = max(fxm);   % 更新群体历史最佳适应度  
        ym = xm(nmax, :);      % 更新群体历史最佳位置  
 end  
    v = v * w + c1 * rand * (xm - x) + c2 * rand * (repmat(ym, N, 1) - x);% 速度更新  
    % 边界速度处理  
    v(v > vlimit(2)) = vlimit(2);  
    v(v < vlimit(1)) = vlimit(1);  
    x = x + v;% 位置更新  
    % 边界位置处理  
    x(x > limit(2)) = limit(2);  
    x(x < limit(1)) = limit(1);  
    record(iter) = fym;%最大值记录  
     x0 = 0 : 0.01 : 20;  
     plot(x0, f(x0), 'b-', x, f(x), 'ro');title('状态位置变化')  
    pause(0.1)  
    iter = iter+1;  
end  
figure(3);plot(record);title('收敛过程')  
x0 = 0 : 0.01 : 20;  
figure(4);plot(x0, f(x0), 'b-', x, f(x), 'ro');title('最终状态位置')  
disp(['最大值:',num2str(fym)]);  
disp(['变量取值:',num2str(ym)]);  

标签:种群,new1,建模,sol,数学,new2,limit,x0,智能算法
From: https://blog.csdn.net/m0_57692904/article/details/137126740

相关文章

  • (未完成)离散数学
    命题具有唯一真值的陈述句,具有客观性质。任何疑问句、祈使句、感叹句、有歧义的陈述句不属于命题。真值为“真”的命题是真命题,真值为“假”的命题是假命题。命题的分类:原子命题:不可再分解的命题(用大写英文字母P,Q,R……表示<可以有下标>)。复合命题:可再分解的命题,由原子命......
  • 【洛谷 P8738】[蓝桥杯 2020 国 C] 天干地支 题解(字符串+数学+模运算)
    [蓝桥杯2020国C]天干地支题目描述古代中国使用天干地支来记录当前的年份。天干一共有十个,分别为:甲(jiǎ)、乙(yǐ)、丙(bǐng)、丁(dīng)、戊(wù)、己(jǐ)、庚(gēng)、辛(xīn)、壬(rén)、癸(guǐ)。地支一共有十二个,分别为:子(zǐ)、丑(chǒu)、寅(yín)、卯(mǎo)、辰(chén)、巳(sì)、午(wǔ......
  • 恒温恒湿空气调节系统设计:基于MATLAB的恒温恒湿空气调节系统建模和仿真,包括空气调节系
    鱼弦:公众号【红尘灯塔】,CSDN内容合伙人、CSDN新星导师、全栈领域优质创作者、51CTO(Top红人+专家博主)、github开源爱好者(go-zero源码二次开发、游戏后端架构https://github.com/Peakchen)基于MATLAB的恒温恒湿空气调节系统设计:原理、应用、实现与分析1.恒温恒湿空气......
  • 2013年认证杯SPSSPRO杯数学建模A题(第一阶段)护岸框架全过程文档及程序
    2013年认证杯SPSSPRO杯数学建模A题护岸框架原题再现:  在江河中,堤岸、江心洲的迎水区域被水流长期冲刷侵蚀。在河道整治工程中,需要在受侵蚀严重的部位设置一些人工设施,以减弱水流的冲刷,促进该处泥沙的淤积,以保护河岸形态的稳定。  现在常用的设施包括四面六边透水框......
  • 【智能算法改进】混沌映射策略--一网打尽
    目录1.引言2.混沌映射3.分布特征4.混沌映射函数调用5.改进智能算法1.引言基本种群初始化是在整个空间内随机分布,具有较高的随机性和分布不均匀性,会导致种群多样性缺乏,搜索效率低等问题。许多学者利用混沌映射机制来增加种群的多样性,以改善算法的性能,其非线性特性......
  • 离散数学:“张三李四王五说谎问题”
    在大一下期的离散课程里,通过王建芳教授的指导,使我真正了解并体会到了离散的数学之美。下面开始进行问题与解答的分享:谁在说谎?①张三说李四在说谎。②李四说王五在说谎。③王五说张三、李四都在说谎。请问三人中到底谁在说谎?这是通过真值表的方法来判断到底是谁在说谎,但......
  • 数学建模之MATLAB使用
    1.数值计算和符号计算的认识我们都知道MATLAB里面存在着数值计算和符号计算,但是两者之间到底是怎样的呢?举一个很简单的例子,我们在高等数学里面的微积分学习时经常求不定积分,也就是原函数,这个过程实际上进行的就是符号运算,我们通过对一些变量字符x等等的运算,最后得出一个表达......
  • 2024天府杯全国大学生数学建模A题思路+模型+代码+论文
    2024天府杯数学建模竞赛A题思路模型代码:3.28第一时间更新,更新见文末名片A题:科研绩效分配方案设计与优化问题背景:科学研究领域的绩效评定有着较大的共性和行业典型特点,在高校科研人员日常管理工作中也是一项较复杂的研究性、政策性工作。科技部、教育部、......
  • 【ROS2】机器人建模与仿真——建模入门(URDF+rviz2)
    refer:小鱼一.机器人建模采用URDF(UnifiedRobotDescriptionFormat)统一机器人描述格式,URDF使用XML格式描述机器人文件。通过代码的形式描述机器人的各个组件,以及组件之间的联动关系。1.URDF的组成1.1申明信息xml的申明信息<?xmlversion="1.0"?>机器人的申明信......
  • 模意义下的数学
    前言我曾今写过一篇标题一模一样的文章,但是那篇都是在抄书,写的太烂了。在此重构。模意义是什么?即小学学过的"余数":\(13\)除以\(5\)商\(2\)余\(3\)。那么\(13\bmod5=3\)(\(\bmod\)读作模)。如果有两个数\(a,b\)除以一个数\(p\)的余数一样,则我们称\(a,b\)关于......