基于城市车辆设备维修遗传算法解全局最优解数据处理基于城市车辆设备维修遗传算法解全局最优解数据处理
这个遗传算法解全局最优解主要是解决城市车辆维修费用采用哪种方式维修花费最少。这个遗传算法解全局最优解主要是解决城市车辆维修费用采用哪种方式维修花费最少。
以def开头的四个函数是数据处理的主要部分
1 获取方程组的左边部分(矩阵计算)
2 构造方程组右边部分
3 各个参数值求和部分
4 可视化评估最小值部分
算法函数调用部分
这五个模块就够了(sympy与scipy主要用来解非线性方程组)
import numpy
import scipy
from scipy.optimize import fsolve
import sympy
import matplotlib.pyplot as plt
四个函数处理矩阵
函数1:调取矩阵,生成方程组左边公式
'''将概率矩阵和初始费用矩阵,按照策略矩阵的排序,生成五个方程'''
def get_equation(tactics_dic, transfer_probability, initial_cost_list, x_list, f):
all_pw_list = [] for t in range(len(tactics_dic)):
f = f #f默认是0.9
tactics_project = tactics_dic[t] # 得到其中一个策略矩阵(5个数) 共四个
pw_list = []
for r in range(len(tactics_project)): # 遍历这五个数
if tactics_project[r] == 1: # 按照策略矩阵中的数确定初始花费取哪个值
initial_cost = initial_cost_list[0] #如果是1,则取50000
if r == 0: # 确定概率矩阵的行
sum_pw = 0
for j in range(len(transfer_probability[t])):
pw = x_list[j] * transfer_probability[t][r][j] #取第一个矩阵的第一个列表的第一个
sum_pw = sum_pw + pw #叠加
pw_list.append(initial_cost + f * (sum_pw)) #公式左边生成
elif r == 1:
sum_pw = 0
for j in range(len(transfer_probability[t])):
pw = x_list[j] * transfer_probability[t][r][j] sum_pw = sum_pw + pw
pw_list.append(initial_cost + f * (sum_pw))
elif r == 2:
sum_pw = 0
for j in range(len(transfer_probability[t])):
pw = x_list[j] * transfer_probability[t][r][j] sum_pw = sum_pw + pw
pw_list.append(initial_cost + f * (sum_pw))
elif r == 3:
sum_pw = 0
for j in range(len(transfer_probability[t])):
pw = x_list[j] * transfer_probability[t][r][j] sum_pw = sum_pw + pw
pw_list.append(initial_cost + f * (sum_pw))
elif r == 4:
sum_pw = 0
for j in range(len(transfer_probability[t])):
pw = x_list[j] * transfer_probability[t][r][j] sum_pw = sum_pw + pw
pw_list.append(initial_cost + f * (sum_pw))
elif tactics_project[r] == 2:
initial_cost = initial_cost_list[1] if r == 0:
sum_pw = 0
for j in range(len(transfer_probability[t])):
pw = x_list[j] * transfer_probability[t][r][j] sum_pw = sum_pw + pw
pw_list.append(initial_cost + f * (sum_pw))
elif r == 1:
sum_pw = 0
for j in range(len(transfer_probability[t])):
pw = x_list[j] * transfer_probability[t][r][j] sum_pw = sum_pw + pw
pw_list.append(initial_cost + f * (sum_pw))
elif r == 2:
sum_pw = 0
for j in range(len(transfer_probability[t])):
pw = x_list[j] * transfer_probability[t][r][j] sum_pw = sum_pw + pw
pw_list.append(initial_cost + f * (sum_pw))
elif r == 3:
sum_pw = 0
评论0
最新资源