RGV調度算法

1、基于時間窗

https://wenku.baidu.com/view/470e9fd8b4360b4c2e3f5727a5e9856a57122693.html?_wkts_=1741880736197&bdQuery=%E7%8E%AF%E7%A9%BF%E8%B0%83%E5%BA%A6%E7%AE%97%E6%B3%95

2.2019年MathorCup高校數學建模挑戰賽B題

2019-mathorcupB題-環形穿梭機調度模型(思路篇)_環形調度算法-CSDN博客

2019年MathorCup數學建模B題環形穿梭車系統的設計與調度解題全過程文檔及程序_2019-mathorcupb題-環形穿梭機調度模型-CSDN博客

基于遺傳算法的穿梭車調度主函數

function [time]=GA()
N=3;num=10;%每次迭代一個口貨物的數量,染色體攜帶的基因個數
popsize=20; %初始種群大小
Generationnmax=20; %最大代數
pcrossover=0.8; %交配概率
pmutation=0.1;%變異概率
fitness=zeros(1,popsize);%%產生初始種群,兩個矩陣
A_2=xlsread('A.xlsx');A_2(:,1)=A_2(:,1)+A_2(:,2);A_2(:,2)=A_2(:,1)-A_2(:,2);
A_2(:,1)=A_2(:,1)-A_2(:,2);A_2_ini=A_2;
population=[ceil(4+3*rand(100,4,popsize)),ceil(N*rand(100,6,popsize))];
for i=1:popsizepopulation(52:100,2,i)=0;population(72:100,3,i)=0;population(52:100,8,i)=0;population(72:100,9,i)=0;
end%%迭代的時候用到的 population 信息,ini 為所有信息,raise 隨著迭代不斷上升,
best 為最優種群
population_ini=population;population_raise=[];scnew=zeros(num,10,popsize);
smnew=zeros(num,10,popsize);handle_waitbar=waitbar(0,'Please wait...');%%每次迭代10個
貨物
for s=1:10start=10*s-9;the_end=10*s;%%每次迭代取 ini 對應的 10 行,population_part 的值每次都在變population_part_s=population_ini(start:the_end,:,:);A_2_part=A_2_ini(1:the_end,:);Generation=0;
while Generation<GenerationnmaxGeneration=Generation+1;%%算 raise 后的適應度 
for i=1:popsize fitness(i)=simulation([population_raise;population_part_s(:,:,i)],A_2_part,N);
end%給適應度函數加上一個大小合理的數以便保證種群適應值為正數
fitness=fitness';
valuemax=max(fitness);
fitness=(valuemax-fitness);
fsum=sum(fitness);
Pperpopulation=fitness/fsum;
cumsump=cumsum(Pperpopulation);
cumsump=cumsump';%%只對 part 進行交叉等操作
for j=1:2:popsize %選擇操作seln=selection(cumsump); %交叉操作scro=crossover(population_part_s,seln,pcrossover);scnew(:,:,j)=scro(:,:,1);scnew(:,:,j+1)=scro(:,:,2); smnew(:,:,j)=mutation(scnew(:,:,j),pmutation,N);smnew(:,:,j+1)=mutation(scnew(:,:,j+1),pmutation,N);
end%產生了新的種群,part
population_part_s=smnew;
end%%計算 raise 后的適應度
for i=1:popsizefitness(i)=simulation([population_raise();population_part_s(:,:,i)],A_2_part,N);
end[~,index]=min(fitness); population_raise(start:the_end,:)=population_part_s(:,:,index);waitbar(s/20,handle_waitbar)
end
close(handle_waitbar);time=simulation(population_raise,A_2_ini,N);
xlswrite('task.xlsx',population_raise);
end

?環形穿梭車調度過程

