基于沙猫群优化算法的线性规划求解matlab程序
1 沙猫群优化算法
沙猫的中文学名叫沙丘猫,俗名沙漠猫,与荒漠猫名字相似,但却是两种不同的猫科动物。沙猫生活在茫茫沙漠里,主要分布在分布于非洲北部,阿拉伯半岛中部和西南亚。沙猫的家园,是贫瘠的沙漠,严重缺水,温差很大,最高可达50多摄氏度,最低达到零下10摄氏度。沙猫体重在1.5-3.5公斤之间,比家猫还小,比黑足猫要大一点,成年的沙猫看上去也像一只幼猫,个子总也长不大。为了适应沙漠里恶劣的气候条件,沙猫使出了浑身解数,从身体结构到生存技能,都进化出恰到好处的作用。全身毛发是沙黄色的,眼角长有一条黄褐色的条纹,四肢上长有黑色条纹。毛发的颜色跟沙漠的颜色相近,当它卧在沙漠中不动,你就难以发现它。沙黄色的毛发是它的伪装保护色,还能帮助它捕猎。浓密的毛发帮助沙猫抵御夜晚零下的温度,就连脚趾间也长着毛发,覆盖了足垫,就像穿了毛鞋子,白天在被晒烫的沙子上行走,不怕热。大脑袋、大眼睛、大耳朵,让它看上去很呆萌,但其实它的大耳朵,让它拥有了格外好的听力,可以探测到沙土中猎物发出的细微声音,随时通过声音来辨别四周的环境。耳朵内侧长着浓密的白色毛发,可以抵挡风沙,尤其是沙尘暴来袭时,不让沙子吹进耳朵里。因为沙漠里非常干旱缺水,沙猫的泌尿系统,尽可能的少排尿液,所以沙猫可以长时间不饮水,仅从猎物身上获取水分就足够了。
沙漠里白天温度高得吓人,沙猫习惯待在植被下、石头下,或沙洞里,躲避高温。到了晚上,气温降下来了才出去捕食,在大约16平方公里的领地里行走,寻找猎物。沙猫会捕食沙鼠等小型啮齿类动物,以及小型鸟类,也会捕食各种爬行动物,如蜥蜴与蛇。话说,沙猫虽然体型小,长相呆萌且乖,但捕食时可凶猛了。沙猫擅长捕蛇,见到蛇类,就快速跑过去,以迅雷不及掩耳之势猛击蛇的头部,然后一口咬住蛇的后颈,锋利的牙齿一下子把蛇给咬断了,干脆利落,毫不拖泥带水。沙猫吃蛇就像吃辣条,就算是毒蛇它也不怕,将其猎杀后,一口一口慢慢吃着,享受美味。同是猫科动物的兔狲,看上去可凶了,但也只是捕鼠兔、旱獭吃。而沙猫捕蛇更简单粗暴,凶猛异常。正是凭着凶悍的捕蛇“手段”,沙猫被当地游牧民族称为“猎蛇者”,同时也坐稳了“沙漠小霸王”的宝座。不过,沙猫毕竟太娇小了,面对毒蛇它不怕,但是面对体型较大的蛇,它就要预估捕猎风险了,知道自己打不过,就溜之大吉。
根据沙猫的行为,将觅食分为两个阶段:搜索和攻击猎物。本文提出的算法(SCSO)就包括了这两个阶段,此外,还提出了一种机制来实现探索和利用阶段的平衡。沙猫群优化模拟了沙猫的两个主要行为:搜寻猎物和攻击猎物。
2 线性规划算例
2.1算例
2.2算例答案
3 沙猫群算法求解结果
1)迭代曲线
2)求解答案
4 matlab程序
1)主函数
clc
clear
close all
SearchAgents_no=30;
Max_iteration=200;
Function_name=1;
[lb,ub,dim,fobj]=Get_Functions_details(Function_name);
[BsSCSO,BpSCSO,SCSO_cg_curve]=SCSO(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);
%% 输出结果
disp('最优解')
BsSCSO
disp('最优变量')
BpSCSO
%% 画图
plot(SCSO_cg_curve)
xlabel('迭代次数');
ylabel('目标函数值');
。。。。。。略