geatpy
geatpy copied to clipboard
Evolutionary algorithm toolbox and framework with high performance for Python
我要做一个决策变量很多的模型。所有决策变量取值为0、1。但是有28*69*11这么多个决策变量。 我定义了Dim=28*69*11 我想知道经过了 Vars = pop.Phen 转换成了决策变量矩阵,我想对变量矩阵进行控制 我想问,这个变量矩阵Vars是多少维的矩阵?
您好,我这边目前在构建CV矩阵时,由于目标函数是未来24小时的能耗,因此采用了循环来处理每一小时相同的代码(对于CV,在每个小时我都有两个约束,即对于24小时,共有2*24=48个约束,由于太麻烦,因此在定义aimFunc时我采用了循环形式,主要代码如下),不知道我这样写CV矩阵出错在哪里? ``` pop.CV = np.array([]) for i in range(24): # 共24小时 # 省略处理步骤 pop.CV = np.append(pop.CV, self.SOC - 1) #约束1 pop.CV = np.append(pop.CV, - self.SOC) #约束2 pop.CV = hstack(pop.CV) ```
写了一个循环多次调用,但第二次的时候就会卡住了,终止之后出现如下情况: File "/Users/bytedance/PycharmProjects/pythonProject/optimizeVar.py", line 46, in [population, obj_trace, var_trace] = myAlgorithm.run(prophetPop) # 执行算法模板,插入先知种群 File "/Users/bytedance/.local/lib/python3.5/site-packages/geatpy/templates/soeas/DE/DE_currentToBest_1_bin/soea_DE_currentToBest_1_bin_templet.py", line 65, in run return self.finishing(population) # 调用finishing完成后续工作并返回结果 File "/Users/bytedance/.local/lib/python3.5/site-packages/geatpy/Algorithm.py", line 319, in finishing ea.trcplot(self.obj_trace,...
关于约束修复问题
您好, 1. 我自己写了一个 Problem类,里面有 处理约束的问题,看了文档,发现咱们现在目前只是,用pop.cv 标注 违反的 粒子,并没有修复的接口是吧。 2. ![7AD9C4EF604D2A723CF08CBEEF3644EE](https://user-images.githubusercontent.com/110315882/191495133-0d7d8b5a-49c7-4d60-a7d5-5ca7f1a80210.jpg) 似乎 对于约束的修复就是在aimFunc 里面 自己来修复就可以了是吧 3. 在Problem的类中,有 lb和ub 作为上下限制。如果优化的问题,是某一个值要求约束在一个多边形区域内,lb和ub怎么设置。如果不设置或者为None,在继承类中,自己定义新的边界,可以吗? 谢谢!
涉及到的代码demo如下(均是文档中的代码): `# -*- coding: utf-8 -*- """MyProblem.py""" import numpy as np import geatpy as ea class MyProblem(ea.Problem): # 继承Problem父类 def __init__(self): name = 'BNH' # 初始化name(函数名称,可以随意设置) M = 2 #...
【已解决】原文往下翻 geatpy官方文档演示并行优化时,是单目标,并且没有约束的,所以有些地方我理解错了。 [**官方文档**](https://github.com/geatpy-dev/geatpy/tree/master/demo/soea_demo/soea_demo6) 后来重新理解了一遍,发现并行的原理其实就是,先**把种群**(比如NIND=200,就是200个决策变量)**全部输进subAimFunc里计算一遍,算出所有种群对应的目标函数值和约束值**(我们只能手动调节让这部分实现并行),然后在evalVars函数里,以numpy数组的形式返回所有目标函数值和约束值。 所以我把subAimFunc的代码改成了这样: ``` def subAimFunc(x): a, b, c = operation(x) ObjV_CV = np.hstack([a, b, c - 0.1]) return ObjV_CV # 目标函数值和约束值作为一个numpy数组一起返回 ``` 即:把目标函数和约束的值都放进一个numpy数组里,等后面在evalVars再把两部分拆开。 evalVars部分的代码如下: ``` def evalVars(Vars):...
请问能否结合pytorch来加速进化过程?
**Is your feature request related to a problem? Please describe.** A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] **Describe the solution you'd...
**Is your feature request related to a problem? Please describe.** A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] **Describe the solution you'd...