function 
[port_state,vehicle_state]=Fnc_update_state(task_assignment,task_information,port_state,veh
icle_state,vehicle_coordinate,in_coordinate,out_coordinate,N)
% vehicle_state 第一行代表 N 個運輸車的狀態,
%0 表示空閑%1 代表正在裝貨%2 代表正在運貨%3 代表正在卸貨
% 第二行代表貨物來源于哪個進貨口(編號 1-6),從開始裝貨到開始卸貨此數值不為
0
% 第三行代表需要將貨物送到哪個出貨口(編號 1-7),從開始裝貨到開始卸貨此數值
不為 0
% 第四行在運輸車不處于 flag=1 或 3 時為 0,當 flag==1 或 3 時其數字代表裝卸貨剩余
的時間,本程序中由于取了 h=0.01
% 因為浮點數的判定條件問題所以取這個數字的范圍為 0-100,每當進行一個 whlie 循
環 t 增加 0.1, 10s 對應 100 次循環
%%port_state 口的狀態,列數為 6,6 個進貨口
%%第一行代表每一個口下一個有待裝箱的貨物編號%%第二行代表這個貨物由哪個運
輸車負責%%第三行代表這個貨物要送到哪個口
for i=1:N%%如果空閑則滿足一定條件變成裝貨if(vehicle_state(1,i)==0) %%檢測第 i 個車是否到達對應進貨口,如果已經到達進貨口則進行裝箱,%%并將小車狀態改為正在裝貨,記錄起始地和目的地,并將等待時間置 100.%%0.15=0.1*1.5,代表進貨出貨區間delta=vehicle_coordinate(i)-in_coordinate;%index 代表哪個進貨口index=find((0<delta)&(delta<=0.15));%有空閑的運輸車到達進貨口if(~isempty(index))if port_state(2,index)==ivehicle_state(1,i)=1; vehicle_state(2,i)=index;vehicle_state(3,i)=port_state(3,index); vehicle_state(4,i)=100; endend
%%如果在裝貨,則時間減一,如果減一后為 0,變為運貨狀態,此時進貨口的狀態進行
更新,%%貨物信息進行移位elseif(vehicle_state(1,i)==1)vehicle_state(4,i)=vehicle_state(4,i)-1;if(vehicle_state(4,i)==0)vehicle_state(1,i)=2;index=vehicle_state(2,i); %%當有一個貨物完成裝貨后,對應 port 貨物編號+1,并更新對應 port 信息port_state(1,index)=port_state(1,index)+1;port_state(2,index)=task_assignment(port_state(1,index),index);port_state(3,index)=task_information(port_state(1,index),index);end
%%處于運貨狀態時,檢測第 i 個車是否到達對應出貨口,如果已經到達出貨口進行卸貨
%%小車狀態改為卸貨,并將時間置 1000elseif(vehicle_state(1,i)==2)delta=vehicle_coordinate(i)-out_coordinate;index=find((0<delta)&(delta<=0.15));if(~isempty(index))if vehicle_state(3,i)==indexvehicle_state(1,i)=3; vehicle_state(4,i)=100; end
end%%如果在卸貨,則時間減一,如果減一后為 0,變為空閑狀態,并清空該
車的進貨口和出貨口信息elseif(vehicle_state(1,i)==3)vehicle_state(4,i)=vehicle_state(4,i)-1;if(vehicle_state(4,i)==0)vehicle_state(1,i)=0; vehicle_state(2,i)=0; vehicle_state(3,i)=0; end end
end
end

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/72175.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/72175.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/72175.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于CATIA VBA與Python的自動化音樂生成技術對比研究

在工程軟件二次開發領域&#xff0c;CATIA 也可以許多另類的玩法。通過CATIA自帶的VBA可以演奏歌曲&#xff0c;但實際效果往往差強人意。為了進一步優化實際演奏效果&#xff0c;本文以自動生成林宥嘉《說謊》鋼琴前奏旋律為案例&#xff0c;探討兩種語言在多媒體控制領域的技…

最大數位置(信息學奧賽一本通-2038)

【題目描述】 輸入n個整數,存放在數組a[1]至a[n]中&#xff0c;輸出最大數所在位置(n≤1000)。 【輸入】 第一行&#xff0c;數的個數n; 第二行&#xff0c;n個正整數&#xff0c;每個數在232?1之內。 【輸出】 最大數所在位置。 【輸入樣例】 5 67 43 90 78 32 【輸出樣例】 …

