11-2-city_functions1.py

# -*- coding:utf-8 -*-
#li hongliang 2020年10月14日
#11-2 人口数量:修改前面的函数,使其包含第三个必不可少的形参population,并
#返回一个格式为City, Country – population xxx 的字符串,如Santiago, Chile –
#population 5000000。运行test_cities.py,确认测试test_city_country()未通过。
#修改上述函数,将形参population 设置为可选的。再次运行test_cities.py,确认测
#试test_city_country()又通过了。
#再编写一个名为test_city_country_population()的测试,核实可以使用类似于
#'santiago'、'chile'和'population=5000000'这样的值来调用这个函数。再次运行
#test_cities.py,确认测试test_city_country_population()通过了。
def city_country(city,country,population=''):
    if population:
        name1=city.title()+','+country.title()+' –'+' population '+ str(population)
    else:
        name1=city.title()+','+country.title()
    return name1




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
import matplotlib.pyplot as plt import numpy as np import pandas as pd import seaborn as sns import copy import math import random import time from multiprocessing import Pool as ThreadPool path1='att48.tsp' path2='eil76.tsp' path3='pcb442.tsp' path4='rd100.tsp' path5='tsp225.tsp' def readcity(path): df = pd.read_csv("C:\\文件\\现代优化算法\\TSP训练数据集\\"+path, sep=" ", skiprows=6, header=None) return df df = readcity(path4) city = np.array(range(1,len(df[0][0:len(df)-1])+1)) city_x = np.array(df[1][0:len(df)-1]) city_y = np.array(df[2][0:len(df)-1]) city_pos = np.stack((city_x, city_y), axis=1) def distance(city1, city2): return math.sqrt((city1[0]-city2[0])**2 + (city1[1]-city2[1])**2) def path_length(path): length = 0 for i in range(len(path)-1): length += distance(city_pos[path[i]-1], city_pos[path[i+1]-1]) length += distance(city_pos[path[-1]-1], city_pos[path[0]-1]) return length def initial_solution(): unvisited_cities = list(range(1, len(city)+1)) current_city = random.choice(unvisited_cities) solution = [current_city] unvisited_cities.remove(current_city) while unvisited_cities: next_city = min(unvisited_cities, key=lambda city: distance(city_pos[current_city-1], city_pos[city-1])) unvisited_cities.remove(next_city) solution.append(next_city) current_city = next_city return solution def two_opt_swap(path, i, k): new_path = path[:i] + path[i:k + 1][::-1] + path[k + 1:] return new_path 请以上述代码为开头,输出一段以模拟退火算法解决tsp问题的代码,输入为.tsp文件,要求实现用2-opt法构造邻域、在内循环中用Metropolis准则接受解、用最近邻居构造启发式贪心算法构造初始解、输出初始解和解值、最优解和解值、迭代次数和迭代过程的功能
06-02
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值