```
Clear["Global`*"]
cp = 33.85 0.000000001;
cs = 33.92 0.000000001;
lp = 86.47 0.000001;
ls = 85.16 0.000001;
r1 = 0.03;
r2 = 0.05;
rp = 0.50;
rs = 0.43;
f = 95000;
w = 2 Pi f;
V = 48.8 0.9;
Z1 = r1 + (I w lp + 1/(I w cp) + rp);
Z2 = -rp - (I w lp - I w M);
Z3 = (-I M w);
Z4 = 2/(I w ce) + (I w M + rp + rs + I w ls);
Z5 = -rs - (I w ls - I w M);
Z6 = rl + (I w ls + rs + 1/(I w cs) + r2);
values = {M -> 44.5*0.000001, ce -> 0.00019180962063004538`,
rl -> 79.21626856036153`};
values1 = {i1 -> 3.742 - 0.000 I};
targetf[M_, ce_, rl_] :=
Evaluate[-((-V Z5^2 + V Z4 Z6)/(
Z3^2 Z4 - 2 Z2 Z3 Z5 + Z1 Z5^2 + Z2^2 Z6 -Z1 Z4 Z6)) - (i1 /.
values1)];
parentsnum = 5000;
kid0num = 10000;
ranges = {{44.5*10^-6, 44.51*10^-6}, {-10,
Log[10, 2*10^-8]}, {1*10^-9, 10*10^-9}, {-13,
Log[10, 1.5*10^-11]}, {60, 100}, {-6, Log[10, 1.5*10^-4]}};
LaunchKernels[16];
parentsDE =
SortBy[ParallelMap[{Norm[
targetf[#1 + I #2, #3 + I #4, #5 + I #6] & @@ #], #} &,
Table[{RandomReal[ranges[[1]]], 10^RandomReal[ranges[[2]]],
RandomReal[ranges[[3]]], 10^RandomReal[ranges[[4]]],
RandomReal[ranges[[5]]],
10^RandomReal[ranges[[6]]]}, {parentsnum}]], First];
(*初始化数据存储列表*)
generationData = {};
Do[(*纯差分变异*)
pairsDE =
Table[RandomSample[Reverse[#] -> #, 3], {kid0num}] &@
Range@Length@parentsDE;
kidDE =
Select[(parentsDE[[#1, 2]] +
RandomReal[{0.3, 0.7}] (parentsDE[[#2, 2]] -
parentsDE[[#3, 2]])) & @@@ pairsDE,
ranges[[1, 1]] <= #[[1]] <= ranges[[1, 2]] &&
10^ranges[[2, 1]] <= #[[2]] <= 10^ranges[[2, 2]] &&
ranges[[3, 1]] <= #[[3]] <= ranges[[3, 2]] &&
10^ranges[[4, 1]] <= #[[4]] <= 10^ranges[[4, 2]] &&
ranges[[5, 1]] <= #[[5]] <= ranges[[5, 2]] &&
10^ranges[[6, 1]] <= #[[6]] <= 10^ranges[[6, 2]] &];
(*联合变异*)baseDE =
Table[{RandomReal[ranges[[1]]], 10^RandomReal[ranges[[2]]],
RandomReal[ranges[[3]]], 10^RandomReal[ranges[[4]]],
RandomReal[ranges[[5]]], 10^RandomReal[ranges[[6]]]}, {kid0num}];
indexDE = RandomInteger[{1, 6}, {kid0num, 3}];
kidDE =
MapThread[
ReplacePart[#1, Thread[#3 -> #2[[#3]]]] &, {kidDE, baseDE,
indexDE}];
(*更新种群*)parentsDE =
SortBy[Join[parentsDE,
ParallelMap[{Norm[targetf @@ #], #} &, kidDE,
Method -> "CoarsestGrained"]], First][[;; parentsnum]];
(*记录当前代数据*)
AppendTo[generationData,
Join[parentsDE[[1, 2]], {parentsDE[[1, 1]],
Mean[First /@ parentsDE]}]];, {ii, 50}];
(*导出到Excel*)
headers = {"M实部", "M虚部(\[Times]10^?)", "ce实部", "ce虚部(\[Times]10^?)",
"rl实部", "rl虚部(\[Times]10^?)", "最优适应度", "平均适应度"};
Export["DE_Results.xlsx", Prepend[generationData, headers]]```最速梯度下降算法可以替换差分进化部分吗