遗传算法交叉算子

该博客探讨了在遗传算法中如何设计交叉算子,确保整型和浮点型变量在交叉后保持正确形式,并满足约束条件。文章以一个具体例子说明,其中pop_c包含6个个体,每个个体由858个基因组成,包括X、V、P和z、u等变量,这些变量之间存在特定的关系和约束。
摘要由CSDN通过智能技术生成

考虑不同变量在交叉后是否还保持原有形式,整型或浮点型,同时使交叉后的基因仍满足约束要求。
X站点是否被选中,若X=0,则V,Pu,z都等于0.
若X=1,P=0.8V,u,z间同样存在函数关系。

import random
from random import sample
import numpy as np
from numpy import *
import geatpy as ea
import xlrd

##已知数据
q1='F:\共享车选址调度\共享汽车数据\候选点之间的OD(13).xlsx'
T1='F:\共享车选址调度\共享汽车数据\候选点之间的最短期望时间Tik(13).xlsx'
wt1='F:\共享车选址调度\共享汽车数据\需求中心到备选点的步行时间(50行13列).xlsx'
D1='F:\共享车选址调度\共享汽车数据\每个需求中心的需求量(50网格).xlsx'
# ####excel转为矩阵
def excel_to_matrix(path,a):  #路径,sheet
    table = xlrd.open_workbook(path).sheets()[a]#获取第一个sheet表
    row = table.nrows  # 行数
    col = table.ncols  # 列数
    datamatrix = np.zeros((row, col))#生成一个nrows行ncols列,且元素均为0的初始矩阵
    for x in range(col):
        cols = np.matrix(table.col_values(x))  # 把list转换为矩阵进行矩阵操作
        datamatrix[:, x] = cols # 按列把数据存进矩阵中
    return datamatrix
q=excel_to_matrix(q1,0)
T=excel_to_matrix(T1,0)
wt=excel_to_matrix(wt1,0)
D=excel_to_matrix(D1,1)  # 多维数组,50行1列
# #############参数##########################
Cs=1*10
Cp=12*10
Cv=56*10
Ce=6
M=10000
alpha=0.8
beta=0.5
gama=2
I=13
J=50
Pmax=100
w1=50
H =500000  # 成本的最大值
##########################################
##距离衰减
s=zeros((J, I))  # 创建一个J*I的零矩阵,矩阵这里zeros函数的参数是一个tuple类型(J,I)
for i in range(I):
    for j in range(J):
        if wt[j,i]<w1:
            a=-(wt[j,i])**4+w1**4
            b=(w1**4)*(math.exp((wt[j,i]/40)**3))
            s[j,i]=a/b
        elif wt[j,i]>w1:
            s[j,i]=0
## qik/qi
n=zeros((J, I))
for i in range(I):
    for k in range(I):
        if sum(q[i])>0:  #每一行的和
            n[i,k]=q[i,k]/sum(q[i])
        else:
            n[i,k]=0


