import math
import random
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime
# 子程序:定义优化问题的目标函数
def cal_Energy(X, nVar, mk): # # m(k):惩罚因子,随迭代次数 k 逐渐增大
p1 = (max(0, 6*X[0]+5*X[1]-60))**2
p2 = (max(0, 10*X[0]+20*X[1]-150))**2
fx = -(10*X[0]+9*X[1])
return fx+mk*(p1+p2)
# 子程序:模拟退火算法的参数设置
def ParameterSetting():
cName = "funcOpt" # 定义问题名称
nVar = 2 # 自变量数量 y=f(x1,x2,...xn)
xMin = [0, 0] #给定搜索空间的下限, x1_min, ... xn_min
xMax = [8, 7.5 ] # 给定搜索空间的上限 x1_max,..xn_max
tInitial = 100.0 # 设置初始退火温度
tFinal = 1 # 设置种子退火温度
alfa = 0.98
meanMarkov = 100 # Markov链长度 即内循环运行次数
scale = 0.5 # 定义搜索步长,也可设定为固定值或逐渐减小
return cName, nVar, xMin,xMax, tInitial, tFinal, alfa, meanMarkov, scale
def OptimizationSSA(nVar, xMin, xMax, tInitial, tFinal, alfa, meanMarkov, scale):
# ======初始化随机数发生器
randseed = random.randint(1,100)
random.seed(randseed) # 随机数发生器设置种子,也可设定为这指定整数
# =======随机产生优化问题的初始解
xInitial = np.zeros((nVar)) #初始化创建数组 【0, 0】
for v in range
python模拟退火算法求解规划问题
最新推荐文章于 2024-01-09 20:41:08 发布