matlab怎么求时间优化,第6讲MATLAB优化模型求解方法(下)全局优化.PDF

第6讲MATLAB优化模型求解方法(下)全局优化.PDF

第6 讲 MATLAB 优化模型求解方法(下) :全局优化

作者:卓金武,MathWorks 中国

离散型问题是建模竞赛中的主流题型,如果判断所研究的问题是组合优化问

题, 那么就大概率需要全局优化算法了。历年赛题中, 比较经典的这类问题有

灾情巡视、公交车调度、彩票问题、露天矿卡车调度、交巡警服务平台、太阳影

子定位等等。可见全局优化问题的求解算法在数学建模中的重要性,这一讲重要

就介绍MATLAB 全局优化技术及相关实例。

1 MATLAB 全局优化概况

MATLAB 中有个全局优化工具箱(Global Optimization Toolbox),该工具箱

集成了几个主流的全局优化算法,包含全局搜索、多初始点、模式搜索、遗传算

法、多目标遗传算法、模拟退火求解器和粒子群求解器, 如图 1 所示。对于目

标函数或约束函数连续、不连续、随机、导数不存在以及包含仿真或黑箱函数的

优化问题,都可使用这些求解器来求解。

图1 MATLAB 全局优化工具箱包含的求解器

另外,还可通过设置选项和自定义创建、更新函数来改进求解器效率。可以

使用自定义数据类型,配合遗传算法和模拟退火求解器,来描绘采用标准数据类

型不容易表达的问题。利用混合函数选项,可在第一个求解器之后应用第二个求

解器来改进解算。

2 遗传算法

遗传算法可以说是典型的通过变化解的结构以得到更优解的算法,适应能力

比较强,现已经典的旅行商问题(TSP)为例, 来看看如何使用MATLAB 来实现

遗传算法。

 旅行商问题的数据

load('usborder.mat','x','y','xx','yy');

plot(x,y,'Color','red'); hold on;

cities = 40;

locations = zeros(cities,2);

n = 1;

while (n <= cities)

xp = rand*1.5;

yp = rand;

if inpolygon(xp,yp,xx,yy)

locations(n,1) = xp;

locations(n,2) = yp;

n = n+1;

end

end

plot(locations(:,1),locations(:,2),'bo');

 计算城市间的距离

distances = zeros(cities);

for count1=1:cities

for count2=1:count1

x1 = locations(count1,1);

y1 = locations(count1,2);

x2 = locations(count2,1);

y2 = locations(count2,2);

distances(count1,count2)=sqrt((x1-x2)^2+(y1-y2)^2);

distances(count2,count1)=distances(count1,count2);

end

end

 定义目标函数

FitnessFcn = @(x) traveling_salesman_fitness(x,distances);

my_plot = @(options,state,flag) traveling_salesman_plot(options, ...

state,flag,locations);

 设置优化属性并执行遗传算法求解

options = optimoptions(@ga, 'PopulationType', 'custom','InitialPopulationRange', ...

[1;cities]);

options = optimoptions(options,'CreationFcn',@create_permutations, ...

'CrossoverFcn',@crossover_permutation, ...

'MutationFcn',@mutate_permutation, ...

'PlotFcn

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值