QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2166|回复: 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;
    / c) a, Y, \% k) T+ P6 _
             s.t.
             x(1)^2 - x(2) >= 0;
             -x(1) - x(2)^2 + 2 = 0;
             x(1),x(2) >=0
    主函数:
    clc;
    format long;%------给定初始化条件---------------------------------------
    6 M; m8 X" P( y8 }
    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
    4 p1 @0 n$ D/ h$ C1 M
    7 k4 B: k# k  |) W
    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

    ( ~, x- ]! s) _* u, [9 L8 f3 v. v/ I1 |6 }  m

    0 M7 E* U: H  @) @$ F7 o  J( O# ?/ j
    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-8-10 11:17 , Processed in 0.837294 second(s), 50 queries .

    回顶部