位面之子算法 - The Chosen One Algorithm
最近书荒,想找点小说看,却发现没有什么能够耐心看下去的。
想要自己去写小说,却又发现动笔写大纲,塑造人物,建立剧情的前后关系,又是极其麻烦。
写游戏嘛?嘛,算了算了,代码块太多,本喵太懒
怎么办!干脆直接Simulation好了!说干就干!咱们这就模拟一个小说里强者为尊的世界!
实现语言,当然是简单便捷的Matlab!
声明:本代码为本人提出,仅供娱乐之用,欢迎转载,但请保留头部签名协议,感谢!
首先,这个世界需要规定一些参数:
%%% @author: RaZNeo
%%% @license: MIT License
%%% @contact: raznexo@gmail.com
%%% @file: main.m
%%% @time: 2021/7/21 13:28
%%% @desc: Happy Coding
%%% 清理门户:一屋不扫,何以扫天下?
close all; clear; clc;
%%% 位面指标
dim = 20;
%%% 位面人口
npop = 1000;
%%% 强者数量,能力范围,初始化强者身份数据库
numPowerfull = 20;
numAbilityRange = 0.15;
powerFullLibrary = zeros(numPowerfull,1);
%%% 位面年代
currentYear = 1650;
%%% 位面之子产生间隔
intervalOccur = 16; %每16年产生一位位面之子带领位面走向繁荣
%%% 凡人学习能力
aveAbility = 0.4;
%%% 凡人榜样数量
target = 3;
%%% 位面淘汰概率
elimiProb = 0.3;
%%% 位面发展值上下限
upp = 20 * ones(1,dim);
low = -20 * ones(1,dim);
然后高阶文明开始了游戏(他们规定了一个目标函数,大家为了这个目标而纷争不断)
%%% 高维度文明在本位面展开的游戏
objFun = @(x) sum(x.^2 + 3.*x - 15);
%%% 高维度文明洒下原始文明的种子
historyRec = zeros(currentYear,1);
bestManHistory = zeros(currentYear,dim);
x = ones(npop,1)*low + ...
(ones(npop,1)*(upp-low)).*rand(npop,dim);
for i=1:1:npop
fit(i) = objFun(x(i,:));
end
[historyRec(1),idxPowerMax] = min(fit);
powerMan = x(idxPowerMax