sga_mps_real_templet
多种群独立进化单目标编程模板(实值编码)
问题
max=2*x1+3*x2;
x1+2*x2<=8;
4*x1<=16;
4*x2<=12;
代码(aimfuc)
import numpy as np
def aimfuc(Phen, LegV):
x1 = Phen[:, [0]]
x2 = Phen[:, [1]]
f = 2 * x1 + 3 * x2
# 约束条件
idx1 = np.where(x1 + 2 * x2 > 8)[0]
exIdx = np.unique(np.hstack([idx1])) # 得到非可行解在种群中的下标
LegV[exIdx] = 0 # 对非可行解作出标记,使其在可行性列向量中对应的值为0
return [f, LegV]
代码(main)
# -*- coding: utf-8 -*-
"""
执行脚本main.py
描述:
该demo是展示如何计算带等式约束的单目标优化问题:
max=2*x1+3*x2;
x1+2*x2<=8;
4*x1<=16;
4*x2<=12;
其中目标函数和约束条件写在aimfuc.py文件中,适应度罚函数写在罚函数文件punishing.py中
本案例通过降维的方法,将等式约束化成了不等式约束,大大拓宽了可行解的空间,方便遗传算法求解
此外,本案例展示了利用多种群竞争的进化