【AIGC】OpenAI 集成 Langchain 操作實戰使用詳解

目錄 一、前言 二、前置準備 2.1 安裝 Langchain必須的依賴 2.1.1 python環境 2.1.2 langchain openai 環境 2.1.3 準備一個apikey 2.1.4 langchain 核心組件 三、Langchain 各組件使用 3.1 Chat models組件 3.1.1 Invocation 使用 3.1.1.1 結果解析 3.2 提示詞模板…

【C#學習筆記04】深入掌握C語言格式化輸出

引言 ??printf()??函數不僅可以將數據輸出到控制臺&#xff0c;還可以通過格式化字符串靈活地控制輸出的格式。??printf()???函數的使用規則&#xff0c;包括標志說明、字段寬度、轉換精度、長度修飾、轉換說明、轉義字符和返回結果等內容。 1. ??printf()??函數…

python-leetcode-定長子串中元音的最大數目

1456. 定長子串中元音的最大數目 - 力扣&#xff08;LeetCode&#xff09; 可以使用 滑動窗口 方法來解決這個問題。步驟如下&#xff1a; 初始化&#xff1a;計算前 k 個字符中元音字母的個數&#xff0c;作為初始窗口的值。滑動窗口&#xff1a;遍歷字符串&#xff0c;每次右…

藍橋真題講解

第一題 題目鏈接 0貪吃蛇長度 - 藍橋云課 題目解析 題意&#xff1a;數#個數和個數再加上首尾 代碼原理 略 代碼編寫 略 填空題技巧 眼看手數 當然并不是真的一個一個數&#xff0c;我們需要借助一些工具&#xff0c;不過各位小伙伴們放心&#xff0c;我們借助的工具…

【C++ 函數模板】—— 模板參數推導、實例化策略與編譯優化

歡迎來到ZyyOvO的博客?&#xff0c;一個關于探索技術的角落&#xff0c;記錄學習的點滴&#x1f4d6;&#xff0c;分享實用的技巧&#x1f6e0;?&#xff0c;偶爾還有一些奇思妙想&#x1f4a1; 本文由ZyyOvO原創??&#xff0c;感謝支持??&#xff01;請尊重原創&#x1…

Java基礎入門流程控制全解析:分支、循環與隨機數實戰

引言 流程控制是編程語言的核心邏輯結構&#xff0c;決定了程序的執行順序與邏輯判斷能力。本文以 分支結構、循環結構 和 隨機數生成 為核心&#xff0c;結合代碼示例與底層原理&#xff0c;全面解析Java中流程控制的應用場景與實戰技巧。 一、分支結構 1. if分支 作用&am…

Redis 數據持久化之RDB

Redis數據持久化策略 持久化策略之RDB RDB:在指定的時間間隔&#xff0c;執行數據集的時間點快照。 實現類似照片記錄效果的方式&#xff0c;就是把某一時刻的數據和狀態以文件的形式寫到磁盤上&#xff0c;也就是讀快照。這樣一來即使故障宕機&#xff0c;快照文件也不會丟失&…

數據分析與AI丨AI Fabric:數據和人工智能架構的未來

AI Fabric 架構是模塊化、可擴展且面向未來的&#xff0c;是現代商業環境中企業實現卓越的關鍵。 在當今商業環境中&#xff0c;數據分析和人工智能領域發展可謂日新月異。幾乎每天都有新興技術誕生&#xff0c;新的應用場景不斷涌現&#xff0c;前沿探索持續拓展。可遺憾的是&…

MyBatis - XML 操作動態 SQL

目錄 1. 前言 2. 動態插入 2.1 if 標簽 2.2 trim 標簽 2.2.1 注解完成動態 SQL 3. 動態查詢 3.1 添加 1 1 3.2 where 標簽 4. 動態更新 4.1 set 標簽 5. foreach 標簽 6. sql 標簽 & include 標簽 1. 前言 之前博文所講的 MyBatis SQL 操作, 都必須按照注解或…

