function value = randiTabu( min, max, tabu, dim ) value = ones( dim, 1 ) .* max .* 2; num = 1; while ( num <= dim ) temp = randi( [min, max], 1, 1 ); if( length( find( value ~= temp ) ) == dim && temp ~= tabu ) value( num ) = temp; num = num + 1; end end
时间: 2023-12-03 08:04:46 浏览: 117
tabu_search.rar_Tabu_matlab_tsp_禁忌算法
这个函数是用来生成一个随机向量,其中向量的元素在[min, max]区间内,且不包含指定的tabu元素。函数的输入参数为min和max,表示随机数的最小值和最大值;tabu表示禁忌元素;dim表示生成的随机向量的维数。函数的输出为一个长度为dim的随机向量value。
函数使用while循环来生成随机向量。在每一次循环中,函数使用randi函数生成一个[min, max]区间内的随机整数temp。然后,函数使用find函数查找value中不等于temp的元素个数是否等于dim,并且temp是否等于tabu。如果满足这两个条件,将temp赋值给value中的第num个元素,同时num加1。直到生成的向量元素个数等于dim为止。
需要注意的是,如果dim大于max-min+1,那么无法生成指定维数的随机向量,因为随机向量中不能包含重复元素。
阅读全文