补全右侧装饰器函数让a_function函数在运行之前打印“开始装饰”,运行之后打印“” def w1(func):结束装饰。 @w1 def a_function(var1,var2): printf(var1+var2) a_function(100,90)
时间: 2024-02-26 16:57:01 浏览: 71
可以使用以下代码实现:
```
def w1(func):
def wrapper(*args, **kwargs):
print("开始装饰")
result = func(*args, **kwargs)
print("结束装饰")
return result
return wrapper
@w1
def a_function(var1, var2):
print(var1 + var2)
a_function(100, 90)
```
运行结果为:
```
开始装饰
190
结束装饰
```
相关问题
import numpy as np import pandas as pd from scipy.optimize import minimize from pygad import GA 读取数据 stations = pd.read_excel("附件 1:车站数据.xlsx") section_time = pd.read_excel("附件 2:区间运行时间.xlsx") OD_flow = pd.read_excel("附件 3:OD 客流数据.xlsx") section_flow = pd.read_excel("附件 4:断面客流数据.xlsx") other_data = pd.read_excel("附件 5:其他数据.xlsx") 参数设定 w1, w2, w3, w4 = 0.25, 0.25, 0.25, 0.25 目标函数 def fitness_function(solution, solution_idx): n1, n2 = solution D1, D2 = other_data["大交路运营里程"].values[0], other_data["小交路运营里 "].values[0] C_fixed = other_data["固定成本系数"].values[0] * (n1 + n2) C_variable = other_data["变动成本系数"].values[0] * (n1 * D1 + n2 * D2) T_wait = calculate_wait_time(n1, n2) T_onboard = calculate_onboard_time(n1, n2) cost = w1 C_fixed + w2 C_variable + w3 T_wait + w4 T_onboard return 1 / cost 计算等待时间 def calculate_wait_time(n1, n2): # 假设根据实际情况计算等待时间 T_wait = 0 return T_wait 计算在车时间 def calculate_onboard_time(n1, n2): # 假设根据实际情况计算在车时间 T_onboard = 0 return T_onboard 遗传算法求解 ga_instance = GA(num_generations=100, num_parents_mating=5, fitness_func=fitness_function, sol_per_pop=10, num_genes=2, gene_space=[(1, 20), (1, 20)], parent_selection_type="rank", keep_parents=2, crossover_type="single_point", mutation_type="random", mutation_percent_genes=10) ga_instance.run() solution, solution_fitness, _ = ga_instance.best_solution() n1, n2 = int(solution[0]), int(solution[1]) print(f"安排大交路列车开行的数量:{n1}") print(f"安排小交路列车开行的数量:{n2}")
这段代码是一个基于遗传算法求解的交通调度问题的代码。其中,读取了一些数据,包括车站数据、区间运行时间、OD客流数据、断面客流数据和其他数据。设置了一些参数,如权重系数和交路运营里程等。定义了目标函数,其中通过计算固定成本、变动成本、等待时间和在车时间来计算总成本,然后通过倒数的方式将总成本转化为适应度值。定义了两个子函数,用于计算等待时间和在车时间。最后使用遗传算法求解,并输出最优解,即安排大交路列车开行的数量和安排小交路列车开行的数量。
动态化梯度下降可视化3D其中loss=w12+w22,初始化w1=1,w2=3,学习率为0.1,并3D可视化动态下降,3D可视化的x轴为w1,y为w2,z为loss,python代码实现
动态可视化梯度下降的过程通常涉及使用Python库如`matplotlib`、`numpy`以及优化算法库,这里我们可以使用`scipy.optimize`中的`minimize`函数来进行优化,然后利用`plotly`进行3D图的绘制。以下是一个简单的Python代码示例:
```python
import numpy as np
from scipy.optimize import minimize
import plotly.graph_objs as go
import plotly.express as px
# 初始化参数
w1 = 1
w2 = 3
learning_rate = 0.1
objective_func = lambda x: x[0]**2 + x[1]**2 # Loss function (L2 norm)
# 梯度下降优化
def gradient_descent(x, learning_rate, num_iterations):
for _ in range(num_iterations):
grad = np.array([2 * x[0], 2 * x[1]]) # Gradient at current point
x -= learning_rate * grad
return x
num_iterations = 100 # 迭代次数
initial_point = [w1, w2]
optimized_w = gradient_descent(initial_point, learning_rate, num_iterations)
# 计算损失值
loss = objective_func(optimized_w)
# 创建3D数据点
data = [[optimized_w[0], optimized_w[1], loss]]
# 3D散点图
fig = go.Figure(data=[go.Scatter3d(
x=[data[0][0]],
y=[data[0][1]],
z=[data[0][2]],
mode='markers',
marker=dict(size=10, color='red', opacity=0.8)
)])
# 添加3D网格
x_range = np.linspace(-5, 5, 100) # 范围设置
y_range = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x_range, y_range)
Z = X**2 + Y**2 # 计算每个网格点的loss
surf = go.Surface(x=X, y=Y, z=Z, opacity=0.7)
fig.add_trace(surf)
fig.update_layout(scene=dict(xaxis_title="w1", yaxis_title="w2", zaxis_title="Loss"))
# 显示图表
fig.show()
阅读全文