题目描述:
from sympy import symbols,solve
#求解不等式组
x=symbols('x')
f1=(5/6)*x*0.01+0.833-0.90
f2=(10-x)*0.01*(5/6)+0.833-0.9
print(solve([f1<=0,f2<=0]))
f3=4*x+200-222
#求解等式
print(solve(4*x+200-222,x))
2:第二小问类似 但是不是换电站地址不同 需要设两个变量
from sympy import symbols,solve,linsolve
x,y=symbols('x y')
f1=0.833-0.9+0.01*x*(1/3)+0.05-0.01*y*0.5
f2=0.833-0.9+0.01*y*0.5+0.1*(1/3)-0.01*x*(1/3)
print(solve([f1,f2])) p
rint(linsolve([f1,f2],(x,y)))
3.4问类似
第一问部分源代码如下
import random #
导⼊模块
import pandas as pd
import numpy as np import matplotlib.pyplot as plt from datetime import datetime From sympy import symbols,solve,linsolve
x=symbols('x')
f1=(5/6)*x*0.01+0.833-0.90
f2=(10-x)*0.01*(5/6)+0.833-0.9
print(solve([f1<=0,f2<=0]))
f3=4*x+200-222 #求解等式
print(solve(4*x+200-222,x)) #
⼦程序:定义优化问题的⽬标函数 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" #
定义问题名称 YouCans, XUPT nVar = 2 # 给定⾃变量数量,
y=f(x1,..xn) xMin = [0, 0] xMax = [8, 8] tInitial = 100.0 tFinal = 1 13
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)) # 初始化,
创建数组
for v in range(nVar): # xInitial[v] = random.uniform(xMin[v], xMax[v]) #
产⽣ [xMin, xMax] 范围的随机实数 xInitial[v] = random.randint(xMin[v], xMax[v]) #
产⽣ [xMin, xMax] 范围的随机整数 #
调⽤⼦函数 cal_Energy 计算当前解的⽬标函数值 fxInitial = cal_Energy(xInitial, nVar, 1)
# m(k):惩罚因⼦,初值为 1
# ====== 模拟退⽕算法初始化 ====== xNew = np.zeros((nVar)) #
初始化,创建数组 xNow = np.zeros((nVar)) # 初
始化,创建数组 xBest = np.zeros((nVar)) #
初始化,创建数组 xNow[:] = xInitial[:] #
初始化当前解,将初始解置为当前解 xBest[:] = xInitial[:] # 初始化最优解,将当前解置为最优解 fxNow = fxInitial # 将初始解的⽬标函数置为当前值
如想了解更多可以私信