• 大小: 7KB
    文件类型: .py
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: Python
  • 标签: GA  遗传算法  

资源简介

自己写的改进遗传算法的python程序。

资源截图

代码片段和文件信息

from __future__ import division
import numpy as np
import matplotlib.pyplot as plt
import math
#C是时间耗费矩阵
C=[[1042226][81013168][20642513][41210811][858216]]
CS=[[[20100][02001][21000][10010][00022]]
    [[02220][10230][02000][20004][50000]]
    [[11010][00000][20220][02300][05003]]
    [[00002][01020][00003][30131][52400]]
    [[00101][20033][00000][03100][20360]]]
S=[34346]
def aimFunction(X):
    A=[]
    startTime=[00000]  #各条生产线的结束时间
    for i in range(5):       #考虑各组件在同一条生产线上生产
        A.append([startTime[X[i]]startTime[X[i]]+C[i][X[i]]])
        startTime[X[i]]+=C[i][X[i]]
    for i in range(5):               #考虑各组件工序顺序要求
        if i == 1:
            if X[i] < 4 and A[i][0] < A[i-1][1]:  #在ABCD生产线上若1号组件在0号组件结束前开始生产调整时间
                cha=A[i-1][1]-A[i][0]
                A[i][1] += cha
                A[i][0]=A[i-1][1]
                for j in range(25):
                    if X[j] == X[i]:
                        A[j][0]+=cha
                        A[j][1]+=cha
        elif i == 2:
            if X[i] == 1 and A[i][0] < A[i-1][1]:
                cha=A[i-1][1]-A[i][0]
                A[i][0] = A[i - 1][1]
                A[i][1]+=cha
                for j in range(35):
                    if X[j] == X[i]:
                        A[j][0]+=cha
                        A[j][1]+=cha
            elif (X[i] == 2 or X[i] == 4) and (A[i][0]                cha=A[0][1]-A[i][0]
                A[i][0] = A[0][1]
                A[i][1] += cha
                for j in range(35):
                    if X[j] == X[i]:
                        A[j][0]+=cha
                        A[j][1]+=cha
        elif i==3:
            if X[i] == 0 and A[i][0] < A[i-1][1]:
                cha=A[i - 1][1] - A[i][0]
                A[i][0] = A[i - 1][1]
                A[i][1] += cha
                for j in range(4 5):
                    if X[j] == X[i]:
                        A[j][0] += cha
                        A[j][1] += cha
            elif (X[i] == 1 or X[i] == 4) and A[i][0] < A[1][1]:
                cha=A[1][1] - A[i][0]
                A[i][0] = A[1][1]
                A[i][1] += cha
                for j in range(4 5):
                    if X[j] == X[i]:
                        A[j][0] += cha
                        A[j][1] += cha
            elif (X[i] == 2 or X[i] == 3) and (A[i][0] < max(A[1][1]A[2][1])):
                cha=max(A[1][1]A[2][1])-A[i][0]
                A[i][0] = max(A[1][1]A[2][1])
                A[i][1] += cha
                for j in range(4 5):
                    if X[j] == X[i]:
                        A[j][0] += cha
                        A[j][1] += cha
        elif i==4:
            if X[i]==0 & A[i][0]                cha=max(A[1][1] A[3][1]) - A[i][0]
    

评论

共有 条评论