QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2146|回复: 0
打印 上一主题 下一主题

数学建模--粒子群算法模版

[复制链接]
字体大小: 正常 放大
杨利霞        

5273

主题

82

听众

17万

积分

  • TA的每日心情
    开心
    2021-8-11 17:59
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    网络挑战赛参赛者

    网络挑战赛参赛者

    自我介绍
    本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。

    群组2018美赛大象算法课程

    群组2018美赛护航培训课程

    群组2019年 数学中国站长建

    群组2019年数据分析师课程

    群组2018年大象老师国赛优

    跳转到指定楼层
    1#
    发表于 2018-11-1 10:43 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    数学建模--粒子群算法模版
    www.madio.net
    求解下列非线性规划最优解
    min f(x) = x(1)^2 + x(2)^2 + 8;
    * q8 s( n* t( U- Y  I
             s.t.
             x(1)^2 - x(2) >= 0;
             -x(1) - x(2)^2 + 2 = 0;
             x(1),x(2) >=0
    主函数:
    clc;
    format long;%------给定初始化条件---------------------------------------
    9 k$ C9 y! A3 `
    c1=2;             %学习因子1
    c2=2;             %学习因子2
    w=0.7;            %惯性权重
    MaxDT=1000;       %最大迭代次数
    D = 1;
    M=40;             %初始化群体个体数目eps=1;      %设置精度(在已知最小值时候用)
    %------初始化种群的个体(可以在这里限定位置和速度的范围)----------
    for i=1:M
        for j=1:D
            x(i,j)=rand; %随机初始化位置
            v(i,j)=rand; %随机初始化速度
        endend
    %------先计算各个粒子的适应度,并初始化p(i)和gbest-------------
    for i=1:M
        p(i)=fitness(x(i,:));
        y(i,:)=x(i,:);end
    gbest=x(1,:);             %gbest为全局最优
    for i=2:M
        if fitness(x(i,:)) < fitness(gbest)
            gbest=x(i,:);
        endend
    %------进入主要循环,按照公式依次迭代,直到满足精度要求----------
    for t=1:MaxDT
        for i=1:M
            v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(gbest-x(i,:));
            x(i,:)=x(i,:)+v(i,:);
            if fitness(x(i,:))<p(i)
                p(i)=fitness(x(i,:));
                y(i,:)=x(i,:);
            end
            if p(i)<fitness(gbest)
                gbest=y(i,:);
            end
        endend

    % `7 r9 E/ N1 f( Q  @/ Q/ S
    ) q) Q) r( \+ G2 R
    Solution=gbest'
    Result=fitness(gbest)
    function objvalue = fitness(X)
    x2 = X;
    x1 = 2-X^2;
        if x1^2-x2>=0 && -x1-x2^2+2==0 && x1>=0 &&x2>=0
                objvalue = x1^2+x2^2+8;
            else
                objvalue = 1000;
        end
    end
    4 j' v7 t4 J2 O- D

    . i; r+ U' }! Q+ P0 @- z. z: I6 U% P9 C  Z% a
    1 N+ u; |5 L: o- w! G) V4 g
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-7-25 04:04 , Processed in 1.104388 second(s), 50 queries .

    回顶部