function [result,x,y]=TS_BS1(num_1,num_2,c_i,d_j,M_i,T)

%初始参数设置

runcount = 0;

tabulength = 3 + num_1;

candidate.x = round(rand(1,num_1));

y = zeros(num_1,num_2);

sum_d = 0;

for i = 1:num_2

sum_d = sum_d + d_j(i);

end

alfa = 0.9;

%初始化禁忌表

for i = 1:tabulength

tabulist(i).change = [0,0];

tabulist(i).x = 0;

tabulist(i).value = 0;

end

candidate.value = c_i*candidate.x';%目前的解

best_so_far.x = candidate.x;

best_so_far.value = candidate.value;

while runcount < T

runcount = runcount+1;

%产生领域解

kk = 1;

for i = 1:num_1-2

for j = i:num_1-1

flag = 1;

for n = 1:tabulength

tempflag = sum(abs(tabulist(n).change-[i, j]));

flag = flag & tempflag;

end;

if flag

temp = cat(1,candidate.x);

t = temp(i);

temp(i ) = temp(j);

temp(j) = t;

neighborhood(kk).x= temp; % 候选的x

neighborhood(kk).change= [i, j];

kk= kk+1;

end;

end;

end;

L = length(neighborhood);

%满足约束条件

for i = 1:L

for j = 1:num_1

if ~ neighborhood(i).x(j)

y(j,:) = 0;

end

if neighborhood(i).x(j)

y(j,:) = round(rand(1,num_2));

while (d_j*y(j,:)'>M_i(j)&&sum(d_j*y')

y(j,:) = round(rand(1,num_2));

end

end

end

end

for i = 1:L

neighborhood(1).value = neighborhood(i).x*c_i';%候选的目标值

end

candidate_next = sort(cat(1, neighborhood.value), 1).';%将目标值从小到大开始排序

if candidate_next(1)

index= find(cat(1, neighborhood.value)==candidate_next(1)); % 找到最小目标值对应的对象的位置

candidate.x = neighborhood(index).x;

candidate.change = neighborhood(index).change;

candidate.value = candidate_next(1);

%将这个值放入禁忌表中

for i= tabulength-1:-1:1

tabulist(i+1).change = tabulist(i).change;

tabulist(i+1).x = tabulist(i).x;

tabulist(i+1).value = tabulist(i).value;

end;

tabulist(1).change = candidate.change;

tabulist(1).x = candidate.x;

tabulist(1).value = candidate.value;

best_so_far.x= candidate.x;

best_so_far.value= candidate.value;

end

end

result = best_so_far.value; % 返回目标值结果

x = best_so_far.x; % 返回城市顺序结果

fprintf('\nbest value = %d', result);

matlab迭代次数,怎么知道程序中的迭代次数呢相关推荐

  1. python 可迭代对象是什么_python中可迭代对象指的是什么

    python中可迭代对象指的是什么 发布时间:2020-07-20 11:19:38 来源:亿速云 阅读:91 作者:清晨 小编给大家分享一下python中可迭代对象指的是什么,相信大部分人都还不怎么 ...

  2. python中统计单词出现的次数_python统计文章中单词出现次数实例

    python统计单词出现次数 做单词词频统计,用字典无疑是最合适的数据类型,单词作为字典的key, 单词出现的次数作为字典的 value,很方便地就记录好了每个单词的频率,字典很像我们的电话本,每个名 ...

  3. python迭代是什么意思_python中的迭代是什么意思?

    展开全部 数学上面的定义:迭代公式就是指用现在的值,代到一个公式里面,算出下一个值62616964757a686964616fe4b893e5b19e31333365643536,再用下一个值代入公式 ...

  4. java计算字符串中字符出现的次数_java – 计算字符串中字符出现次数

    参见英文答案 > Java compressing Strings                                    18个 我正在尝试编写一个Java程序,它接受一个字符串 ...

  5. java 字符 次数_java-统计字符串中各字符次数

    package com.day5.test; public class Test2 { /** * @param args * 需求:统计字符串中大写字母字符,小写字母字符,数字字符出现的次数,其他字 ...

  6. python中迭代对象是什么_python中的迭代对象和迭代器

    一.什么是可迭代对象? 迭代是访问集合元素的一种方式.以直接作用于 for 循环的数据类型有以下几种:集合数据类型,如 list . tuple . dict . set . str 等: gener ...

  7. python中迭代是什么意思_Python中的“迭代”详解

    迭代器模式:一种惰性获取数据项的方式,即按需一次获取一个数据项. 关于迭代器和生成器的区别: 在Python社区中,大多数时候把迭代器和生成器视为同一概念. 如果需要细分的话,那么迭代器用于从集合中取 ...

  8. python中的可迭代是什么意思,Python中的迭代和可迭代对象

    什么是迭代(iteration)呢? 给定一个list或者tuple,通过for循环来遍历这个list或者tuple.这种遍历就是迭代(iteration).只要是可迭代的对象都可以进行迭代.怎么判断 ...

  9. 用properties写的一个程序运行次数计数的程序代码,超过次数提示注册。

    软件在开始免费使用,在使用次数已到是,将无法运行,并提示客户去注册. package Properties;import java.io.File; import java.io.FileInputS ...

最新文章

  1. ado控件连接oracle,在Delphi 7中用ADOConnection控件连接Oracle 9i的问题
  2. Mozilla发布2015年度报告:搜索合作成营收大头
  3. 就linux学习的一点感受,学习linux的体会
  4. 我妈要把闺蜜介绍给我当女朋友......
  5. Qt文档阅读笔记-Qt插件DECLARE_INTERFACE METADATA INTERFACES官方解析及实例
  6. RocketMQ 一行代码造成大量消息发送失败
  7. Neutron中的网络I/O虚拟化
  8. windows无法格式化u盘_台电u盘无法格式化怎么办 台电u盘无法格式化解决办法【介绍】...
  9. EChart案例-折线面积渐变色
  10. 阿里云一级域名跳转https的二级域名配置说明(主域名跳转子域名, 不带www跳带www)
  11. IntelliJ inspection gives “Cannot resolve symbol“ but still compiles code
  12. DP(最长上升子序列)——腾讯校招题:逛街
  13. confusion_matrix
  14. python2.7安装教程windowsxp_怎么在windows xp 下安装python 2.7
  15. 搜索引擎高级搜索指令
  16. this.$emit()
  17. basename command
  18. access文档合并
  19. [线性代数]行列式(mooc秦静老师讲解)
  20. Pascal voc2007安装和pytorch使用

热门文章

  1. Android 虚拟机学习总结Dalvik虚拟机介绍
  2. 关于Git使用的一些心得
  3. WPF WebBrowser 加载 html ,出现安全警告, 运行 脚本和 activeX 控件,
  4. 计算UILabel带行间距的行高
  5. Spring装配Bean的过程
  6. 关于错误error C4430 error C2365 error C2078 error C2440 error C2143的处理。
  7. VI编辑器的基本使用
  8. c语言基础知识_结构体访问,共同体,枚举类型
  9. 利用ffmpeg来进行视频解码的完整示例代码(H.264)
  10. 学习笔记(13):Python网络编程并发编程-解决粘包问题-终极版本