前言

写给课题组

选题

基于k-means聚类算法的物流配送中心选址问题研究

Research on Logistics Distribution Center Location Problem Based on k-means Clustering Algorithm

方法分析 —— k-means

k-means就是机器学习里面最简单的入门算法,是一种无监督学习

方法

论文上清一色写的都是欧几里得范数

其实说人话就是所有点距离中心点两点距离公式

公式

其中{x1, x2, x3, ... , xn}为向量集

假设有两个二维数据点 A(1, 2)B(4, 6),我们可以计算它们之间的欧几里得距离:

公式示例

总之就是很简单

优点

  • 简单,根本不需要动脑就可以复现算法
  • 易与其他算法结合使用,k-means一般用来确定初始解,可以当其他算法的加速
  • 结果直观,将很多数据划分同一类,可以从图直接看出结果

缺点

  • 大数据效果较差。由于数据较多,较难确定初始聚类中心
  • 簇数K较难确定。不同的K导致不同的聚类结果

更多详见提到的论文
How to Use K-means for Big Data Clustering?

python代码示例

以下gpt-3.5-turbosklearn库写的一个简单的k-means,可以直观的看出聚类的过程

import time

import numpy as np
import matplotlib.pyplot as plt

# 生成随机数据
np.random.seed(0)
data = np.random.randn(100, 2)  # 生成100个二维数据点

# 初始化K个中心点
k = 3
centers = np.random.randn(k, 2)

# 迭代K-means算法
for _ in range(30):
    # 计算每个数据点到各个中心点的距离
    distances = np.linalg.norm(data[:, None] - centers, axis=-1)

    # 分配每个数据点到最近的中心点
    labels = np.argmin(distances, axis=1)

    # 更新中心点位置
    for i in range(k):
        centers[i] = np.mean(data[labels == i], axis=0)

    # 可视化聚类结果
    plt.figure()
    plt.scatter(data[:, 0], data[:, 1], c=labels, cmap='viridis')
    plt.scatter(centers[:, 0], centers[:, 1], c='red', marker='x')
    plt.title(f"Iteration {_ + 1}")
    plt.show()
    # time.sleep(0.5)

k-means过程

这里K取3,也就是3个中心点,迭代次数写的30次。

可以看到,实际上第十次之后中心点就没有再改变了

问题就在于

  • K中心点的取值
  • 迭代次数适当
  • 数据量合适

就能得出较能准确的结果

思路

我准备以重心法建模,用k-means聚类初始化,然后用dbscan算法优化聚类,研究单一设施选址,最后使运输总成本最小(2024/04/03已废弃)

K-Means聚类,用量子启发式算法优化聚类

预留问题

  • 题目是K-means我能否写dbscan作为优化呢?(2024/04/03已废弃)
  • 目前还没了解过量子启发式相关算法,相关文献也比较少。虽然拜此所赐,题材比较新颖。

国内文献(研究现状)

  • 重心法
  • 遗传算法
  • 模拟退火
  • 粒子群算法

外文论文的选择

搜索方式为google

搜索内容为:site:sciencedirect.com {some_keyword}

site:关键词可以指定文献网站,只搜寻对应的网站中的文献

搜索方式

首先我找到几篇与k-means相关的论文

论文

分别为

  1. 一种多算法方法,用于在末端城市交付系统中平衡运营人力资源工作负载
  2. 全局k均值聚类算法
  3. 如何使用K-means进行大数据聚类?
  4. FC-Kmeans:固定中心 K 均值算法
  5. 确定集装箱仓储配送中心最佳位置的聚类方法
  6. 物流配送中心的位置问题和模糊环境下的算法

当前与选题相关性较强的论文个人认为是第五篇论文

第五篇讲的是使用k-means方法确定中心最佳位置,从开头来看比较契合

目前几篇都只看了引言和第一章,这个选题比较难以找到特别相关的英文文献,还会接着找合适的

目录草稿

目录1

目录2

摘要

K-Means聚类算法常用于将一组数据分类成多个簇,但受限于其算法局限性,K-Means算法易于得到局部解,为了得到最优解,一般需要将其与其他启发式算法结合,优化簇类结果以达到相对合适的解。如遗传算法遗传算法(Genetic Algorithm,GA),退火算法(Simulated annealing,SA)等。本文基于K-Means聚类算法,与量子启发式算法相结合,为解决物流配送中心选址问题提供一种新的思路,同时比较较为常见的算法体现其性能。

关键词

量子启发式算法,K-Means,聚类算法,物流配送中心选址

在用的软件

Dynex

Dynex是一个量子机器学习计算平台,支持python-sdk直接调用
github上有一个项目是Dynex的示例集合示例集合

可以做到如上事情

Dynex文档

虽然有定价,但跑个量子K均值聚类应该不花多少钱

CopyTranslator

来源于youtube视频博主推荐

看英文論文神器軟體!Ctrl+C自動貼上翻譯,排版精準,還不必在PDF與Google翻譯間頻繁切換,相見恨晚啊!

软件github

功能是选中直接显示翻译内容,不需要粘贴或者切换窗口,辅助论文阅读

演示

GPT

之前讲过了_(:з)∠)_

我搭了一个开源的gpt网站,api_key用的自己的,大家可以随意使用gpt-3.5-turbo,这个模型定价很低,可以免费提供使用

gpt-4比较贵,我一般不开,有需求可以问我要

网址就不放在这里了,后面我会发到群里

原项目ChatGPT-Next-Web

有兴趣可以自己申请openaiapi_key,自己搭一个,很方便的