小编Jos*_*utz的帖子

在 AlertDialog 小部件顶部显示 SnackBar

我有一个AlertDialog小部件,当您点击其文本时,它会显示 SnackBar。SnackBar 当前显示AlertDialog在屏障后面的背景中。我希望 Snackbar 显示在透明AlertDialog屏障的顶部。我正在寻求的行为可以在 Flutter 中实现吗?我创建了一个全新的 Flutter 应用程序,仅包含用于说明下面用例的相关代码以及屏幕截图。

Main.dart 要点

@override
Widget build(BuildContext context) {
  WidgetsBinding.instance!.addPostFrameCallback((_) async {
    showDialog(
      context: context,
      builder: (BuildContext dialogContext) => AlertDialog(
        content: GestureDetector(
          onTap: () {
            ScaffoldMessenger.of(dialogContext).showSnackBar(SnackBar(
              content: const Text('snack'),
              duration: const Duration(seconds: 1),
              action: SnackBarAction(
                label: 'ACTION',
                onPressed: () {},
              ),
            ));
          },
          child: Center(
            child: Text('Show SnackBar!'),
          ),
        ),
      ),
    );
  });
  // This method is rerun every time setState is called, for instance as done …
Run Code Online (Sandbox Code Playgroud)

dart flutter flutter-layout

17
推荐指数
3
解决办法
2万
查看次数

Google OR-Tools TSP 跨越多天的开始/停止时间

我正在使用 Google OR-Tools 在几天内优化单个车辆的路线。

我在尝试着:

  • 能够指定优化路由的天数。
  • 能够指定每天的开始位置和结束位置。
  • 能够指定每天的开始时间和结束时间。

我有一组 40 个位置。对于我想包含在我的优化天数范围内的每一天,我将开始和结束位置添加到矩阵中。所以如果我想优化一天,我的矩阵中总共会有 42 个位置。如果我想优化两天,我的矩阵中总共会有 44 个位置。等等。模式是这样的:

1 Day:
Matrix = [[start day 1], [end day 1], [location], [location], ... ]

2 Days:
Matrix = [[start day 1], [end day 1], [start day 2], [end day 2], [location], [location], ... ]

3 Days:
Matrix = [[start day 1], [end day 1], [start day 2], [end day 2], [start day 3], [end day 3], [location], [location], ... ]
Run Code Online (Sandbox Code Playgroud)

我希望允许删除位置以实现可行的解决方案,并且只允许在指定的时间窗口内访问位置,我相信我已经成功实施了这两个选项。

我当前的实现可在此处以及GitHub 上找到。 …

python traveling-salesman python-3.x or-tools vehicle-routing

6
推荐指数
1
解决办法
558
查看次数

如何使用 Google OR 工具添加析取、设置惩罚并防止某些位置在 VRPTW 中被删除?

我有一个使用 Google 的 OR Tools python 库实现的有效车辆路由问题(带时间窗口)解决方案。我有一个包含 15 个位置的时间矩阵以及每个位置的时间窗口。我还将访问每个地点的持续时间纳入每次访问的费用中。所有值均以秒为单位。我有意只用一辆车来解决这个问题(本质上是解决旅行推销员问题)。

如果位置阻止创建有效的解决方案,我不会尝试添加从解决方案中删除位置的功能。现在,如果我将每次访问的持续时间设置为 3600 秒,则无法访问所有 15 个位置。但是,如果我将每次访问的持续时间设置为 900 秒,那么所有 15 个位置都可以找到解决方案。我想添加一个析取项,以允许在这些较长的持续时间内创建解决方案,并且只需从解决方案中删除一个位置即可避免失败。

我不想从解决方案中删除一些位置,因此我给了它们极大的惩罚以确保它们不会被删除,而其他位置我则指定为零的惩罚。但现在,所有其他地点都被放弃,因为它们的罚款为零 - 我认为这是因为罚款小于交通成本,但我不完全确定这是否确实是原因。我应该如何允许从解决方案中删除位置,但防止其他位置可删除?

现在我添加的唯一代码是:

# Allow to drop nodes.
for node in range(1, len(Penalties)):
  routing.AddDisjunction([manager.NodeToIndex(node)], Penalties[node])
Run Code Online (Sandbox Code Playgroud)

来源

from ortools.constraint_solver import pywrapcp
from ortools.constraint_solver import routing_enums_pb2

Matrix = [
  [0, 557, 763, 813, 618, 822, 700, 1527, 112, 1011, 734, 551, 604, 1156, 732],             # Depot
  [523, 0, 598, 934, 607, 658, 535, 1529, 589, 857, 424, 475, …
Run Code Online (Sandbox Code Playgroud)

python python-3.x or-tools vehicle-routing

4
推荐指数
1
解决办法
2565
查看次数