【任务规划】基于遗传算法求解多敏捷卫星协同多目标自主任务规划附matlab代码

简介: 【任务规划】基于遗传算法求解多敏捷卫星协同多目标自主任务规划附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

⛄ 内容介绍

问题描述

卫星观测任务调度问题描述如下。基于对太空在轨卫星观测需求,需要在地面观测设备有限的情况下对我国上空在轨运行卫星进行观测任务调度。假设全国现共有M个地面观测设备(每个观测设备都需要对卫星执行相应的观测任务),N个待观测卫星,且M<<N。每个待观测卫星相对于不同的地面设备都有P个可供选择的可见时间窗口,P的数量根据卫星和观测设备的不同而有所差异。其中,每个可观测设备都可以在任何待观测卫星与之对应的可见时间窗口内对该卫星进行观测,观测的时长根据实际任务中该卫星所需观测时间而不同。同时,任意一颗卫星都可在其可见时间窗口内被地面观测设备所观测。由于观测设备自身的物理特性,每个地面观测设备对一颗卫星进行观测结束后对下一颗卫星观测之前,都需要经过设备转换时间,设备的转换时间根据设备的自身特性不同而不同。在地面观测设备选择对哪一颗卫星的哪一段可见时间窗口进行观测时,不同的卫星之间由于实际观测任务需求的不同,观测的优先级也不同。该卫星所承担的角色越重要,其观测优先级就越高,同时由于地面观测设备的精度有所偏差,地面观测设备精度越高,该设备的优先级也越高。不难理解,优先级高的地面观测设备应该尽量选择优先级较高的卫星进行观测。在整个观测任务的规划调度中,每颗卫星最多应被观测一次。调度的目标是在整个观测任务调度的过程中,尽量用较短的时间观测完更多优先级较高的卫星,使最终的卫星和地面站优先级达到最大。

此外,在对多卫星进行观测的任务调度中,还应满足以下约束条件:

(1)地面观测设备在对其中一个卫星的某一个可见时间窗口进行观测时,除设备故障原因,中途不能中断观测,且观测时间要达到实际任务规划中该卫星的观测时间需求;

(2)同一时间同一台地面观测设备只能在某一个卫星的某个可见时间窗口内对该卫星进行观测,同一时间卫星的某个可见时间窗口也只能被一台地面设备进行观测;

(3)当卫星的某一时间窗口被其中一台地面设备观测结束之后,该卫星的任何可见时间窗口都不能被其他地面设备进行观测,每个卫星最多只能被观测一次;

(4)对于同一台地面观测设备而言,其在完成对一颗卫星的观测任务后,对下一颗卫星进行观测前,需要经过设备的转换时间;

本文卫星观测任务调度,观测设备是基于光学观测,不考虑观测设备与卫星之间的频率等其他物理因素,假设天气情况良好,在卫星的可见时间窗口内,各设备与卫星都可见。

⛄ 部分代码

%% 清空环境

clc

clear

close all


%% 模型参数

global Global

Global.num_satellite = 4;    %卫星数

Global.num_object = 12;    %观测目标数


%% 读取数据

% opts.SelectedVariableNames = 1:2;

a = readmatrix('data/G.csv','Range','B2:B5');

Global.rank_satellite = a';%卫星优先级(列表/矩阵)

a = readmatrix('data/P.csv','Range','B2:B13');

Global.rank_object = a';%观测目标优先级(列表/矩阵)

a = readmatrix('data/need.csv','Range','B2:B13');

Global.sat_need_time = a';%观测目标观测时长(列表/矩阵)


Global.visible_window = cell(Global.num_object,Global.num_satellite);

Global.num_visible_window = zeros(Global.num_object,Global.num_satellite);

for i=1:Global.num_object

   datfile = ['data/sat' num2str(i) '.csv'];

   a = readmatrix(datfile,'Range','B1:M4');

   

   for j=1:Global.num_satellite

       index = a(j,:)~=0;

       Global.visible_window{i,j} = a(j,index);

       Global.num_visible_window(i,j) = numel(Global.visible_window{i,j})/2;

   end

end


%% 算法参数

maxgen = 300;

popsize = 150;

population = Init(popsize);


trace_obj = zeros(1,maxgen);

