设施选址有哪些常用的模型及方法?

您所在的位置:网站首页 物流节点包括什么内容 设施选址有哪些常用的模型及方法?

设施选址有哪些常用的模型及方法?

2024-07-13 19:58:51| 来源: 网络整理| 查看: 265

作者:樵溪子,清华大学,清华大学深圳国际研究生院,清华-伯克利深圳学院,硕士在读

审校:刘兴禄,清华大学,清华大学深圳国际研究生院,清华-伯克利深圳学院,硕士在读

编辑:张瑞三,四川大学硕士在读,知乎账号:MunSum3

设施选址问题是经典的运筹优化问题,常见模型有:

覆盖问题(Covering Model);最大覆盖问题(Maximum Covering Model) ;p -中心问题(p-cernter Problem);p -扩散问题(p-dispersion Problem);p -中位问题(p-median Problem)

本文对以上5个模型进行了梳理,并给出了相应的算例、完整实现代码以及结果的可视化。本文可以为初学者提供较好的学习参考。

本文的模型参考自文献:

Ho-Yin Mak and Zuo-Jun Max Shen (2016), “Integrated Modeling for Location Analysis”, Foundations and Trends in Technology, Information and Operations Management: Vol. 9, No. 1-2, pp 1–152. DOI: 10.1561/0200000037一、覆盖问题(Covering Model)

1、问题描述

假设有一个需求点的位置集合和一个设施的位置集合,且已知每个设施的服务范围。在满足覆盖所有需求点顾客的前提下,选取若干个点建造设施,以使得建设总成本最小。

2、模型构建

(1) 参数

I :需求点位置集合;J :潜在设施位置集合;f_{j} :在 j 点建造设施的成本。a_{ij} :表示覆盖范围,其具体含义如下:

a_{i,j}= \begin{cases} 1, & 在j点建造设施能够覆盖需求点i \\ 0 , & 其他 \end{cases}

(2) 决策变量 X_{j}= \begin{cases} 1, & 在j点建造设施\\ 0, & 其他 \end{cases}

(3)整数规划模型 \begin{aligned} \min \quad &\sum_{j \in J} f_{j} X_{j} && \\ s.t. \quad &\sum_{j\in J}a_{i,j}X_{j} \geqslant 1 \quad &&\forall i \in I, \\ &X_{j} \in \{0,1\}, \quad &&\forall j \in J. \end{aligned}

3、代码实现

from gurobipy import * import random import numpy as np # Parameters num_points = 5 # I: set of the demand points num_facilities = 10 # J: set of possible facility location setup_cost = [3,2,3,1,3,3,4,3,2,4] # f: cost of locate each facility np.random.seed(0) cover = np.random.randint(2,size=(num_points,num_facilities)) # a:facility at j can cover point i # Create a new model m = Model("Covering Model") # Create variables select = m.addVars(num_facilities, vtype=GRB.BINARY, name='Select') # X # Add constraints m.addConstrs((quicksum((cover[i,j] * select[j]) for j in range(num_facilities)) >= 1 for i in range(num_points)), name='Cover') # Set objective m.setObjective(select.prod(setup_cost), GRB.MINIMIZE) m.optimize() for v in m.getVars(): if v.x > 0 : print('%s %g' % (v.varName, v.x)) print('obj:%g' % m.objVal)

4、运行结果

Gurobi Optimizer version 9.5.2 build v9.5.2rc0 (mac64[arm]) Thread count: 8 physical cores, 8 logical processors, using up to 8 threads Optimize a model with 5 rows, 10 columns and 30 nonzeros Model fingerprint: 0x0f7f480f Variable types: 0 continuous, 10 integer (10 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 4e+00] Bounds range [1e+00, 1e+00] RHS range [1e+00, 1e+00] Found heuristic solution: objective 6.0000000 Presolve removed 5 rows and 10 columns Presolve time: 0.00s Presolve: All rows and columns removed Explored 0 nodes (0 simplex iterations) in 0.00 seconds (0.00 work units) Thread count was 1 (of 8 available processors) Solution count 2: 3 6 Optimal solution found (tolerance 1.00e-04) Best objective 3.000000000000e+00, best bound 3.000000000000e+00, gap 0.0000% Select[3] 1 Select[8] 1 obj:3二、最大覆盖问题(Maximum Covering Model)

1、问题描述

