SYSU-算法设计与分析期末项目

本文介绍了固定容量设施分配问题,通过数学模型分析了目标函数和约束条件。讨论了贪心算法和多邻域搜索与模拟退火算法的实现,其中贪心算法时间复杂度为O(n²),而模拟退火能跳出局部最优解,但运行速度较慢。实验包括71种测例,提供了算法的C++代码实现。
摘要由CSDN通过智能技术生成

算法设计与分析期末项目


1. 题目 固定容量设施分配问题


1.1 题目描述

​假设有 n n n个设施和 m m m位客户,希望从中选择:

  1. n n n个设施中选择开启哪些设施
  2. 将客户分配给开启的设施

要求开启设施的总费用和客户分配到设施的总费用之和最小,且设施的容量不能超过设施中客户分配费用的总和。


1.2 题目要求

  1. 至少两种算法解答题目

  2. 获得71种测例的运行结果(具体格式略,在文章中体现)


2. 数学模型分析


2.1 变量定义

在本题目中,为方便分析,定义如下的变量:

  1. I = { 0 , 1 , ⋯   , n − 1 } 表 示 设 施 0 , 1 , ⋯   , n − 1 I = \lbrace 0, 1, \cdots, n-1 \rbrace 表示设施 0, 1, \cdots, n-1 I={ 0,1,,n1}0,1,,n1

  2. J = { 0 , 1 , ⋯   , m − 1 } 表 示 客 户 0 , 1 , ⋯   , m − 1 J = \lbrace 0, 1, \cdots, m-1 \rbrace 表示客户0, 1, \cdots, m-1 J={ 0,1,,m1}0,1,,m1

  3. y i y_{i} yi表示设施 i i i的开启状况,具体如下所示: y i = { 1 , 设 施 i 开 启 0 , 设 施 i 未 开 启 y_{i}=\begin{cases} 1, 设施i开启 \\ 0, 设施i未开启 \\ \end{cases} yi={ 1,i0,i

  4. x i j x_{ij} xij表示客户 j j j的分配情况,具体如下所示: x i j = { 1 , 表 示 客 户 j 被 分 配 到 设 施 i 0 , 表 示 客 户 j 未 被 分 配 到 设 施 i x_{ij}=\begin{cases} 1, 表示客户j被分配到设施i \\ 0, 表示客户j未被分配到设施i \\ \end{cases} xij={ 1,ji0,ji

  5. V i V_{i} Vi表示设施 i i i的容量

  6. C i C_{i} Ci表示设施 i i i的开启费用

  7. D i j D_{ij} Dij表示客户 j j j分配到设施 i i i的需求容量

  8. G i j G_{ij} Gij表示客户 j j j分到到设施 i i i的分配费用

  9. L L L表示分配的总费用


2.2 目标函数

题目的目标函数可以写成如下数学形式,即求所以开启设施所需要的费用和所用客户分配到相应工厂所需的费用之和:
L = m i n { ∑ i = 0 n − 1 C i y i + ∑ i = 0 n − 1 ∑ j = 0 m − 1 G i j x i j } L=min \lbrace \sum_{i=0}^{n-1}C_{i}y_{i}+\sum_{i=0}^{n-1}\sum_{j=0}^{m-1}G_{ij}x_{ij} \rbrace L=min{ i=0n1Ciyi+i=0n1j=0m1Gijxij}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
0 1背包问题是一例典型的组合优化的NP完全问题 问题可以描述为:给定一组共n个物品 每种物品都有自己的重量wi i 1 n和价值vi i 1 n 在限定的总重量(背包的容量C)内 如何选择才能使得选择物品的总价值之和最高 选择最优的物品子集放置于给定背包中 最优子集对应n元解向量 x1 …xn xi∈{0或1} 因此命名为0 1背包问题 0 1背包问题是许多问题的原型 但它又是一个NP完全问题 此实验主要研究和实现n 0< n< 200 和C C< 2000 C为整数 都较大的情形 随机产生n个物品的重量向量wi 1< wi< 100 wi为整数 和价值向量vi 1< vi< 100 vi为整数 0 1背包问题可以用许多方法来求解 有些算法可以得到问题的精确最优解 有些仅能获得一个近似最优解 本综合设计性实验要求用3种以上的方法求解0 1背包问题 获得精确最优解或近似最优解皆可 并对所采用的多种算法从运行时间 寻找是否为最优解 能够求解的问题规模等方面进行对比和分析 本课程讲述的所有算法思想都可以用来求解此问题 甚至本课程未涉及的许多算法也非常适合于求解此问题 学生可以先尝试先用本课程已介绍的算法来实现和分析 学有余力或兴趣驱动下可以寻找一些智能算法的资料来试一试 涉及的方法可以有:蛮力求解 递归求解 动态规划求解 贪心求解 回溯法求解 广度优先的分支限界法求解 优先队列的启发式分支限界法 遗传算法 模拟退火算法 蚁群算法 粒子群算法等 ">0 1背包问题是一例典型的组合优化的NP完全问题 问题可以描述为:给定一组共n个物品 每种物品都有自己的重量wi i 1 n和价值vi i 1 n 在限定的总重量(背包的容量C)内 如何选择才能使得选择物品的总价值之和最高 选择 [更多]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值