trace_con = zeros(1,maxgen);


%% 进化开始

for i=1:maxgen

   % 交叉变异

   offspring = Mutate(population,i/maxgen);

   % 挑选新个体

   population = Select(population,offspring,popsize);

   

   % 记录信息

   bestobj = population(1).objs;

   trace_obj(i) = bestobj;

   trace_con(i) = population(1).cons;

   

   if ~mod(i,10)

       cons = [population.cons];

       num = sum(cons==0);

       avgcons = mean(cons);

       disp(['第' num2str(i) '代,满足约束个体数量:' num2str(num), ',最佳个体:' num2str(bestobj)])

   end

end

%进化结束


%% 展示结果

figure

plot(trace_obj)

title('最优目标值进化示意图')


bestsol = population(1);

drawresult

⛄ 运行结果

⛄ 参考文献

[1] 郝会成, 姜维, 李一军. 基于混合遗传算法的敏捷卫星任务规划求解[J]. 科学技术与工程, 2013(17):7.

[2] 高新洲, 郭延宁, 马广富,等. 采用混合遗传算法的敏捷卫星自主观测任务规划[J].  2021.

[3] 王法瑞. 基于改进遗传算法的微小卫星自主任务规划方法研究[D]. 哈尔滨工业大学.

[4] 苗悦, 王峰, 张永强. 基于改进遗传算法的编队成像卫星自主任务规划[C]// 2017年空间机电与空间光学学术研讨会. 0.

⛳️ 完整代码

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料


相关文章
|
2月前
|
存储 算法 编译器
算法入门:剑指offer改编题目:查找总价格为目标值的两个商品
给定递增数组和目标值target,找出两数之和等于target的两个数字。利用双指针法,left从头、right从尾向中间逼近,根据和与target的大小关系调整指针,时间复杂度O(n),空间复杂度O(1)。找不到时返回{-1,-1}。
|
2月前
|
传感器 机器学习/深度学习 算法
【无人机协同】动态环境下多无人机系统的协同路径规划与防撞研究(Matlab代码实现)
【无人机协同】动态环境下多无人机系统的协同路径规划与防撞研究(Matlab代码实现)
164 0
|
2月前
|
机器学习/深度学习 数据采集 负载均衡
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
141 0
|
3月前
|
负载均衡 算法 调度
基于遗传算法的新的异构分布式系统任务调度算法研究(Matlab代码实现)
基于遗传算法的新的异构分布式系统任务调度算法研究(Matlab代码实现)
183 11
|
3月前
|
机器学习/深度学习 运维 算法
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
214 1
|
3月前
|
机器学习/深度学习 运维 算法
【储能选址定容】基于多目标粒子群算法的配电网储能选址定容(Matlab代码实现)
【储能选址定容】基于多目标粒子群算法的配电网储能选址定容(Matlab代码实现)
225 4
|
3月前
|
供应链 算法 Java
【柔性作业车间调度问题FJSP】基于非支配排序的多目标小龙虾优化算法求解柔性作业车间调度问题FJSP研究(Matlab代码实现)
【柔性作业车间调度问题FJSP】基于非支配排序的多目标小龙虾优化算法求解柔性作业车间调度问题FJSP研究(Matlab代码实现)
128 1
|
2月前
|
机器学习/深度学习 算法 物联网
基于遗传方法的动态多目标优化算法
基于遗传方法的动态多目标优化算法
|
3月前
|
机器学习/深度学习 存储 算法
【微电网调度】考虑需求响应的基于改进多目标灰狼算法的微电网优化调度研究(Matlab代码实现)
【微电网调度】考虑需求响应的基于改进多目标灰狼算法的微电网优化调度研究(Matlab代码实现)
152 0
|
3月前
|
机器学习/深度学习 负载均衡 算法
【柔性作业车间调度】基于四种多目标优化算法(NSOOA、NSPSO、NSDBO、NSCOA)求解柔性作业车间调度问题FJSP研究(Matlab代码实现)
【柔性作业车间调度】基于四种多目标优化算法(NSOOA、NSPSO、NSDBO、NSCOA)求解柔性作业车间调度问题FJSP研究(Matlab代码实现)
217 0

热门文章

最新文章