【优化选址】基于matlab穷举法求解小区基站选址优化问题【含Matlab源码 439期】

举报
海神之光 发表于 2022/05/29 04:49:41 2022/05/29
【摘要】 一、获取代码方式 获取代码方式1: 完整代码已上传我的资源:【优化选址】基于matlab穷举法求解小区基站选址优化问题【含Matlab源码 439期】 获取代码方式2: 通过订阅紫极神光博客付费专栏,...

一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【优化选址】基于matlab穷举法求解小区基站选址优化问题【含Matlab源码 439期】

获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、背景简介

【案例】有一个移动电话运营商计划在一个目前尚未覆盖的区域开展业务,预算为1000万元。调查表明,此区域有7个位置可以安设基站,每个基站只能覆盖一定数目的社区,具体数据见下表:
在这里插入图片描述
解决思路:
1)穷举基站建造的可能性(排列组合,7选1至7选7)
2)去掉预算超标的
3)计算每个组合覆盖的社区
4)计算覆盖的人数
5)求人数最大值找出最优方案

三、部分源代码

function [C,P] = GetPlan()
clc
clear

Get_OptimalCombination(1);
Get_OptimalCombination(2);
Get_OptimalCombination(3);
Get_OptimalCombination(4);
Get_OptimalCombination(5);
   
end

%function [Plan_BuildStation, Plan_BuildCost, Plan_CoverCommunity, Plan_CoverPeople] = Get_OptimalCombination(SelectNum)
function Result = Get_OptimalCombination(SelectNum)

    %基站建设费用
    Cost = [1.8, 1.3, 4.0, 3.5,3.8,2.6,2.1];
    %基站对应的社区
    BaseStation_Community = [1,2,4,0,0; 2,3,5,0,0; 4,7,8,10,0; 5,6,8,9,0; 8,9,12,0,0; 7,10,11,12,15; 12,13,14,15,0];
    %社区对应的人口数
    Community_Person = [2, 4, 13, 6, 9, 4, 8, 12, 10, 11, 6, 14, 9, 3, 6];

    CB_num = combntns(1:7, SelectNum);%求排列组合数
    [Size_row, Size_column] = size(CB_num);%求组合的行数和列数
    CB_num;%测试项
    %求出每种组合的价格
    for i = 1:1:Size_row
        Build_Cost(i) = 0;
       for j = 1:1:Size_column
           Temp1 = Cost(CB_num(i,j));
           Build_Cost(i) = Build_Cost(i) + Temp1;
       end
    end
    Build_Cost;%测试项    
    %判断是否超出预算,并删除不符合要求的组合
    abcd1 = 0;
    for i = 1:1:Size_row
       if Build_Cost(i) > 10
            abcd2 = i;
            abcd1 = [abcd1 abcd2]; %取出不合适的序号        
       end    
    end
    abcd1(:,1) = [];%删除第一项0
    for i = length(abcd1):-1:1
        abcd1(i);
        CB_num(abcd1(i),:) = [];
        Build_Cost(:,abcd1(i)) = [];
    end
    [Size_row, Size_column] = size(CB_num);%更新数组参数  
    if Size_row == 0
        return;
    end
    %求每种组合覆盖的社区
    for i = 1:1:Size_row
       Temp2 = 0;
       for j = 1:1:Size_column;
           Temp3 = BaseStation_Community(CB_num(i,j),:);
           Temp2 = [Temp2 Temp3];%数组组合
         
           Cover_Community{i} = Temp2(Temp2~=0);%组成元包数组
       end
    end
    Cover_Community{1};%测试项
    %Cover_Community{1}(:,4)
    %求覆盖的人数
    for i = 1:1:Size_row
       Temp4 = Cover_Community{i};
       Temp6 = 0;
       for j = 1:1:length(Cover_Community{i});
           Temp7 = Cover_Community{i}(:,j);%读覆盖的社区
         
           Temp6 = Temp6 + Temp5;%求和
           Plan_TotlePeople(i) = Temp6;
       end

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74

四、运行结果

在这里插入图片描述

五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.

文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。

原文链接:qq912100926.blog.csdn.net/article/details/114365378

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。