运筹优化学习16:【电招问题】Dial-a-Ride问题模型及C#实现的VNS程序

简介: 运筹优化学习16:【电招问题】Dial-a-Ride问题模型及C#实现的VNS程序

1 DARP

1.1 问题描述

有k辆容量不同的汽车,为一组包含起点和终点运输需求的顾客提供运输服务。

定义节点集合gif.gif,前n个节点为起点、后n个节点为目的地

弧段集合:gif.gif

对于弧段gif.gif有运输成本gif.gif和旅行时间gif.gif

节点具有出发时间窗gif.gif,和抵达时间窗gif.gif

具有需求量gif.gif

当顾客i被车辆j拾取时,产生成本gif.gif

卡车返回车场的最晚时间gif.gif

1.2 约束条件


每辆卡车从车场出发并最终返回,每个车辆访问每个弧段仅一次

gif.gif必须在gif.gif之前

任一点的gif.gif不大于车辆容量

出发和抵达时间窗必须被满足


所有车辆在T之前返回


1.3 目标函数

考虑运输成本和顾客偏好的成本最小

2 手算示例


20191202104202637.png

2019120210435913.png

2019120210430835.png

3 C#的实现

3.1 数据准备


20191202104612328.png20191202104855446.png


3.2 程序调用

exe路径:"F:\darp.exe"

算例文件路径:"F:\genIns.darp"

20191202110054527.png

可执行文件点这里启发式算法,结果并不稳定

20191202110910679.png





相关文章
|
4月前
|
C# 开发者
C# 9.0中的模块初始化器:程序启动的新控制点
【1月更文挑战第14天】本文介绍了C# 9.0中引入的新特性——模块初始化器(Module initializers)。模块初始化器允许开发者在程序集加载时执行特定代码,为类型初始化提供了更细粒度的控制。文章详细阐述了模块初始化器的语法、用途以及与传统类型初始化器的区别,并通过示例代码展示了如何在实际项目中应用这一新特性。
|
4月前
|
编译器 C# 开发者
C# 9.0中的顶级语句:简化程序入口的新特性
【1月更文挑战第13天】本文介绍了C# 9.0中引入的顶级语句(Top-level statements)特性,该特性允许开发者在不使用传统的类和方法结构的情况下编写简洁的程序入口代码。文章详细阐述了顶级语句的语法、使用场景以及与传统程序结构的区别,并通过示例代码展示了其在实际应用中的便捷性。
|
7月前
|
开发框架 .NET C#
利用WinDbg分析C#程序产生的转储文件
利用WinDbg分析C#程序产生的转储文件
|
7月前
|
C# C++
VS调试C#程序产生的dump
VS调试C#程序产生的dump
|
7月前
|
C#
C#程序Debug文件夹可以运行,无法调试
C#程序Debug文件夹可以运行,无法调试
|
11天前
|
前端开发 Java C#
C#程序启动后乱码(通过idea启动)
C#程序启动后乱码(通过idea启动)
14 0
|
16天前
|
缓存 算法 测试技术
优化 C#编程性能的策略
【4月更文挑战第20天】优化C#性能策略包括:选择合适算法和数据结构,避免频繁对象创建,缓存常用数据,减少内存分配,使用异步编程,优化数据库操作(如合理查询和使用索引),利用多线程并行处理,精简代码,使用性能分析工具,硬件升级,以及进行性能测试。综合应用这些策略可提升程序性能和响应性。
|
28天前
|
JavaScript C#
C#winForm程序与html JS交互调用
C#winForm程序与html JS交互调用
|
2月前
|
Java C# 开发工具
第一个C#程序
第一个C#程序
12 0
|
6月前
|
开发框架 网络协议 前端开发
一个对C#程序混淆加密,小巧但够用的小工具
一个对C#程序混淆加密,小巧但够用的小工具
95 1