【最佳實踐】Go 責任鏈模式實現參數校驗

這里我們使用責任鏈模式來創建一個參數校驗的示例。在這個示例中&#xff0c;我們將實現一個簡單的責任鏈來校驗不同的參數條件。這種模式允許我們將多個校驗步驟串聯在一起&#xff0c;以便可以在不同的條件下進行靈活的校驗。 設計思路 接口定義 (Validator) 目的&#xff1…

深入理解Tomcat:Java Web服務器的安裝與配置

大家好&#xff01;今天我們來聊聊Java Web開發中最重要的工具之一——Apache Tomcat。Tomcat是一個開源的Java Servlet容器和Web服務器&#xff0c;它是運行Java Web應用程序的核心環境。無論是開發、測試還是部署Java Web應用&#xff0c;Tomcat都是不可或缺的工具。本文將詳…

小程序酒店:如何實現智能預訂與在線支付?

在移動互聯網快速發展的今天,酒店行業面臨著前所未有的機遇與挑戰。用戶需求日益多樣化,市場競爭愈發激烈,傳統酒店預訂方式已經難以滿足現代消費者的需求。而小程序作為一種輕量化、便捷化的移動應用形式,正在成為酒店行業數字化轉型的重要工具。通過小程序開發,酒店可以…

C#實現AES-CBC加密工具類(含完整源碼及使用教程)

一、AES-CBC加密應用場景 AES&#xff08;Advanced Encryption Standard&#xff09;作為全球公認的安全加密標準&#xff0c;廣泛使用在以下場景&#xff1a; API通信加密&#xff1a;保護HTTP接口傳輸的敏感數據&#xff08;如身份令牌、支付信息&#xff09;文件安全存儲&…

docker-compose部署MongoDB分片集群

前言 MongoDB 使用 keyFile 進行 節點間身份驗證,我們需要先創建一個 keyFile 并確保所有副本集的節點使用相同的 keyFile。 openssl rand -base64 756 > mongo-keyfile chmod 400 mongo-keyfiledocker-compose部署分片集群 無密碼方式 # docker-compose-mongodb.yml s…

3-003:在 MySQL 中建索引時需要注意哪些事項?

在 MySQL 中創建索引時&#xff0c;需要注意以下事項&#xff0c;以確保索引高效且合理&#xff1a; 1. 選擇合適的索引類型 主鍵索引&#xff08;PRIMARY KEY&#xff09;&#xff1a;每個表只能有一個&#xff0c;默認是聚簇索引。唯一索引&#xff08;UNIQUE&#xff09;&…

在 Linux 系統中,區分**磁盤(物理/虛擬存儲設備)和分區(磁盤的邏輯劃分)

在 Linux 系統中&#xff0c;區分**磁盤&#xff08;物理/虛擬存儲設備&#xff09;和分區&#xff08;磁盤的邏輯劃分&#xff09;**是管理存儲的基礎。以下是詳細的區分方法和操作示例&#xff1a; 一、通過設備命名規則區分 Linux 中磁盤和分區的命名遵循特定規則&#xff…

MongoDB中的游標(Cursor)

游標&#xff08;Cursor&#xff09;在MongoDB中是一個重要的概念&#xff0c;它用于逐條遍歷查詢結果集&#xff0c;特別適用于處理大量數據時。 一、游標的定義與作用 定義&#xff1a; 游標是一種能從數據記錄的結果集中每次提取一條記錄的機制。在MongoDB中&#xff0c;游…

【從零開始學習計算機科學】編譯原理(七)運行時刻環境

【從零開始學習計算機科學】編譯原理(七)運行時刻環境 運行時刻環境存儲組織空間的棧式分配活動樹活動記錄和控制棧簡單棧式存貯分配C語言的過程調用和過程返回時的存貯管理堆式存儲分配堆式存儲分配的功能垃圾回收基于跟蹤的垃圾回收短停頓垃圾回收運行時刻環境 存儲組織 …