我有一个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) 我正在使用 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
我有一个使用 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)