请问用遗传算法解线性规划,用了很多scipy的算法了,都说无可行解,但matlab的fgoalattain能解出来,帮忙看看
import geatpy as ea
import numpy as np
import pandas as pd
# 构建问题
@ea.Problem.single
def evalVars(Vars): # 定义目标函数(含约束)
ObjV = np.sum(Vars) # 计算目标函数值
#x1 = Vars[0]
#x2 = Vars[1]
df = pd.read_csv("bf.dat", sep=" ", header=None)
df = df.dropna(axis=1, how='all') # 删除全是Nan的列
df = df.T
A = (df / (365 * 86400) )* 1000
A = A.values
b = np.array([2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3])
CV = np.dot(A, Vars)-b
return ObjV, CV
problem = ea.Problem(name='soea quick start demo',
M=1, # 目标维数
maxormins=[1], # 目标最小最大化标记列表,1:最小化该目标;-1:最大化该目标
Dim=8, # 决策变量维数
varTypes=[0,0,0,0,0,0,0,0], # 决策变量的类型列表,0:实数;1:整数
lb=[0, 0, 0,0,0,0,0,0], # 决策变量下界
ub=[np.inf, np.inf, np.inf,np.inf,np.inf, np.inf, np.inf,np.inf], # 决策变量上界
evalVars=evalVars)
# 构建算法
algorithm = ea.soea_SEGA_templet(problem,
ea.Population(Encoding='RI', NIND=1),
MAXGEN=50, # 最大进化代数。
logTras=1, # 表示每隔多少代记录一次日志信息,0表示不记录。
trappedValue=1e-6, # 单目标优化陷入停滞的判断阈值。
maxTrappedCount=10) # 进化停滞计数器最大上限值。
# 求解
res = ea.optimize(algorithm, seed=1, verbose=True, drawing=1, outputMsg=True, drawLog=True, saveFlag=True, dirName='result')