Subversion Repositories gelsvn

Rev

Rev 182 | Rev 595 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 182 Rev 417
Line 116... Line 116...
116
		class RandomEnergy: public EnergyFun
116
		class RandomEnergy: public EnergyFun
117
		{
117
		{
118
		public:
118
		public:
119
			double delta_energy(HalfEdgeIter he) const
119
			double delta_energy(HalfEdgeIter he) const
120
			{
120
			{
121
				return static_cast<double>(rand()/static_cast<float>(RAND_MAX));
121
				return static_cast<double>(gel_rand()/static_cast<float>(GEL_RAND_MAX));
122
			}
122
			}
123
		};
123
		};
124
 
124
 
125
		class MinAngleEnergy: public EnergyFun
125
		class MinAngleEnergy: public EnergyFun
126
		{
126
		{
Line 577... Line 577...
577
 
577
 
578
	void simulated_annealing_optimization(Manifold& m, 
578
	void simulated_annealing_optimization(Manifold& m, 
579
																				const EnergyFun& efun,
579
																				const EnergyFun& efun,
580
																				int max_iter)
580
																				int max_iter)
581
	{
581
	{
582
		srand(0);
582
		gel_srand(0);
583
		int swaps;
583
		int swaps;
584
		int iter = 0;
584
		int iter = 0;
585
		double T = 1;
585
		double T = 1;
586
 
586
 
587
		double tmin=0;
587
		double tmin=0;
Line 628... Line 628...
628
									}
628
									}
629
								else
629
								else
630
									{
630
									{
631
										delta = max(1e-8, delta);
631
										delta = max(1e-8, delta);
632
										double prob = min(0.9999, exp(-delta/T));
632
										double prob = min(0.9999, exp(-delta/T));
633
										if(rand()/double(RAND_MAX) < prob)
633
										if(gel_rand()/double(GEL_RAND_MAX) < prob)
634
											{
634
											{
635
												if(m.flip(he))
635
												if(m.flip(he))
636
													++swaps;
636
													++swaps;
637
											}
637
											}
638
									}
638
									}