⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 isa.cpp

📁 一个模拟退火算法的改进程序
💻 CPP
📖 第 1 页 / 共 4 页
字号:
#include "stdafx.h"
#include	<stdio.h>
#include	<stdlib.h>
#include <math.h>

//
//码本大小和阶数
//
#define CB_SIZE   256
#define CB_BIT    8
#define CB_ORDER  6

//
//SA算法的中的常量:
//Td:                降温系数
//N:                 每次降温迭代的次数;
//C_UNCHAGE:         连续扰动不变时的计数器门限
//
#define  N             (CB_SIZE*10*4)           //每次降温迭代次数为10个码本大小   
#define  t_UNCHAGE     (N/10)					//连续扰动不变时的计数器门限为(待定)降温迭代次数
#define  s_UNCHAGE     (N)						//连续扰动不变时的计数器门限为(待定)降温迭代次数
#define  df			   0.001				    //误差限度 
//
//码矢量的先验分布概率
//
float CB_percent[CB_SIZE]={
0.053828,0.001523,0.003320,0.001738,0.005332,0.001035,0.004004,0.002109,
0.015391,0.003574,0.001992,0.006172,0.002715,0.000469,0.001094,0.002637,
0.015605,0.003145,0.003516,0.001523,0.012617,0.001211,0.002344,0.003125,
0.019824,0.000527,0.003437,0.001504,0.009492,0.001328,0.001309,0.002793,
0.019082,0.001816,0.001816,0.002168,0.002930,0.001543,0.002656,0.002383,
0.014707,0.000918,0.003320,0.001113,0.002168,0.000879,0.001230,0.003066,
0.019609,0.001484,0.002383,0.002813,0.010137,0.001504,0.003418,0.004844,
0.002383,0.002500,0.002793,0.001855,0.006523,0.001875,0.000742,0.002773,
0.019531,0.002070,0.002793,0.001270,0.004531,0.000996,0.004082,0.001973,
0.015645,0.001211,0.001582,0.002637,0.003262,0.001055,0.001250,0.004980,
0.006680,0.002363,0.005625,0.002031,0.014434,0.002188,0.001816,0.001543,
0.014316,0.001172,0.003945,0.001523,0.008965,0.001973,0.001172,0.001094,
0.016562,0.002910,0.002949,0.001797,0.007793,0.002031,0.002910,0.001699,
0.011504,0.003203,0.004141,0.001211,0.002266,0.001680,0.001406,0.001836,
0.006211,0.001465,0.003672,0.002227,0.005176,0.002090,0.002676,0.002617,
0.004746,0.001621,0.003672,0.001055,0.006367,0.001758,0.001504,0.001523,
0.013379,0.001152,0.002813,0.002793,0.003789,0.001270,0.003477,0.001328,
0.012070,0.004238,0.002031,0.003965,0.007012,0.001426,0.001445,0.002188,
0.010391,0.002617,0.003379,0.001387,0.013652,0.001914,0.002578,0.002637,
0.008926,0.000996,0.005000,0.001836,0.002559,0.001250,0.001172,0.002832,
0.012949,0.002480,0.002227,0.003066,0.007500,0.001016,0.001387,0.001875,
0.008652,0.001445,0.003457,0.001230,0.002813,0.000918,0.001641,0.002207,
0.009902,0.001641,0.002500,0.002871,0.001172,0.001621,0.002754,0.003594,
0.002676,0.001914,0.004121,0.002891,0.005059,0.001914,0.001621,0.002246,
0.011172,0.001797,0.002988,0.002461,0.006309,0.001465,0.002871,0.001914,
0.009785,0.003105,0.002031,0.001699,0.004922,0.000977,0.001211,0.003555,
0.006426,0.004395,0.005645,0.001172,0.006523,0.002773,0.002500,0.002168,
0.006250,0.001387,0.004570,0.001387,0.004746,0.000723,0.000957,0.000918,
0.006934,0.001758,0.001836,0.001777,0.005430,0.001816,0.001758,0.001152,
0.009199,0.000488,0.002656,0.001191,0.002207,0.000937,0.001250,0.001230,
0.003906,0.001816,0.003105,0.001699,0.007246,0.002070,0.002344,0.002578,
0.004883,0.002246,0.003027,0.000977,0.002793,0.001016,0.001855,0.001504
};
//
//最小失真码矢量的先验分布概率
//
float mindist_CB_percent[CB_SIZE]={
0.053828,0.001523,0.003320,0.001738,0.005332,0.001035,0.004004,0.002109,
0.015391,0.003574,0.001992,0.006172,0.002715,0.000469,0.001094,0.002637,
0.015605,0.003145,0.003516,0.001523,0.012617,0.001211,0.002344,0.003125,
0.019824,0.000527,0.003437,0.001504,0.009492,0.001328,0.001309,0.002793,
0.019082,0.001816,0.001816,0.002168,0.002930,0.001543,0.002656,0.002383,
0.014707,0.000918,0.003320,0.001113,0.002168,0.000879,0.001230,0.003066,
0.019609,0.001484,0.002383,0.002813,0.010137,0.001504,0.003418,0.004844,
0.002383,0.002500,0.002793,0.001855,0.006523,0.001875,0.000742,0.002773,
0.019531,0.002070,0.002793,0.001270,0.004531,0.000996,0.004082,0.001973,
0.015645,0.001211,0.001582,0.002637,0.003262,0.001055,0.001250,0.004980,
0.006680,0.002363,0.005625,0.002031,0.014434,0.002188,0.001816,0.001543,
0.014316,0.001172,0.003945,0.001523,0.008965,0.001973,0.001172,0.001094,
0.016562,0.002910,0.002949,0.001797,0.007793,0.002031,0.002910,0.001699,
0.011504,0.003203,0.004141,0.001211,0.002266,0.001680,0.001406,0.001836,
0.006211,0.001465,0.003672,0.002227,0.005176,0.002090,0.002676,0.002617,
0.004746,0.001621,0.003672,0.001055,0.006367,0.001758,0.001504,0.001523,
0.013379,0.001152,0.002813,0.002793,0.003789,0.001270,0.003477,0.001328,
0.012070,0.004238,0.002031,0.003965,0.007012,0.001426,0.001445,0.002188,
0.010391,0.002617,0.003379,0.001387,0.013652,0.001914,0.002578,0.002637,
0.008926,0.000996,0.005000,0.001836,0.002559,0.001250,0.001172,0.002832,
0.012949,0.002480,0.002227,0.003066,0.007500,0.001016,0.001387,0.001875,
0.008652,0.001445,0.003457,0.001230,0.002813,0.000918,0.001641,0.002207,
0.009902,0.001641,0.002500,0.002871,0.001172,0.001621,0.002754,0.003594,
0.002676,0.001914,0.004121,0.002891,0.005059,0.001914,0.001621,0.002246,
0.011172,0.001797,0.002988,0.002461,0.006309,0.001465,0.002871,0.001914,
0.009785,0.003105,0.002031,0.001699,0.004922,0.000977,0.001211,0.003555,
0.006426,0.004395,0.005645,0.001172,0.006523,0.002773,0.002500,0.002168,
0.006250,0.001387,0.004570,0.001387,0.004746,0.000723,0.000957,0.000918,
0.006934,0.001758,0.001836,0.001777,0.005430,0.001816,0.001758,0.001152,
0.009199,0.000488,0.002656,0.001191,0.002207,0.000937,0.001250,0.001230,
0.003906,0.001816,0.003105,0.001699,0.007246,0.002070,0.002344,0.002578,
0.004883,0.002246,0.003027,0.000977,0.002793,0.001016,0.001855,0.001504
};
//
//码本矢量
//
float codebook[CB_SIZE][CB_ORDER]={
76.522430, 76.925552, 76.954964, 76.984329, 76.804626, 76.624481, 
72.026680, 68.410255, 59.827404, 50.842861, 48.028618, 46.464855, 
75.781891, 75.652420, 73.462189, 69.257492, 61.562065, 54.827682, 
63.230042, 60.632458, 56.629478, 47.907589, 37.082581, 32.365707, 
76.277809, 76.287445, 75.083260, 73.809578, 69.507881, 63.129757, 
33.240723, 34.059654, 37.988438, 64.399269, 72.460144, 73.656113, 
58.874046, 69.989037, 74.594040, 76.240952, 76.252617, 76.293663, 
50.588566, 42.499405, 35.379986, 32.813595, 31.884293, 31.472811, 
74.393707, 74.188499, 73.003510, 71.799309, 70.764191, 69.594536, 
47.721722, 48.081001, 48.760242, 49.901638, 51.715576, 53.754322, 
53.701385, 53.717987, 52.703445, 53.054611, 66.983131, 72.335022, 
41.920792, 41.468613, 41.509647, 41.844799, 41.862362, 42.022633, 
63.150425, 61.171265, 59.454018, 57.828236, 59.800858, 67.701759, 
33.987904, 35.395161, 36.550854, 37.646503, 67.061157, 75.018806, 
35.825081, 43.770161, 68.291580, 74.105415, 74.925980, 75.456223, 
29.992500, 29.275515, 28.797401, 28.763197, 30.498075, 33.309887, 
71.882019, 74.075760, 75.039055, 75.983154, 76.003242, 76.015579, 
53.356926, 51.614864, 48.695721, 45.842457, 42.573811, 39.533169, 
66.047050, 64.848701, 62.069260, 58.881195, 55.078815, 52.769466, 
58.919228, 54.112507, 44.581612, 34.300667, 30.241386, 29.146816, 
66.358154, 66.200523, 65.868965, 65.544685, 64.671921, 63.744678, 
34.705948, 49.600422, 55.828743, 58.629040, 59.153328, 60.302288, 
51.257847, 53.640030, 67.788078, 73.938187, 74.903122, 75.739265, 
39.524330, 39.096371, 36.732452, 34.328060, 34.791958, 35.894985, 
68.235023, 68.395508, 68.392311, 68.389130, 67.964043, 67.537674, 
47.236961, 43.780170, 38.989643, 37.296295, 46.735962, 69.475517, 
60.173950, 57.278275, 54.743370, 52.390671, 52.378284, 52.574902, 
33.703526, 32.230412, 32.393867, 44.973614, 51.999096, 55.864265, 
59.567501, 59.638298, 59.692383, 59.758415, 59.983643, 60.252060, 
35.002605, 33.583492, 32.778313, 31.962521, 33.001026, 51.795563, 
47.207001, 46.646587, 48.596069, 66.257111, 72.911072, 74.934059, 
25.112951, 24.660528, 25.538336, 26.836912, 28.785013, 31.295506, 
76.256874, 76.345108, 75.801926, 75.252342, 73.641739, 71.595299, 
65.398254, 63.381557, 59.825504, 54.201881, 44.166843, 35.772800, 
74.607193, 73.932335, 70.175293, 62.242802, 52.435322, 46.323620, 
54.124718, 51.707043, 47.866020, 42.964546, 38.184284, 36.344383, 
73.789352, 72.346085, 67.762169, 62.461720, 59.558353, 57.793339, 
31.229353, 32.378929, 47.532528, 60.147423, 65.933151, 68.765205, 
50.470108, 65.367142, 72.072601, 74.505035, 74.951172, 75.363197, 
42.955536, 36.732677, 32.390079, 29.770494, 29.684423, 30.638544, 
69.393982, 68.702431, 67.380447, 66.067757, 64.566925, 63.010479, 
54.300510, 45.316406, 41.769161, 47.431717, 53.508125, 57.042564, 
51.799023, 51.649292, 53.038799, 55.170963, 58.248196, 61.947285, 
52.083107, 46.666107, 38.708832, 33.887951, 37.974350, 51.557449, 
60.417904, 59.378651, 57.732037, 58.113041, 68.455528, 72.930542, 
29.623074, 28.746845, 30.428007, 32.599579, 37.527699, 62.105904, 
32.404423, 36.209934, 54.119984, 69.143875, 72.814987, 74.083961, 
31.208496, 29.492922, 27.914679, 26.574492, 27.343859, 28.198889, 
70.331787, 70.677238, 70.695389, 70.720299, 70.762154, 70.827942, 
60.707970, 56.183369, 48.228565, 45.632858, 50.531910, 54.107391, 
70.221046, 65.927803, 59.341579, 54.483612, 54.225677, 55.174484, 
49.114918, 45.691257, 40.470009, 35.950493, 34.887188, 34.209461, 
64.815987, 64.136780, 62.802979, 61.525410, 61.175846, 60.792316, 
36.796398, 39.808971, 49.456928, 55.780083, 57.267216, 59.036030, 
52.368542, 56.757961, 61.492527, 65.279564, 67.249634, 68.959961, 
35.074612, 34.663185, 34.541470, 34.340744, 33.890522, 33.809105, 
65.861092, 64.491722, 63.525890, 65.682991, 72.028488, 75.366302, 
41.469006, 41.288074, 41.175205, 41.068573, 43.547733, 49.308437, 
54.995892, 54.359337, 53.455605, 52.621208, 48.112389, 42.419353, 
35.395866, 33.046169, 32.862923, 34.661465, 41.931854, 46.241421, 
60.326317, 59.366707, 58.309929, 57.347984, 56.132549, 54.765755, 
28.657148, 29.361559, 31.850691, 35.260090, 38.859936, 41.383736, 
49.516136, 45.376919, 40.433075, 41.054333, 59.119968, 66.136673, 
26.304039, 25.570454, 25.000549, 24.535467, 23.996592, 23.728786, 
72.275139, 72.631622, 72.649467, 72.666206, 72.225784, 71.771477, 
65.909149, 60.239792, 52.875782, 45.314667, 43.444855, 43.398056, 
71.912933, 70.092934, 65.213760, 58.863274, 53.795307, 51.200516, 
63.498909, 59.510174, 51.098763, 40.756828, 32.184120, 30.149881, 
74.886482, 74.158760, 71.480049, 67.842392, 64.734200, 62.457924, 
31.920729, 31.951933, 32.945816, 50.132198, 65.304359, 71.406059, 
60.659901, 61.416016, 68.271858, 74.073570, 75.300240, 76.276154, 
45.802624, 40.621849, 34.355999, 28.659849, 26.315393, 25.257431, 
66.064926, 66.223808, 66.297096, 66.350586, 66.273575, 66.207619, 
38.500694, 45.870461, 50.954044, 51.866291, 49.063305, 46.219044, 
57.359177, 55.733978, 53.135014, 50.957802, 50.943516, 65.553169, 
41.571911, 42.006187, 40.698315, 39.177437, 36.648247, 33.885441, 
51.209850, 57.056595, 59.863586, 61.715702, 61.853790, 62.298073, 
30.289330, 29.891882, 31.279970, 36.295700, 49.537441, 67.074066, 
35.238998, 57.109386, 65.116196, 68.760071, 70.093498, 70.988892, 
27.534401, 27.442936, 27.686218, 28.010799, 28.165106, 28.417622, 
66.317261, 70.882698, 74.059692, 75.969810, 76.172798, 76.374313, 
52.724567, 44.116226, 41.182896, 41.151173, 41.749363, 41.419098, 
61.324516, 59.724758, 57.517780, 55.311962, 53.072372, 51.409664, 
51.985470, 48.653843, 42.458073, 35.187332, 29.578564, 27.996901, 
61.850193, 61.885704, 61.869995, 61.821354, 61.461872, 61.134102, 
45.315388, 46.105106, 47.972019, 52.106556, 56.424503, 60.867489, 
51.219875, 52.017342, 57.986122, 69.540062, 73.680992, 75.582397, 
36.983059, 37.659039, 38.155769, 37.330746, 32.867085, 29.834627, 
64.037766, 64.079460, 63.960964, 63.852409, 64.173492, 64.518799, 
41.647575, 38.060749, 35.114788, 34.242477, 49.774281, 57.800549, 
53.134003, 52.155781, 51.244415, 50.315540, 50.728954, 51.685047, 
27.673769, 27.373451, 31.027222, 40.479733, 47.610836, 52.699348, 
56.545570, 56.945793, 57.221096, 57.515633, 57.800007, 58.184174, 
33.053871, 31.463106, 30.667887, 30.264767, 33.016815, 43.446510, 
43.633507, 44.508602, 46.211834, 53.261841, 69.021584, 73.505913, 
21.728491, 21.153803, 22.064516, 23.701040, 26.216497, 31.072582, 
70.576584, 70.541313, 70.111221, 69.690308, 68.962532, 68.227829, 
56.660328, 54.632824, 51.816593, 48.743671, 42.987740, 36.965374, 
65.361549, 63.431110, 60.160889, 55.830795, 50.207314, 46.140766, 
52.113014, 50.594677, 46.956112, 41.479652, 33.057213, 27.454775, 
65.108101, 64.167976, 62.542645, 60.982632, 58.735168, 56.546345, 
30.629650, 32.589634, 43.914955, 52.664692, 56.640827, 59.917496, 
49.087757, 62.668770, 67.643600, 69.428223, 69.506477, 69.587776, 
38.643730, 34.047455, 30.770977, 27.215790, 25.596466, 24.110493, 
67.297737, 66.457924, 64.892967, 63.434364, 62.147980, 60.938911, 
42.274269, 43.579060, 44.529793, 45.292233, 44.883656, 44.040302, 
50.300358, 51.166416, 52.493816, 53.745636, 54.326954, 55.376858, 
46.352764, 37.573883, 33.403751, 35.656609, 40.298302, 46.741940, 
54.597935, 53.896538, 54.382694, 63.007481, 68.810394, 71.335938, 
28.527630, 28.119659, 28.774879, 31.663162, 41.084091, 50.084412, 
33.586243, 46.021503, 57.199150, 62.681465, 66.825256, 69.765678, 
31.655165, 28.187027, 26.296618, 24.761164, 24.372509, 24.393282, 
61.141594, 64.270935, 66.677681, 68.879883, 69.624855, 70.338951, 
59.415138, 52.851192, 42.756046, 39.883442, 40.429314, 40.920856, 
61.976936, 59.548775, 56.551338, 53.030293, 47.043739, 43.132149, 
44.931698, 41.983318, 38.069988, 33.470844, 30.378038, 28.579521, 
62.239136, 61.699791, 60.916817, 60.109406, 57.317455, 54.016796, 
31.840410, 37.349415, 44.493973, 49.549599, 51.945187, 53.266205, 
44.817284, 53.509747, 56.922119, 59.157471, 60.611393, 62.801750, 
34.584694, 33.129013, 30.793356, 28.758076, 28.821163, 29.241934, 
60.713177, 60.884571, 62.420742, 64.507515, 67.033295, 69.969109, 
32.814384, 37.016125, 42.114510, 44.915123, 44.414879, 43.937408, 
49.762596, 48.064011, 47.185062, 46.557949, 45.389675, 44.431171, 
30.826542, 32.469265, 35.417530, 38.912361, 36.920784, 33.896538, 
55.112915, 55.393578, 55.497238, 55.665447, 55.497826, 55.400341, 
26.531242, 26.065596, 26.753590, 27.530472, 30.582785, 38.336918, 
39.062195, 40.538750, 42.757439, 46.124432, 59.172192, 66.502296, 
24.813066, 23.826725, 22.679352, 21.471458, 20.754200, 20.473934, 
73.677399, 73.847923, 73.539474, 73.238770, 73.242790, 73.235527, 
70.291405, 66.852921, 59.656380, 48.756710, 40.627216, 37.620556, 
71.435623, 70.696251, 68.516617, 65.383034, 58.615837, 50.734299, 
58.625977, 56.278831, 52.055550, 45.804832, 36.927361, 31.688456, 
71.717361, 71.775146, 70.703201, 69.390915, 65.352203, 58.907589, 
31.274445, 31.346901, 36.512161, 58.978168, 64.928619, 66.592545, 
57.026215, 66.837021, 70.054611, 71.876137, 72.111794, 72.325378, 
52.256172, 41.656536, 30.740116, 28.784164, 29.120974, 30.087296, 
70.951889, 70.540421, 69.356056, 68.162773, 66.585892, 64.927803, 
45.631969, 45.646336, 46.488178, 47.419235, 48.099316, 49.142258, 
51.019596, 50.233253, 49.251442, 49.443542, 60.640709, 68.063881, 
39.647434, 38.760994, 38.941170, 39.140553, 39.869812, 40.827415, 
56.098412, 57.265591, 58.451645, 59.673508, 60.253437, 60.985992, 
32.541389, 32.175434, 32.452503, 36.557224, 59.276855, 65.867867, 
42.135281, 44.113327, 59.374249, 67.391022, 70.063057, 71.771996, 
25.582716, 26.132494, 28.221998, 30.686630, 32.147362, 33.002293, 
69.055222, 70.507874, 71.499229, 72.746384, 73.410744, 73.887932, 
48.718025, 47.532242, 46.045387, 44.645142, 41.717686, 37.887100, 
62.168484, 61.233868, 59.110775, 57.336044, 52.981091, 47.703876, 
56.996231, 48.142223, 37.049068, 32.069519, 31.478189, 30.912769, 
75.381119, 75.472733, 75.197456, 74.903839, 74.998299, 75.095528, 
39.208248, 46.830154, 51.553436, 54.306450, 55.349491, 56.114876, 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -