是否可以使用适应度值评估种群中的每个个体而不用如下伪代码找到概率
For all members of population
sum += fitness ( member)
End for
Loop until new population is full
Do this twice
Number = Random between 0 and sum
Currentfitness = 0.0
For each member in population
Currentfitness += fitness (member)
if Number > Currentfitness then select member
End for
End
Create offspring
End loop
Run Code Online (Sandbox Code Playgroud)
代码的以下部分是做什么的?
Do this twice
Run Code Online (Sandbox Code Playgroud)
我真的很困惑轮盘赌是如何选择一对父母的。有什么帮助吗?提前致谢
我正在使用 GA 来评估包含大约 40,000 个变量的向量的连续函数。目前我使用的总体规模为 200,其中每个总体成员都有 40,000 个变量。我正在使用 50 次迭代。
有了这些数字,GA 并没有让我真正接近最佳解决方案。我想知道是否有一种方法可以确定大型向量(40,000 个变量)的最佳总体大小和迭代次数。
我有 X 名学生,其中 X 是 6 的倍数。我现在想将学生分成 6 人一组。
我有一个函数可以衡量 6 人一组的“好”程度(假设它是一个目前以恒定时间运行的黑匣子)。通过将学生分开,然后对每个组调用我的函数来衡量其优点,然后总结每个组的优点,我就能够衡量一组特定组的“好”程度。
我正在尝试创建一种算法,以某种方式对学生进行分组,以使所有组的总优点最大化,并且没有组的个体优点低于某个值 y。换句话说,将学生分成 6 人一组,以在所有组的优度都高于 y 的约束下最大化总优度。
我预计运行该算法的学生数量 (X) 约为 36 人。
这个问题似乎是 NP 完全的,所以我同意采用启发式算法。我对此没有太多经验,但我认为某种遗传算法或模拟退火甚至贪婪算法可能会起作用,但我不确定从哪里开始我的研究。
有人可以指出我正确的方向吗?我做了一些研究,这个问题似乎与旅行商问题几乎相同(问题空间是学生/节点的所有排列),但我不认为我可以将 TSP 算法应用于此,因为“节点”的数量“(大约 36)对于任何有效的东西来说都是相当大的。
algorithm computer-science simulated-annealing greedy genetic-algorithm
Pyevolve 通常用于 python 2.7。有什么办法可以在 python 3 中安装和使用 pyevolve 吗?我知道还有另一个包 DEAP 用于与 python 3 兼容的遗传算法,但不知何故我必须使用 pyevolve。
我尝试过,但我认为它不受支持,所以 pip install pyevolve 抛出错误。
我正在 R(库 mco)上开发 NSGA2 包。
我的 NSGA2 代码需要永远运行,所以我想知道:
1)有没有办法限制解值的精度(例如,最多3个小数位)而不是无限?
2)如何设置等式约束(网上的似乎都是>=或<=比=)?不确定我做得是否正确。
我的整个相关代码供参考,以便于跟踪:https://docs.google.com/document/d/1xj7OPng11EzLTTtWLdRWMm8zJ9f7q1wsx2nIHdh3RM4/edit ?usp=sharing
此处复制的相关示例代码部分:
VTR = get.hist.quote(instrument = 'VTR',
start="2010-01-01", end = "2015-12-31",
quote = c("AdjClose"),provider = "yahoo",
compress = "d")
ObjFun1 <- function (xh){
f1 <- sum(HSVaR_P(merge(VTR, CMI, SPLS, KSS, DVN, MAT, LOE, KEL, COH, AXP), xh, 0.05, 2))
tempt = merge(VTR, CMI, SPLS, KSS, DVN, MAT, LOE, KEL, COH, AXP)
tempt2 = tempt[(nrow(tempt)-(2*N)):nrow(tempt),]
for (i in 1:nrow(tempt2))
{
for (j in 1:ncol(tempt2))
{
if (is.na(tempt2[i,j]))
{
tempt2[i,j] = …Run Code Online (Sandbox Code Playgroud) 查看 R 中 GA 包的文档
显示具有非支配解决方案的两个目标,我可以绘制散点图来说明它。
这是我使用不同颜色来显示解决方案集的示例:
但我读过这个github存储库,它的可视化方法非常好,可以使用网格来达到最佳解决方案,如下所示:

但没有任何绘制该图的参考代码。我已经尝试重建它但失败了。
任何建议或参考都是值得赞赏的!
为了更多地了解神经网络和 NEAT,我开始构建一个可以使用 NEAT 打乒乓球的 AI。然而,似乎在不同的世代中神经网络的输出并没有改变。我尝试使用配置文件并更改各种权重。然而,我已经没有主意了。
def main_game(genomes,config):
pygame.init()
WIN = pygame.display.set_mode(SIZE)
clock = pygame.time.Clock()
running = True
player1,player2 = Paddle(True), Paddle(False)
ball = Ball()
neat1 = neat.nn.FeedForwardNetwork.create(genomes[0][1],config)
neat2 = neat.nn.FeedForwardNetwork.create(genomes[1][1],config)
genomes[0][1].fitness = 0
genomes[1][1].fitness = 0
def activate(player1,ball,nn):
output = nn.activate((player1.x,player1.y,ball.x,ball.y))[0]
if output >= 0 and output <= 1/3:
player1.up()
elif output >= 1/3 and output <= 2/3:
player1.down()
while running:
clock.tick(30)
activate(player1,ball,neat1)
activate(player2,ball,neat2)
WIN.fill((0,0,0))
lose = ball.move()
if lose == 1:
genomes[0][1].fitness -=500 #genomes[0] = None
running = False …Run Code Online (Sandbox Code Playgroud) 通过 Anaconda 在 spyder 上运行 GA 代码,脚本运行到最后,就在运行井绘图仪之前(见下文):
# Well Plotter
pdf = matplotlib.backends.backend_pdf.PdfPages("ROP Log.pdf")
plt.figure(figsize=(5,21))
plt.plot(well_proposal['Pred_ROP'] , well_proposal['AHD'], c='r', label= 'Predicted ROP')
plt.ylim( bottom =max(well_proposal['AHD']), top =min(well_proposal['AHD']))
plt.xlim(right = 100, left = 0)
plt.title('ROP VS Along Hole Depth')
plt.ylabel("Along Hole Depth (m)")
plt.xlabel("ROP (m/hr)")
plt.grid(b= True, which='both')
plt.legend(loc='upper right')
plt.tight_layout()
pdf.savefig()
pdf.close()
Run Code Online (Sandbox Code Playgroud)
我收到以下错误“[SpyderKernelApp] 警告 | 没有这样的通信:04cfd510c9b811ea9e48b8e8562fb6fe”
尝试搜索错误,但似乎大多数人坚持使用 [IPKernelApp] 错误而不是 [SpyderKernelApp]
在 Mac OS Catalina 10.15.6 上工作
关于错误来源的任何想法?
我正在开发一个时间表应用程序.遗传算法与模拟退火的相对优势是什么?
我有这些针对我的情况的要点:
在一次,我们一次性分配最多(3名教师X 6小时)X(3班X每周工作35小时),我们正在迭代地建立时间表.
将会有不可能的状态,并且必须在没有应用程序卡住的情况下通知任何不可能的时间表 - 我们希望将此应用程序推向极限.
它必须以恒定时间返回结果或报告失败.
python ×3
r ×2
algorithm ×1
c# ×1
c#-4.0 ×1
greedy ×1
matplotlib ×1
optimization ×1
pyevolve ×1
python-2.7 ×1
python-3.x ×1
spyder ×1