pop_s=[[0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 77, 16, 16, 0, 0, 42, 42, 23, 94, 6, 0, 0, 0, 15, 9, 10, 0, 0, 8, 31, 10, 51, 0, 0.0, 0.0, 0.0, 0.953660447032721, 0.421129252768606, 0.7368299601200886, 0.0, 0.0, 0.12157216396969484, 0.5665785075319244, 0.25113738869641633, 0.40382019502251887, 0.7634105498852898, 0.0, 0.0, 0.0, 0.09623527719911384, 0.7458476855068973, 0.8548331607984899, 0.0, 0.0, 0.5683145441910736, 0.5673801537136172, 0.35176589507142797, 0.44532998977795235, 0.7799462189342619, 0.0, 0.0, 0.0, 0.660646266915926, 0.016295193175909328, 0.16165102762922956, 0.0, 0.0, 0.32828590242445177, 0.006703838681575425, 0.36183848432988164, 0.7977399210913949, 0.5744471348403465, 0.0, 0.0, 0.0, 0.3501543937581235, 0.020858602222789124, 0.6512017126189921, 0.0, 0.0, 0.4494640558200018, 0.015599166122460817, 0.8142320827576078, 0.024696830610533183, 0.38892140017443544, 0.0, 0.0, 0.0, 0.7326150585119882, 0.7243776972880036, 0.9489729620566868, 0.0, 0.0, 0.998927687790119, 0.3572156503139323, 0.8601908968039954, 0.927444609137869, 0.7387204522498872, 0.0, 0.0, 0.0, 0.6403638110961399, 0.25943503552278124, 0.13175424601311947, 0.0, 0.0, 0.04215783843701759, 0.8188458150433984, 0.49528720761055356, 0.462177972967283, 0.776280958741832, 0.0, 0.0, 0.0, 0.06863482076006788, 0.5886699125740241, 0.22481721756409834, 0.0, 0.0, 0.3596014994444988, 0.056096502521277625, 0.8906683620748878, 0.4761813361116777, 0.9732788601546946, 0.0, 0.0, 0.0, 0.32960116527944205, 0.632328313266811, 0.9595664252249527, 0.0, 0.0, 0.22414550149378165, 0.14117685696818894, 0.9496045554485918, 0.6836855560339692, 0.12111247495451627, 0.0, 0.0, 0.0, 0.09332110169843011, 0.19005858640600892, 0.49708893713539093, 0.0, 0.0, 0.7553605721515644, 0.5436817574478898, 0.42907749739092393, 0.9658658158236165, 0.025798893095166475, 0.0, 0.0, 0.0, 0.24158704850193324, 0.9557747408262087, 0.04756287675586801, 0.0, 0.0, 0.29792755756337086, 0.1757086773402473, 0.687789113651461, 0.1430977236579355, 0.27471781483918833, 0.0, 0.0, 0.0, 0.41393667928832056, 0.41150280368508463, 0.02345033916846684, 0.0, 0.0, 0.9968437818193631, 0.3098996828692353, 0.27942765326017616, 0.9875451717714447, 0.7014577009138651, 0.0, 0.0, 0.0, 0.3361682769933678, 0.21396756406490858, 0.5327433069272902, 0.0, 0.0, 0.27433479509061687, 0.35054060288010613, 0.6266503797307936, 0.48015018291211475, 0.03609491139976806, 0.0, 0.0, 0.0, 0.01744933906024404, 0.24202686810420437, 0.11167451592685174, 0.0, 0.0, 0.24979098468917704, 0.9980126233224642, 0.250966798604915, 0.8091198787072501, 0.5616078172877135, 0.0, 0.0, 0.0, 0.3416882796045472, 0.9480722330452134, 0.5475609114179522, 0.0, 0.0, 0.7258231643077934, 0.8927662117030033, 0.9377052585802467, 0.40329934128204814, 0.9316021480144515, 0.0, 0.0, 0.0, 0.2998501711023098, 0.1933866433787358, 0.9910505443669404, 0.0, 0.0, 0.529261458113558, 0.029727061311395797, 0.6362433409481906, 0.4593540320019851, 0.569046415550671, 0.0, 0.0, 0.0, 0.6824716696119236, 0.3934564664709719, 0.44193026057521634, 0.0, 0.0, 0.6438779343049726, 0.9482163821963348, 0.9366192659804388, 0.9470903239045073, 0.3226139729445029, 0.0, 0.0, 0.0, 0.6523168424634991, 0.7532101042104489, 0.4449951215032186, 0.0, 0.0, 0.21886872008055647, 0.8744185594686195, 0.7186967198124843, 0.8506903314345389, 0.44745767191215446, 0.0, 0.0, 0.0, 0.14702736092950497, 0.7900799249495436, 0.8643520528279526, 0.0, 0.0, 0.03382411403299679, 0.0832987566613882, 0.21250687883382569, 0.1936845698334878, 0.7201922012079347, 0.0, 0.0, 0.0, 0.4207531864058728, 0.9794229376413748, 0.13716241927488715, 0.0, 0.0, 0.5369848507790107, 0.4492772353913923, 0.6581356164535997, 0.30409941442371025, 0.6414128080397467, 0.0, 0.0, 0.0, 0.6627388813068337, 0.8271025475659388, 0.12540823342383567, 0.0, 0.0, 0.06771639750389136, 0.4577710026766124, 0.4763859464957827, 0.6377261617966254, 0.4893915405329248, 0.0, 0.0, 0.0, 0.18209724096561086, 0.41173327040964425, 0.9191727873270984, 0.0, 0.0, 0.004679849633985711, 0.5030329982072462, 0.8333637115595732, 0.2709467494148592, 0.9830610007736321, 0.0, 0.0, 0.0, 0.8514751923300109, 0.08978563766807524, 0.5218697851326599, 0.0, 0.0, 0.48593929014886605, 0.12227200714842368, 0.4706305716829773, 0.8564540062970659, 0.7660958557259293, 0.0, 0.0, 0.0, 0.853711576223622, 0.4330287298474813, 0.28969148300441594, 0.0, 0.0, 0.20269103567308477, 0.9540471857906014, 0.7762011786121048, 0.22934274813608768, 0.18964986668812212, 0.0, 0.0, 0.0, 0.33950204093377356, 0.9910873096250854, 0.7363342332602258, 0.0, 0.0, 0.2960732430599069, 0.9727376298661535, 0.7178243412001056, 0.07114553033680904, 0.8722721046293399, 0.0, 0.0, 0.0, 0.24481007032329183, 0.004284244885697008, 0.8453418488101545, 0.0, 0.0, 0.9560674573606937, 0.9399436267711945, 0.09675793026636892, 0.25454146578701786, 0.7101256519931965, 0.0, 0.0, 0.0, 0.633323373546973, 0.30750339590179643, 0.028113892407721774, 0.0, 0.0, 0.5996854511220192, 0.39160874985860517, 0.6820014979748978, 0.7126084823421777, 0.824256234645563, 0.0, 0.0, 0.0, 0.5742580901537161, 0.6664047958163857, 0.28039394329452194, 0.0, 0.0, 0.1662550349847507, 0.7428276533647811, 0.48098724292289674, 0.7058394234830164, 0.15044014888003743, 0.0, 0.0, 0.0, 0.1689328326065065, 0.2503859369389184, 0.3615110095756202, 0.0, 0.0, 0.46326977261518554, 0.15715910624780183, 0.9722843924143945, 0.8018220008809448, 0.5983474383308583, 0.0, 0.0, 0.0, 0.762242583248191, 0.015255190707518018, 0.7215495557092356, 0.0, 0.0, 0.8269030486918715, 0.8231162739940419, 0.7985436735695877, 0.5550528060202341, 0.5856877510362367, 0.0, 0.0, 0.0, 0.6014480091211644, 0.9306627847069657, 0.4535219676072001, 0.0, 0.0, 0.9317915035081505, 0.9110071357389613, 0.3335453928394332, 0.08983391867475565, 0.09270926081289965, 0.0, 0.0, 0.0, 0.9449320558423847, 0.8591843456239576, 0.09141738316034542, 0.0, 0.0, 0.19759261483169044, 0.9573464092436396, 0.628443756019572, 0.1439811968286141, 0.8119453540529183, 0.0, 0.0, 0.0, 0.14533330508290498, 0.6556207055667322, 0.3905572075784869, 0.0, 0.0, 0.342061134810441, 0.8011354018079647, 0.42110075764122945, 0.954150829324941, 0.856017108278867, 0.0, 0.0, 0.0, 0.9780096430461646, 0.07493496026650281, 0.41843757151634287, 0.0, 0.0, 0.8437034129392038, 0.8303366117321522, 0.04182637072503248, 0.2854306257646313, 0.19966768771094157, 0.0, 0.0, 0.0, 0.05050121682981801, 0.8361474777986981, 0.8434396906941104, 0.0, 0.0, 0.24876026372304372, 0.8233787276632465, 0.3556558197896649, 0.25870080259873873, 0.9580524541608141, 0.0, 0.0, 0.0, 0.5111509900805429, 0.11341264726304556, 0.4765911680300253, 0.0, 0.0, 0.3028168480404113, 0.012493161809922437, 0.4825446117936404, 0.6275267848681028, 0.509531691485154, 0.0, 0.0, 0.0, 0.5741848772151253, 0.760032250965627, 0.8325425401978689, 0.0, 0.0, 0.39859586080527, 0.9890869512515433, 0.5055492887044531, 0.4846282712181582, 0.7419711405855399, 0.0, 0.0, 0.0, 0.5234249245962064, 0.8997445871047409, 0.012587480598126977, 0.0, 0.0, 0.13729106842247996, 0.3866389382960568, 0.7454465716209493, 0.972551643680874, 0.8860795998841727, 0.0, 0.0, 0.0, 0.8394133486797827, 0.6090068308151633, 0.583557416935614, 0.0, 0.0, 0.6758905811455624, 0.9836731995852471, 0.11510423806219439, 0.4875862428534181, 0.8239329840490744, 0.0, 0.0, 0.0, 0.7592850726656888, 0.41167431297181734, 0.01807196996014926, 0.0, 0.0, 0.8282507411958033, 0.8092811240244386, 0.7257574091121457, 0.7413108353209655, 0.42497982363357456, 0.0, 0.0, 0.0, 0.5083496997859003, 0.7266050875043778, 0.23566817130744688, 0.0, 0.0, 0.5439898754688215, 0.15495271312119985, 0.9442044592281991, 0.9181655903091287, 0.9002703042095775, 0.0, 0.0, 0.0, 0.08842943998087416, 0.49155550318206254, 0.5518760384895084, 0.0, 0.0, 0.4835041886988316, 0.571860025650881, 0.4644356327651583, 0.7614432801159428, 0.6410383865156312, 0.0, 0.0, 0.0, 0.797666725358046, 0.1649607636160093, 0.5031494314475711, 0.0, 0.0, 0.7307887832908887, 0.9431023334761844, 0.33672626323753385, 0.3992394349725824, 0.9574268550608193, 0.0, 0.0, 0.0, 0.36090767248521993, 0.9104502257102949, 0.8237205716280404, 0.0, 0.0, 0.2821940714350979, 0.2084927130421309, 0.6884981441341369, 0.8967118057275973, 0.67306649993084, 0.0, 0.0, 0.0, 0.5203554591737216, 0.27717432059360225, 0.4782151706317994, 0.0, 0.0, 0.2047450852717292, 0.5468169619470675, 0.8878821655673509, 0.6581614891567108, 0.23489984104879247, 0.0, 0.0, 0.0, 0.5282050036004561, 0.3148595112333825, 0.37866126317574267, 0.0, 0.0, 0.9776005328086651, 0.0748819893963657, 0.23931755610633898, 0.08325767675313445, 0.9428718554383924, 0.0, 0.0, 0.0, 0.9423171605052512, 0.733276360282318, 0.7861096157295994, 0.0, 0.0, 0.9940806157066722, 0.10508504292826959, 0.2694825123276242, 0.9935467542535918, 0.13736781719894597, 0.0, 0.0, 0.0, 0.4408268755905015, 0.7178208940322958, 0.15834230793012516, 0.0, 0.0, 0.9104960287600862, 0.5408200798134289, 0.19044259152342347, 0.9769351504386338, 0.9299904269297924, 0.0, 0.0, 0.0, 0.061066447018377046, 0.5041492224558298, 0.5127593869494709, 0.0, 0.0, 0.6566971814916774, 0.3516926707966713, 0.6880707559933157, 0.42852236299392876, 0.16298918311593957, 0.0, 0.0, 0.0, 0.9608914943994028, 0.9396778359754039, 0.912708299049856, 0.0, 0.0, 0.5889587119881238, 0.7157787121370475, 0.6988287380394458, 0.36964231034545536, 0.7789704675626576, 0.0, 0.0, 0.0, 0.6974390428115672, 0.008828168905051226, 0.4551415779587389, 0.0, 0.0, 0.13121393826705308, 0.72839372076768, 0.9259041194233829, 0.5259278298060346, 0.3742039225620225, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8804743270622176, 0.3884445560568608, 2.356563640078288, 4.531853153996708, 0.2848593411083645, 0.23306673363411642, 0.31075564484548857, 0.2848593411083645, 1.0617484532220858, 0.3366519485826126, 1.0876447569592103, 0.05179260747424809, 0.18127412615986832, 9.241799016040732, 1.3464872738602391, 1.2852833068665914, 1.3464872738602391, 10.282266454932731, 0.7344476039237665, 0.4896317359491776, 0.30601983496823615, 0.30601983496823615, 0.0, 0.2448158679745888, 0.1224079339872944, 0.30601983496823615, 16.32710670445585, 4.34131160927728, 4.718816966605738, 1.415645089981721, 6.0400857172553435, 10.57015000519685, 3.3031718766240163, 0.9437633933211477, 0.8493870539890328, 0.28312901799634427, 0.5662580359926885, 0.7550107146569179, 0.5662580359926885, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5226113389451915, 0.14124630782302477, 1.0028487855434758, 0.8686647931116023, 0.16243325399647845, 0.042373892346907416, 0.14830862321417596, 0.2895549310372007, 2.380000286817967, 0.0918101000849661, 0.5296736543363428, 0.042373892346907416, 0.1836202001699322, 0.24708751112103508, 0.11404038974817002, 0.41814809574329015, 0.6652356068643253, 0.11404038974817002, 0.07602692649878001, 0.038013463249390006, 0.17106058462225504, 0.30410770599512005, 1.0073567761088351, 1.3114644821039554, 0.0, 0.07602692649878001, 0.13479765096917157, 0.03089112834710182, 0.15445564173550913, 0.42685922806904336, 0.05616568790382149, 0.0028082843951910746, 0.005616568790382149, 0.022466275161528597, 0.16007221052589127, 0.1432225041547448, 1.0952309141245191, 0.0028082843951910746, 0.008424853185573223, 4.802462166747292, 1.6008207222490975, 2.2411490111487358, 0.6403282888996389, 0.9604924333494587, 0.8004103611245488, 2.5613131555985555, 4.962544238972202, 0.8004103611245488, 0.0, 0.32016414444981944, 10.88558091129386, 4.802462166747292, 0.8048768905237356, 0.5083432992781488, 1.1225914525725786, 1.2708582481953723, 0.7201530073107107, 0.105904854016281, 1.694477664260496, 2.0121922263093395, 0.6142481532944298, 0.0635429124097686, 0.105904854016281, 0.6777910657041984, 5.464690467240099], [1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 70, 0, 28, 0, 58, 0, 68, 11, 0, 0, 69, 0, 65, 42, 0, 2, 0, 29, 0, 24, 0, 0, 0, 21, 0, 45, 0.36559885923686786, 0.0, 0.5936773717256718, 0.0, 0.5892132917858546, 0.0, 0.7451369407369084, 0.3042798758205967, 0.0, 0.0, 0.9352181597654748, 0.0, 0.9681193410499626, 0.9909896635987833, 0.0, 0.8296812832757854, 0.0, 0.3684965076032496, 0.0, 0.6684082681140452, 0.09817350484814202, 0.0, 0.0, 0.15587914845947926, 0.0, 0.19888170145418937, 0.4736154465790272, 0.0, 0.9237077912064525, 0.0, 0.6403335565656736, 0.0, 0.5151758373888019, 0.39730737687179685, 0.0, 0.0, 0.8182835004274275, 0.0, 0.25587429223125124, 0.15372734817830813, 0.0, 0.023922780582552483, 0.0, 0.44482416081119625, 0.0, 0.731337980489869, 0.8234639594713258, 0.0, 0.0, 0.2426274590600188, 0.0, 0.6653670026472732, 0.8258436814183158, 0.0, 0.28538731842009746, 0.0, 0.14246673557046508
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值