if name == 'main': # 实例化问题对象 problem = MyProblem() # 生成问题对象 # 快速构建算法 algorithm = ea.soea_DE_currentToBest_1_bin_templet( problem, ea.Population(Encoding='RI', NIND=20), MAXGEN=400, # 最大进化代数。 logTras=0) # 表示每隔多少代记录一次日志信息,0表示不记录。 algorithm.mutOper.F = 0.7 # 差分进化中的参数F。 algorithm.recOper.XOVR = 0.7 # 交叉概率。 # 先验知识 prophetVars = np.array([[2000, 2000, 2000, 2000, 2000, 2000]]) # 假设已知[0.4, 0.2, 0.4]为一组比较优秀的变量。 # # 求解 res = ea.optimize(algorithm, prophet=prophetVars, verbose=True, drawing=1, outputMsg=True, drawLog=True, saveFlag=True) print(res)我想把这段代码中绘图的数据保存在一个名叫date的Excel表格中,请给我完整的代码
时间: 2023-12-29 17:06:05 浏览: 153
遗传算法,背包问题_GA-Genetic-Algorithm-for-knapsack-problem.zip
以下是完整代码,其中绘图数据保存在名为“data”的Excel表格中:
```python
import numpy as np
import geatpy as ea
import pandas as pd
class MyProblem(ea.Problem): # 继承Problem父类
def __init__(self):
name = 'MyProblem' # 初始化name(函数名称,可以随意设置)
M = 1 # 初始化M(目标维数)
maxormins = [-1] # 初始化maxormins(目标最小最大化标记列表,-1表示最小化,1表示最大化)
Dim = 6 # 初始化Dim(决策变量维数)
varTypes = [1]*Dim # 初始化varTypes(决策变量类型,0表示实数,1表示整数)
lb = [1000]*Dim # 决策变量下界
ub = [5000]*Dim # 决策变量上界
lbin = [1]*Dim # 决策变量下边界是否包含
ubin = [1]*Dim # 决策变量上边界是否包含
# 调用父类构造方法完成实例化
super().__init__(name, M, maxormins, Dim, varTypes, lb, ub, lbin, ubin)
def aimFunc(self, pop): # 目标函数
Vars = pop.Phen # 得到决策变量矩阵
x1, x2, x3, x4, x5, x6 = Vars[:, [0]], Vars[:, [1]], Vars[:, [2]], Vars[:, [3]], Vars[:, [4]], Vars[:, [5]]
f = 1/(x1*x4*(x1+x2+x3)+x3) # 计算目标函数值,此处为单目标问题,仅有一个目标函数值,因此直接返回一个二维数组
return [f]
if __name__ == '__main__':
# 实例化问题对象
problem = MyProblem()
# 生成问题对象
# 快速构建算法
algorithm = ea.soea_DE_currentToBest_1_bin_templet(problem, ea.Population(Encoding='RI', NIND=20), MAXGEN=400, # 最大进化代数。
logTras=0) # 表示每隔多少代记录一次日志信息,0表示不记录。
algorithm.mutOper.F = 0.7 # 差分进化中的参数F。
algorithm.recOper.XOVR = 0.7 # 交叉概率。
# 先验知识
prophetVars = np.array([[2000, 2000, 2000, 2000, 2000, 2000]])
# 求解
res = ea.optimize(algorithm, prophet=prophetVars, verbose=True, drawing=1, outputMsg=True, drawLog=True, saveFlag=True)
print(res)
# 保存绘图数据到Excel表格
data = pd.DataFrame()
data['BestFitness'] = res.FitV_history_best
data['MeanFitness'] = res.FitV_history_mean
data['Generation'] = range(1, len(res.FitV_history_best)+1)
data.to_excel('data.xlsx', index=False)
```
注意,为了将绘图数据保存到Excel表格中,我们需要使用Python的pandas库,因此需要先安装pandas库。可以使用以下命令进行安装:
```python
!pip install pandas
```
此外,需要确保在运行代码前已经在代码所在的目录下创建了名为“data”的Excel表格。
阅读全文