【强化学习环境】TSP问题强化学习环境搭建

Python实现TSP问题的环境模拟
该代码定义了一个TSP环境类,用于模拟旅行商问题。环境随机生成城市坐标,提供reset和step方法来改变路径并计算距离。它还包含一个render方法,用matplotlib可视化当前路径和城市位置。

Reset()重置包括坐标点

reset()重置不包括坐标点

这里的render()参考之前看过的一篇文章(具体是哪篇忘了,没有收藏)使用matplotlib实现

import warnings
import numpy as np
import matplotlib.pyplot as plt

class TSPEnvironment:
    """
    __init__() parm: num city, coordinate_dimension, box size
    step() and reset() return: (coordinates, path, valid) -> state, reward, done
    """
    def __init__(self, num_cities, coordinate_dimension=2, box_size=1.0):
        assert coordinate_dimension >= 2, "coordinate_dimension must >= 2 !"
        self.num_cities = num_cities
        self.coordinate_dimension = coordinate_dimension
        self.box_size = box_size
        self.coordinates, self.cities_coordinates, self.path, self.now_location = None, None, None, None
        self.done = False
        self.total_distance = 0.0
        self.__init_environment = self.Reset
        self.__init_environment()

    def reset(self, start_city=None):
        if start_city is not None:
            assert start_city < self.num_cities, "Start city must < num of city !!!"

        self.now_location = start_city if start_city is not None else np.random.choice(
            list(self.cities_coordinates.keys()))
        self.path = [self.now_location]
        self.done = False
        self.total_distance = 0.0

        valid = self.get_valid_cities(self.path, self.coordinates)
        coordinates = np.array([i for i in self.coordinates])
        path = [i for i in self.path]
        return (coordinates, path, valid), 0.0, self.done

    def Reset(self, start_city=None):
        if start_city is not None:
            
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值