非线性整数计划的遗传算法matlab程序.doc
非线性整数计划的遗传算法MATLAB通常,非线性整数规划具有指数复杂性NP问题,如果约束比较复杂,MATLAB例如,优化工具箱和一些优化软件LINGO等等,往往不能应用,即使能应用也不能给出更令人满意的解决方案。此时需要为问题设计专门的优化算法。以下是应用于非线性整数规划的遗传算法编程实例。参考模型的形式和适应性函数的定义如下。这是一个具有20001决策变量的多目标非线性整数规划。编写和优化的目标函数如下,将多目标转化为单目标,采用简单的加权处理。FUNCTIONFITNESSFITNESSX,FARM,E,Q,W450策变量组成的450矩阵FARM当前存储细胞结构的种群包含个体XE450的系数矩阵Q450的系数矩阵W150的系数矩阵GAMMA098NLENGTHFARM种群规模F1ZEROS1,NF2ZEROS1,NFORI1NXXFARM{I}PPP1XX1QXXF1ISUMWPRODPPPF2ISUMSUMEXXENDPPP1X1QXF1SUMWPRODPPPF2SUMSUMEXFITNESSGAMMASUMMINSIGNF1F1ZEROS1,N1GAMMASUMMINSIGNF2F2ZEROS1,N对问题设计的遗传算法如下,模型约束的处理是重点FUNCTIONXP,LC1,LC2,LC3,LC4MYGAM,N,PMM遗传进化迭代次数N种群PM变异概率输出参数列表XP最优个体LC1子目标1的收敛曲线LC收敛曲线2子目标2LC收敛曲线的平均适应性函数LC4最佳适应性函数的收敛曲线参考调用格式XP,LC1,LC2,LC3,LC4MYGA50,40,第一步载入数据和变量LOADEQW载入三个系数矩阵E,Q,W输出变量初始化XPZEROS4,50LC1ZEROS1,MLC2ZEROS1,MLC3ZEROS1,MLC4ZEROS1,MBESTINF第二步是随机产生初始种群FARMCELL1,N用于存储种群的细胞结构K0WHILEK以下是合法个体的产生过程XZEROS4,50X每一列的1的个数随机决定FORI150RRANDCOLZEROS4,1IFR09RPRANDPERM4COLRP121ELSERPRANDPERM4COLRP131ENDX,ICOLEND以下是检查行和是否符合约束的过程,放弃不符合约束的过程TEMP1SUMX,2TEMP2FINDTEMP120IFLENGTHTEMP20KK1FARM{K}XENDEND以下是进化迭代过程COUNTER设置迭代计数器WHILECOUNTER第三步是双亲双子单点交叉NEWFARMCELL1,2N用于存储子代的细胞结构SERRANDPERMN两对配对表随机配对AFARM{SER1}取出父代ABFARM{SER2}取出父代BP0UNIDRND随机选择交叉点AA,1P0,B,P01END产生子代ABB,1P0,A,P01END产生子代BNEWFARM{2N1}A加入子代种群NEWFARM{2N}B以下循环重复上述过程FORI1N1AFARM{SERI}BFARM{SERI1}P0UNIDRND49AA,1P0,B,P01ENDBB,1P0,A,P01ENDNEWFARM{2I1}ANEWFARM{2I}BENDFARMFARM,NEWFARM复制新旧种群合并第四步FLAGONES1,3N标记向量,标记是否以下过程是检测新个体是否符合约束FORI13NXFARM{I}SUM1SUMX,1SUM2SUMX,2FLAG1FINDSUM10FLAG2FINDSUM14FLAG3FINDSUM220IFLENGTHFLAG1LENGTHFLAG2LENGTHFLAG30FLAGI0不符合约束的,用0标记ENDENDNNLENGTHFINDFLAG满足约束的个的约束,它必须大于或等于NNEWFARMCELL1,NN以下过程是消除不满主约束的个体KK0FORI13NIFFLAGI1KKKK1NEWFARM{KK}FARM{I}ENDEND以下过程是计算和存储当前种群中每个人的适应值SYZZEROS1,NNSYZZEROS1,NFORI1NNXNEWFARM{I}SYZIFITNESS2X,NEWFARM,E,Q,W调用适应值子函数ENDK以下是复制的选择,选择更好的N个体复制到下一代WHILEKMINSYZMINSYZPOSSYZFINDSYZMINSYZPOSPOSSYZ1KK1FARM{K}NEWFARM{POS}SYZKSYZPOSSYZPOSINFEND记录和更新,更新最优个体,记录收敛曲线的数据MINSYZMINSYZMEANSYZMEANSYZPOSFINDSYZMINSYZLC3COUNTER1MEANSYZIFMINSYZBESTMINSYZXPFARM{POS1}ENDLC4COUNTER1BESTPPP1XP1QXPLC1COUNTER1SUMWPRODPPPLC2COUNTER1SUMSUMEXP第五步变异FORI1NIFPMRAND由变异概率是否变异PM控制AAFARM{I}取出个体POSUNIDRND随机选择变异位RRANDCOLZEROS4,1IFR09RPRANDPERM4COLRP121ELSERPRANDPERM4COLRP131END以下是判断变异产生的新个体是否符合约束。如果不满意,变异将无效AA,POSCOLTEMP1SUMAA,2TEMP2FINDTEMP120IFLENGTHTEMP20FARM{I}AAENDENDENDCOUNTERCOUNTER1END第七步绘制收敛曲线图FIGURE1PLOTLC1XLABEL 迭代次数 YLABEL 子目标1的值 TITLE 子目标1的收敛曲线 FIGURE2PLOTLC2XLABEL 迭代次数 YLABEL 子目标2的值 TITLE 子目标2的收敛曲线 FIGURE3PLOTLC3XLABEL 迭代次数 YLABEL 适应函数的平均值 TITLE 收敛曲线的平均适应性函数 FIGURE4PLOTLC4XLABEL 迭代次数 YLABEL 适应函数的最优值 TITLE 收敛曲线的最佳适应性函数 贴出运行得到的收敛曲线