假设有一个需求点的位置集合,且已知每个设施的服务范围、每个需求点的客户人数以及设施总数。在设施总数一定的前提下,选取建造设施的位置以及提供服务的站点,以使得被服务到的客户人数最大。

2、模型构建

(1) 参数

I :需求点位置集合;

P :设施总数 ;

h_{i} :在i点的客户人数

a_{ij}= \begin{cases} 1, & 在j点建造设施能够覆盖需求点i \\ 0 , & 其他 \end{cases}

(2) 决策变量 X_{i}= \begin{cases} 1, & 在i点建造设施\\ 0, & 其他 \end{cases} \\ Z_{i}= \begin{cases} 1, & 为i点提供服务\\ 0, & 其他 \end{cases}

(3)整数规划模型

\\ \begin{aligned} \text{max} & \sum_{i \in I} h_{i} Z_{i} &&\\ s.t. \quad &\sum_{i\in I}X_{i} = P, &&\\ &\sum_{j\in I}a_{ij}X_{j} \geq Z_{i}, \quad&&\forall i \in I, \\ &X_{i} ,Z_{i}\in \{0,1\}, \quad &&\forall i \in I. \end{aligned}

3、代码实现

from gurobipy import * import random import numpy as np # Parameters # Facility is the scarce resources, so num_points is bigger than num_located # Set of possible facility location is the set of the demand points ( J == I ) num_points = 10 # I: set of the demand points num_located = 5 # P: number of facility np.random.seed(0) num_people = np.random.randint(6,size = num_points) # h cover = np.random.randint(2,size=(num_points,num_points)) # a # Create a new model m = Model("Maximum Covering Model") # Create variables select = m.addVars(num_points, vtype=GRB.BINARY, name='Select') # X serve = m.addVars(num_points, vtype=GRB.BINARY, name='Serve') # Z # Add constraints m.addConstrs((quicksum((cover[(i,j)] * select[j]) for j in range(num_points)) >= serve[i] for i in range(num_points)), name='Cover_before_serve') m.addConstr((quicksum(select) == num_located), name='Num_limit') # addConstrs --> error: Missing Constraint Index # Set objective m.setObjective(quicksum(serve[i]*num_people[i] for i in range(num_points)), GRB.MAXIMIZE) m.write("lp--Max_Covering_Problem.lp") m.optimize() # Print results selected = [] served = [] for i in select.keys(): if select[i].x > 0: selected.append(i) if serve[i].x > 0: served.append(i) print("Selected position = ", selected) print("Served position = ", served) print('Max served number = %g' % m.objVal)

4、运行结果

