小编Rom*_*ron的帖子

如何在or-tools中定义复杂的目标函数?

我想知道如何使用 or-tools 定义复杂的目标函数(如果可能的话)。

下面的基本示例展示了如何使用 python 中的 Or-tools 解决基本线性问题:

solver = pywraplp.Solver('lp_pricing_problem', pywraplp.Solver.GLOP_LINEAR_PROGRAMMING)

# Define variables with a range from 0 to 1000.
x = solver.NumVar(0, 1000, 'Variable_x')
y = solver.NumVar(0, 1000, 'Variable_y')

# Define some constraints.
solver.Add(x >= 17)
solver.Add(x <= 147)
solver.Add(y >= 61)
solver.Add(y <= 93)

# Minimize 0.5*x + 2*y
objective = solver.Objective()
objective.SetCoefficient(x, 0.5)
objective.SetCoefficient(y, 2)
objective.SetMinimization()

status = solver.Solve()

# Print the solution
if status == solver.OPTIMAL:
    print("x: {}, y: {}".format(x.solution_value(), y.solution_value())) # x: 17.0, …
Run Code Online (Sandbox Code Playgroud)

python linear-programming least-squares or-tools objective-function

5
推荐指数
1
解决办法
4545
查看次数

如何从同一个网站优化多个importxml?

我有一个 Google 表格,其中行是产品,列是有关这些产品的信息(材料、颜色、价格等)。

这些信息是使用函数 IMPORTXML 和相应的 xpath 查询来检索的。在以下示例中,D 列是该产品的 URL。这些函数检索第 3 行产品的信息(玻璃、颜色和类型):

=IMPORTXML(D3,"//table[@class='info-table']/tr[th/text()[contains(.,'Glass')]]/td")
=IMPORTXML(D3,"//table[@class='info-table']/tr[th/text()[contains(.,'Color')]]/td")
=IMPORTXML(D3,"//table[@class='info-table']/tr[th/text()[contains(.,'Type')]]/td")
Run Code Online (Sandbox Code Playgroud)

对于每个产品,大约有 10 个列被检索,因此同一个 URL 有 10 个不同的函数 IMPORTXML。

当产品很少时,它可以正常工作,但当产品太多时,只会检索一些信息,而其他单元格保持冻结状态,值为“正在加载...”。

我发现的唯一解决方法是手动复制/粘贴检索到的值(Ctrl+C、Ctrl+Maj+v),然后解锁其他一些单元格并开始导入值。最后,我需要对所有单元格执行此操作,这需要很多时间。

  1. 为什么我的单元格在“加载...”中保持冻结状态?谷歌有限制吗?
  2. 我是否应该调整我的函数以优化流程,并在可能的情况下减少 IMPORTXML 函数的数量?
  3. 您有比我耗时的解决方法更好的解决方案吗?
  4. xpath 查询总是非常相似。是否可以使用预定义元素列表。然后使用其他 Google Sheet 函数获得相同的结果,但只有一个 IMPORTXML 函数

例如:

=IMPORTXML(D3,"//table[@class='info-table']/tr[th/text()[contains(.,{'Glass', 'Color', 'Type'})]]/td")
Run Code Online (Sandbox Code Playgroud)

optimization xpath google-sheets google-sheets-formula

3
推荐指数
1
解决办法
2990
查看次数