Gurobi Optimizer version 9.5.2 build v9.5.2rc0 (mac64[arm]) Thread count: 8 physical cores, 8 logical processors, using up to 8 threads Optimize a model with 11 rows, 20 columns and 72 nonzeros Model fingerprint: 0xbd3d5b75 Variable types: 0 continuous, 20 integer (20 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [1e+00, 5e+00] Bounds range [1e+00, 1e+00] RHS range [5e+00, 5e+00] Found heuristic solution: objective 29.0000000 Explored 0 nodes (0 simplex iterations) in 0.00 seconds (0.00 work units) Thread count was 1 (of 8 available processors) Solution count 1: 29 Optimal solution found (tolerance 1.00e-04) Best objective 2.900000000000e+01, best bound 2.900000000000e+01, gap 0.0000% Selected position = [2, 3, 4, 5, 9] Served position = [0, 1, 3, 4, 5, 6, 7, 8, 9] Max served number = 29三、 p -中心问题( p -cernter Problem)

1、问题描述

假设有一个需求点的位置集合,且已知设施总数。在设施总数一定的前提下,确定在哪些需求点建造设施,以及需求点与设施的对应分配关系,使得所有需求点到达其所属设施的距离最大值最小。

2、模型构建

(1) 参数 I :需求点位置集合;

P :设施总数

d_{ij} : i 点与 j 点之间的距离

(2) 决策变量 X_{i}= \begin{cases} 1, & 在i点建造设施\\ 0, & 其他 \end{cases}

Y_{ij}= \begin{cases} 1, & 将i点分配给j点\\ 0, & 其他 \end{cases}

w : 所有需求点到达其所属设施的距离最大值。

(3)建模

\begin{aligned} \text{min} &\quad w &&\\ s.t. \quad &\sum_{i\in I}X_{i} = P, &&\\ &Y_{ij} \leq X_{j}, \quad&&\forall i,j \in I, \\ &\sum_{j\in I}Y_{ij} = 1, \quad &&\forall i \in I, \\ &\sum_{j\in I}d_{ij}Y_{ij} \leq w, \quad &&\forall i,j \in I, \\ &X_{i} ,Y_{ij}\in \{0,1\}, \quad &&\forall i,j \in I. \end{aligned}

3、代码实现

from itertools import product from gurobipy import * import numpy as np from math import sqrt import random import matplotlib.pyplot as plt # Parameters num_points = 10 random.seed(0) points = [(random.random(), random.random()) for i in range(num_points)] num_located = 2 # P: number of located facility in the end cartesian_prod = list(product(range(num_points), range(num_points))) # Compute distance def compute_distance(loc1, loc2): dx = loc1[0] - loc2[0] dy = loc1[1] - loc2[1] return sqrt(dx*dx + dy*dy) dist = {(i,j): compute_distance(points[i], points[j]) for i, j in cartesian_prod} # Create a new model m = Model("p-center Problem") # Create variables select = m.addVars(num_points, vtype=GRB.BINARY, name='Select') # X assign = m.addVars(cartesian_prod, vtype=GRB.BINARY, name='Assign') # Y omega= m.addVar(lb=0, ub=GRB.INFINITY, vtype=GRB.CONTINUOUS, name='Omega') # # Add constraints m.addConstr((quicksum(select) == num_located), name='Num_limit') m.addConstrs((assign[(i,j)] 0: assigned.append(i) print("Selected positions = ", selected) print("Assigned relationships = ", assigned) print('Min distance = %g' % m.objVal) # Plot node_facility = [] node_ponit = [] for key in select.keys(): if select[key].x > 0: node_facility.append(points[key]) else: node_ponit.append(points[key]) plt.figure(figsize=(4,4)) plt.title('p-center Problem(P=2,I=10)') plt.scatter(*zip(*node_facility), c='Red', marker=',',s=20,label = 'Facility') plt.scatter(*zip(*node_ponit), c='Orange', marker='o',s=15, label = 'Ponit') assignments = [p for p in assign.keys() if assign[p].x > 0.5] for p in assignments: pts = [points[p[0]], points[p[1]]] plt.plot(*zip(*pts), c='Black', linewidth=0.5) plt.grid(False) plt.legend(loc='best', fontsize = 10) plt.show()

4、运行结果

Gurobi Optimizer version 9.5.2 build v9.5.2rc0 (mac64[arm]) Thread count: 8 physical cores, 8 logical processors, using up to 8 threads Optimize a model with 112 rows, 111 columns and 401 nonzeros Model fingerprint: 0x1696fd10 Variable types: 1 continuous, 110 integer (110 binary) Coefficient statistics: Matrix range [1e-01, 1e+00] Objective range [1e+00, 1e+00] Bounds range [1e+00, 1e+00] RHS range [1e+00, 2e+00] Found heuristic solution: objective 4.4338834 Presolve removed 1 rows and 1 columns Presolve time: 0.00s Presolved: 111 rows, 110 columns, 310 nonzeros Found heuristic solution: objective 2.3073713 Variable types: 0 continuous, 110 integer (110 binary) Root relaxation: objective 1.895186e+00, 53 iterations, 0.00 seconds (0.00 work units) Nodes | Current Node | Objective Bounds | Work Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time * 0 0 0 1.8951858 1.89519 0.00% - 0s Explored 1 nodes (53 simplex iterations) in 0.01 seconds (0.00 work units) ... Best objective 1.895185783874e+00, best bound 1.895185783874e+00, gap 0.0000% Selected positions = [0, 2] Assigned relationships = [(0, 0), (1, 2), (2, 2), (3, 2), (4, 2), (5, 0), (6, 2), (7, 2), (8, 0), (9, 0)] Min distance = 1.89519

可视化的结果如下图:

图1- p-center Problem(P=2,I=10)

四、 p -扩散问题( p -dispersion Problem)

1、问题描述

假设有一个需求点的位置集合,且已知设施总数。在设施总数一定的前提下,确定在哪些需求点建造设施,使得所有需求点之间的距离最小值最大。 应用场景:发射井之间的距离越远,攻击者在一次打击中摧毁多个发射井的几率就越小。如果快餐加盟店分散在整个城市,总销售额可能会更高。

2、模型构建

(1) 参数 I :需求点位置集合;

P:设施总数;

d_{ij} :i点与j点之间的距离。

(2) 决策变量 D_{min} :一对节点之间的最短距离 X_{i}= \begin{cases} 1, & 在i点建造设施\\ 0, & 其他 \end{cases} \\ (3)建模

\begin{aligned} \text{max} & \quad D_{min} &&&& (1)\\ s.t. \quad &\sum_{i\in I}X_{i} = P, && && (2)\\ &X_{j}X_{k}d_{jk} \geq D_{min}X_{j}X_{k}, \quad &&\forall j,k \in I, && (3)\\ &X_{i} \in \{0,1\}, \quad &&\forall i \in I. && (4) \end{aligned}

注意到,上面模型中的约束(3)含有非线性项 X_{j}X_{k} 。该非线性项为两个0-1变量相乘。我们可以通过引入逻辑约束将其等价线性化,线性化后的约束如下:

\begin{aligned} (2-X_{j}-X_{k})M + d_{jk} \geq D_{min}, \forall j,k \in I. \end{aligned}

当然,也可以使用之前的推文中介绍的方法进行等价线性化。推文链接如下:

但是注意,本文提供的线性化方法,不需要引入额外的辅助变量,因此,推荐使用本文的方法。

3、代码实现

from itertools import product from gurobipy import * import numpy as np from math import sqrt import random import matplotlib.pyplot as plt # Parameters num_points = 10 random.seed(0) points = [(random.random(), random.random()) for i in range(num_points)] num_located = 2 # P: number of located facility in the end cartesian_prod = list(product(range(num_points), range(num_points))) M = 100 # Compute distance def compute_distance(loc1, loc2): dx = loc1[0] - loc2[0] dy = loc1[1] - loc2[1] return sqrt(dx*dx + dy*dy) dist = {(i,j): compute_distance(points[i], points[j]) for i, j in cartesian_prod if i != j } # Create a new model m = Model("p-dispersion Problem") # Create variables select = m.addVars(num_points, vtype=GRB.BINARY, name='Select') # X D_min = m.addVar(lb=0, ub=GRB.INFINITY, obj=1, vtype=GRB.CONTINUOUS, name='D_min') # Add constraints m.addConstr(quicksum(select) == num_located, name='Num_limit') m.addConstrs(((2 - select[i] - select[j])* M + dist[i,j] >= D_min for i,j in cartesian_prod if i != j), name='Min_dist') #m.addConstrs(((2 - select[i] - select[j])* M + (select[i] + select[j]) * dist[i,j] >= 2 * D_min for i,j in cartesian_prod if i != j), name='Min_dist') # equal to the formula above # Set objective m.setObjective(D_min, GRB.MAXIMIZE) m.write("lp-p_dispersion_Problem.lp") m.optimize() # Print results selected = [] for i in select.keys(): if select[i].x > 0: selected.append(i) print("Selected positions = ", selected) print('D_min = %g' % D_min.x) # Plot facility = [] for key in select.keys(): if select[key].x > 0: facility.append(points[key]) plt.figure(figsize=(4,4)) plt.title('p-dispersion Problem(P=5,I=10)') plt.scatter(*zip(*points), c='Pink', marker='o',s=15, label = 'Ponit') plt.scatter(*zip(*facility), c='Red', marker=',',s=20, label = 'Facility') plt.grid(False) plt.legend(loc='best', fontsize = 10) plt.show()

4、运行结果

Gurobi Optimizer version 9.5.2 build v9.5.2rc0 (mac64[arm]) Thread count: 8 physical cores, 8 logical processors, using up to 8 threads Optimize a model with 91 rows, 11 columns and 280 nonzeros Model fingerprint: 0xb07db2f0 Variable types: 1 continuous, 10 integer (10 binary) Coefficient statistics: Matrix range [1e+00, 1e+02] Objective range [1e+00, 1e+00] Bounds range [1e+00, 1e+00] RHS range [5e+00, 2e+02] Found heuristic solution: objective 0.1718957 Presolve removed 45 rows and 0 columns Presolve time: 0.00s Presolved: 46 rows, 11 columns, 145 nonzeros Variable types: 1 continuous, 10 integer (10 binary) Root relaxation: objective 1.001990e+02, 21 iterations, 0.00 seconds (0.00 work units) Nodes | Current Node | Objective Bounds | Work Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time 0 0 100.19898 0 10 0.17190 100.19898 - - 0s H 0 0 0.1817861 100.19898 - - 0s H 0 0 0.2341288 100.19898 - - 0s H 0 0 0.2601163 57.43551 - - 0s ... Optimal solution found (tolerance 1.00e-04) Best objective 2.601163466179e-01, best bound 2.601163466179e-01, gap 0.0000% Selected positions = [0, 4, 5, 6, 7] D_min = 0.260116

我们将求解结果进行可视化,结果如下。下图中,共有10个候选点,其中,红色的点为被选中的点。

图2-p-dispersion Problem(P=5,I=10)

五、 p -中位问题( p -median Problem)

1、问题描述

假设有一个需求点的位置集合,且已知每个需求点的客户人数和设施总数。在设施总数一定的前提下,确定在哪些需求点建造设施,以及需求点与设施的对应分配关系,使得所有需求点的客户到达其所属设施的距离总和最小。

2、模型构建

(1) 参数 I :需求点位置集合;

h_{i} :在i点的客户人数;

P :设施总数;

d_{ij} : i 点与 j 点之间的距离。

(2) 决策变量 X_{i}= \begin{cases} 1, & 在i点建造设施\\ 0, & 其他 \end{cases} \\ Y_{ij}= \begin{cases} 1, & 将i点分配给j点\\ 0, & 其他 \end{cases} (3)建模

\begin{aligned} \text{min} \quad &\sum_{i,j\in I}h_{i}d_{ij}Y_{ij}&& \\ s.t. \quad &\sum_{i\in I}X_{i} = P, && \\ &Y_{ij} \leq X_{j}, \quad&& \forall i,j \in I, \\ &\sum_{j\in I}Y_{ij} = 1, \quad &&\forall i \in I, \\ &X_{i} ,Y_{ij}\in \{0,1\}, \quad &&\forall i,j \in I. \end{aligned}

3、代码实现

from itertools import product from gurobipy import * import numpy as np from math import sqrt import random import matplotlib.pyplot as plt # Parameters num_points = 10 random.seed(0) points = [(random.random(), random.random()) for i in range(num_points)] num_located = 2 # P: number of located facility in the end cartesian_prod = list(product(range(num_points), range(num_points))) np.random.seed(0) num_people = np.random.randint(6,size = num_points) # h # Compute distance def compute_distance(loc1, loc2): dx = loc1[0] - loc2[0] dy = loc1[1] - loc2[1] return sqrt(dx*dx + dy*dy) dist = {(i,j): compute_distance(points[i], points[j]) for i, j in cartesian_prod} # Create a new model m = Model("p-median Problem") # Create variables select = m.addVars(num_points, vtype=GRB.BINARY, name='Select') # X assign = m.addVars(cartesian_prod, vtype=GRB.BINARY, name='Assign') # Y # Add constraints m.addConstr((quicksum(select) == num_located), name='Num_limit') m.addConstrs((assign[i,j] 0: selected.append(i) for i in assign.keys(): if assign[i].x > 0: assigned.append(i) print("Selected positions = ", selected) print("Assigned relationships = ", assigned) print('Objvalue = %g' % m.objVal) # Plot node_facility = [] node_ponit = [] for key in select.keys(): if select[key].x > 0: node_facility.append(points[key]) else: node_ponit.append(points[key]) plt.figure(figsize=(4,4)) plt.title('p-median Problem(P=2,I=10)') plt.scatter(*zip(*node_facility), c='Red', marker=',',s=20,label = 'Facility') plt.scatter(*zip(*node_ponit), c='Orange', marker='o',s=15, label = 'Ponit') assignments = [p for p in assign.keys() if assign[p].x > 0.5] for p in assignments: pts = [points[p[0]], points[p[1]]] plt.plot(*zip(*pts), c='Black', linewidth=0.5) plt.grid(False) plt.legend(loc='best', fontsize = 10) plt.show()

4、运行结果

Gurobi Optimizer version 9.5.2 build v9.5.2rc0 (mac64[arm]) Thread count: 8 physical cores, 8 logical processors, using up to 8 threads Optimize a model with 111 rows, 110 columns and 310 nonzeros Model fingerprint: 0x65ac48e4 Variable types: 0 continuous, 110 integer (110 binary) Coefficient statistics: Matrix range [1e+00, 1e+00] Objective range [3e-01, 4e+00] Bounds range [1e+00, 1e+00] RHS range [1e+00, 2e+00] Found heuristic solution: objective 12.1180054 Presolve time: 0.00s Presolved: 111 rows, 110 columns, 310 nonzeros Variable types: 0 continuous, 110 integer (110 binary) Found heuristic solution: objective 6.0892403 Root relaxation: objective 5.409383e+00, 58 iterations, 0.00 seconds (0.00 work units) Nodes | Current Node | Objective Bounds | Work Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time * 0 0 0 5.4093833 5.40938 0.00% - 0s Explored 1 nodes (58 simplex iterations) in 0.00 seconds (0.00 work units) Thread count was 8 (of 8 available processors) ... Best objective 5.409383252033e+00, best bound 5.409383252033e+00, gap 0.0000% Selected positions = [0, 7] Assigned relationships = [(0, 0), (1, 7), (2, 0), (3, 7), (4, 7), (5, 0), (6, 0), (7, 7), (8, 0), (9, 0)] Objvalue = 5.40938

运行结果的可视化如下:

p-median Problem(P=2,I=10)

参考文献Ho-Yin Mak and Zuo-Jun Max Shen (2016), “Integrated Modeling for Location Analysis”, Foundations and Trends in Technology, Information and Operations Management: Vol. 9, No. 1-2, pp 1–152. DOI: 10.1561/0200000037

关注我们运小筹公众号

运小筹公众号致力于分享运筹优化(LP、MIP、NLP、随机规划、鲁棒优化)、凸优化、强化学习等研究领域的内容以及涉及到的算法的代码实现。编程语言和工具包括Java、Python、Matlab、CPLEX、Gurobi、SCIP 等。欢迎广大同行投稿!欢迎大家关注我们的公众号“运小筹”以及粉丝群!

如果群满加不进去,可以加本文作者微信,然后备注姓名+机构+专业,然后拉您入群。

QQ群:

QQ群里有我们共享的一些书籍、论文、算例等资料,欢迎大家加入。

往期推文合集

第110篇:始于初心,回馈教育:运筹与智能决策教学平台——杉数CORIDM全新升级上线!

第109篇:求解器COPT实践详解丨数学规划视角下的分货优化解题思路

第108篇:论文代码复现 | 考虑客户位置移动的车辆路径规划问题:MIP模型详解及Java调用CPLEX求解的完整代码

第107篇:求解器COPT实践丨地铁乘务排班问题如何优化求解

第106篇:优化求解器 | 求解器加速的高级技能包:MIP模型初始解设置相关操作的超详细解读

第105篇:OR Talk Pool:【8月26日-9月3日】近期讲座、课程和研讨会

第104篇:OR Talk Pool:【8月17日-8月31日】近期研讨会、论坛和培训

第103篇:进展 | 清华大学SIGS戚铭尧及其合作者在顶级期刊Operations Research上发表竞争性设施选址问题的最新研究进展

第102篇:启发式算法和优化算法设计及调试技巧 | AIRS in the AIR“运筹优化”系列讲座

第101篇:OR Talk Pool【8月9日-8月31号】:近期研讨会、论坛和培训

第100篇:理论算法与精确算法 | AIRS in the AIR”运筹优化“系列讲座

第99篇:OR Talk Pool【7月27日-8月】:近期研讨会、论坛和培训

第98篇:优化求解器|Solution Pool用法的超详细解读(Gurobi):最优解与多个可行解的获取与分析(案例与代码实现)

第97篇:新书推荐《整数规划:模型、应用及求解》

第96篇:OR Talk Pool【7月6日-7月13日】:近期研讨会、论坛和培训

第95篇:从大规模的复杂应用,来解析杉数求解器的硬核能力

第94篇:优化 | 手把手教你用C++调用Gurobi求解CVRP:环境配置、数学模型及完整代码

第93篇:OR Talk Pool:近期研讨会、暑期学校和学术报告推荐

第92篇:优化求解器 | Gurobi的MVar类:矩阵建模利器、求解对偶问题的备选方案 (附详细案例+代码)

第91篇:【求解器】Gurobi中非线性约束的对偶值的获取:QCP、QCQP、SOCP | 以及求解器最优性理论证明

第90篇:优化 | 二部图最大匹配问题的精确算法详解(HK算法和匈牙利算法):一份让您满意的【理论介绍+代码实现】学习笔记

第89篇:优化算法 | Benders Decomposition: 一份让你满意的【入门-编程实战-深入理解】的学习笔记

第88篇:优化 | 史上最【皮】数学题求解的新尝试:一种求解器的视角 (Python调用Gurobi实现)

第87篇:优化 | 寻找新的建模视角——从直观解释对偶问题入手:以Cutting Stock Problem的对偶问题为例

第86篇:ORers‘ Bling Chat【03】 | 【高光聊天记录集锦】:运小筹读者群里那些热烈的讨论

第85篇:非线性优化 | 非线性问题线性化以及求解的详细案例及Python+Gurobi求解

第84篇:ORers' Bling Chat | 【高光聊天记录集锦-02】:运小筹读者群里那些热烈的讨论

第83篇:Machine-Learning–Based Column Selection for Column Generation

第82篇:最新!205页运小筹优化理论学习笔记发布(2021年9月--2022年3月)!

第81篇:【鲁棒优化】| 补充证明:为什么最优解一定满足取值等于绝对值(论文笔记:The Price of Robustness)

第80篇:【鲁棒优化】| 论文笔记:The Price of Robustness - 列不确定性模型部分的推导和一些思考

第79篇:ORers' Bling Chat | 【高光聊天记录集锦-01】:运小筹读者群里那些热烈的讨论

第78篇:优化| 手把手教你学会杉数求解器(COPT)的安装、配置与测试

第77篇:【教学视频】优化 | 线性化(2):连续变量 * 0-1变量的线性化

第76篇:【教学视频】优化 | 线性化:两个0-1变量相乘的线性化

第75篇:强化学习实战 | DQN和Double DQN保姆级教程:以Cart-Pole为例

第74篇:强化学习| 概念梳理:强化学习、马尔科夫决策过程与动态规划

第73篇:强化学习实战 | Q-learning求解最短路(SPP)问题

第72篇:鲁棒优化 | 以Coding入门鲁棒优化:以一个例子引入(二)

第71篇:鲁棒优化|基于ROME编程入门鲁棒优化:以一个例子引入(一)

第70篇:优化|含分式的非线性规划求解: 基于Outer Approximation的Branch-and-cut 算法及其Java实现

第69篇:科研工具 | 手把手教你玩转文献管理神器:Endnote

第68篇:相约深圳 | 2022 INFORMS 服务科学国际会议·征稿通知

第67篇:鲁棒优化| 利用rome求解鲁棒优化简单案例:以CVaR不确定性集为例

第66篇:机器学习 | 交通流特征工程小技巧和思考

第65篇:最新!145页运小筹优化理论学习笔记发布(2021年4月--9月)!

第64篇:优化 | 手把手教你用Python调用SCIP求解最优化模型

第63篇:优化 | 随机规划案例:The value of the stochastic solution

第62篇:工具 | draw.io: 科研流程示意图必备大杀器

第61篇:优化 | 开源求解器SCIP的安装与入门教程(Windows+Python)

第60篇:优化|Gurobi处理非线性目标函数和约束的详细案例

第59篇:让出租车更“懂”您的出行

第58篇:测试算例下载:《运筹优化常用模型、算法及案例实战:代码手册》

第57篇:鲁棒优化|分布式鲁棒优化转化为SOCP案例及代码实现(Python+RSOME)

第56篇:鲁棒优化 | 分布式鲁棒优化简单案例及实战(RSOME+Gurobi)

第55篇:【尾款+发货】|【代码手册】 《运筹优化常用模型、算法及案例实战:Python+Java

第54篇:深度强化学习之:PPO训练红白机1942

第53篇:简单装配线平衡问题

第52篇:【视频讲解】CPLEX的OPL语言:可视化的优化模型求解解决方案

第51篇:算法 | 基于英雄联盟寻路背景的A星算法及python实现

第50篇:【转发】清华大学深圳国际研究生院2021年物流工程与管理项目优秀大学生夏令营报名通知

第49篇:优化 | 精确算法之分支定界介绍和实现(附Python代码)

第48篇:【顶刊论文速递】综述:服务科学视角下的金融科技

第47篇:【重新发布】|《运筹优化常用模型、算法及案例实战:Python+Java实现》 【代码手册】 开始预购啦!!!

第46篇:智慧交通可视化:手把手教你用Python做出行数据可视化-osmnx 包入门教程

第45篇:优化 | Pick and delivery problem的介绍与建模实现(二)

第44篇:推一个知乎学弱猹的公众号

第43篇:元启发式算法 | 遗传算法(GA)解决TSP问题(Python实现)

第42篇:优化|视频详解Python调用Gurobi的应用案例:TSP

第41篇:最新!213页运小筹优化理论系列笔记发布!

第40篇:运小筹第四期月刊发布!

第39篇:开源交通仿真平台SimMobility的安装教程

第38篇:浅谈 | P问题、NP问题、NPC问题、NP-Hard问题

第37篇:一份掏心掏肺的信息素养笔记分享

第36篇:强化学习|Q-learning (王者荣耀视角)

第35篇:优化|高级建模方法(Gurobi):线性化表达小技巧

第34篇:深度强化学习介绍 | Deep Q Network——理论与代码实现

第33篇:优化 | 列生成算法及Java调用cplex实现

第32篇:优化 | Pick and delivery problem的简介与建模实现(一)

第31篇:最新!运小筹月刊-1月份发布!

第30篇:“Learn to Improve”(L2I):ICLR文章分享 | 运用RL解决VRP问题

第29篇:线性规划求解小程序 | 基于Python 的Cplex 求解器图形化界面

第28篇:运筹学与管理科学TOP期刊揭秘 —TR系列

第27篇:Julia安装与配置Jupyter Notebook

第26篇:期刊征文| IEEE TRANSACTIONS应对COVID-19的特刊征文消息速递

第25篇:两阶段随机规划(Two-stage Stochastic Programming):一个详细的例子

第24篇:最新!运小筹月刊-12月份发布!

第23篇:Python调用Gurobi:Assignment Problem简单案例

第22篇:初识随机规划:一个小小例子

第21篇:机器学习运用到VRP的若干小知识

第20篇:运筹学与管理科学TOP期刊揭秘 —Service Science

第19篇:手把手教你用Python实现Dijkstra算法(伪代码+Python实现)

第18篇:运筹学与管理科学大揭秘—TOP期刊主编及研究方向一览

第17篇:优化 | 手把手教你用Python实现动态规划Labeling算法求解SPPRC问题

第16篇:代码 | 运小筹GitHub项目上线啦,快来标星收藏吧!!

第15篇:最新!运小筹月刊首次发布!

第14篇:优化| 手把手教你用Python实现Dijkstra算法(附Python代码和可视化)

第13篇:优化|手把手教你用Python调用Gurobi求解最短路问题

第12篇:优化| 手把手教你用Java实现单纯形法

第11篇:优化| 手把手教你用Python调用Gurobi求解VRPTW

第10篇:优化 | 两阶段启发式算法求解带时间窗车辆路径问题(附Java代码)

第9篇:Java调用cplex求解运输问题

第8篇:优化 | 如何优雅地写出大规模线性规划的对偶

第7篇:优化 | TSP中两种不同消除子环路的方法及Callback实现(Python调用Gurobi求解)

第6篇:元启发式算法 | 禁忌搜索(Tabu Search)解决TSP问题(Python代码实现)

第5篇:论文代码复现 | 无人机与卡车联合配送(Python+Gurobi)

第4篇:优化|Shortest Path Problem及其对偶问题的一些探讨(附Python调用Gurobi实现)

第3篇:可视化|Python+OpenStreetMap的交通数据可视化(二):OpenStreetMap+Python画城市交通路网图

第2篇:优化|最速下降法:详细案例+Python实现

第1篇:Python+networkX+OpenStreetMap实现交通数据可视化(一):用OpenStreetMap下载地图数据

作者:樵溪子,清华大学,清华大学深圳国际研究生院,清华-伯克利深圳学院,硕士在读

审校:刘兴禄,清华大学,清华大学深圳国际研究生院,清华-伯克利深圳学院,硕士在读

编辑:张瑞三,四川大学硕士在读,知乎账号:MunSum3

编辑于 2022-09-26



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