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

📄 tschromosome__define.pro

📁 采用蚁群算法解决旅行商问题
💻 PRO
字号:
;{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|

PRO TsChromosome::setPROperty, xPos=xPos, yPos=yPos, names=names
	;replaces old traversal order with new one.

	IF N_Elements(xPos) NE 0 THEN *self.xPos = xPos
	IF N_Elements(yPos) NE 0 THEN *self.yPos = yPos
	IF N_Elements(names) NE 0 THEN *self.names = names
	Return
END

;{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|

PRO TsChromosome::getPROperty, numGenes=numGenes, xPos=xPos, yPos=yPos, $
                               fitness=fitness, names=names
	;gets these values.
	numGenes = self.numGenes
	IF Arg_Present(xPos)  	THEN xPos = *self.xPos
	IF Arg_Present(yPos) 	THEN yPos = *self.yPos
	IF Arg_Present(fitness) THEN fitness = self->getFitness()
	IF Arg_Present(names) 	THEN names = *self.names

	Return
END

;{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|

FUNCTION TsChromosome::Copy
	;Returns and exact duplicate of the chromosome
	chromosome = Obj_New('TsChromosome'			,$
						numGenes=self.numGenes	,$
						xPos=(*self.xPos)		,$
						yPos=(*self.yPos)		,$
						names=(*self.names)		 $
						)
	Return,chromosome
END

;{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|

FUNCTION TsChromosome::GetFitness
	;calculates the total distance squared traveled

	xPos = *self.xPos
	yPos = *self.yPos
	indices = LIndgen(self.numGenes-1)
	distance = Total((xPos[indices+1]-xPos[indices])^2. + $
	           (yPos[indices+1]-yPos[indices])^2.)

	Return, distance
END

;{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|

FUNCTION TsChromosome::Init,numGenes=numGenes, xPos=xPos, yPos=yPos, $
                            names=names
	;initilizes a new chromosome based upon the input traversal order.
	self.numGenes = numGenes
	self.xPos = Ptr_New(xPos)
	self.yPos = Ptr_New(yPos)
	self.names = Ptr_New(names)

	Return,1
END
;{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|

PRO TsChromosome::cleanup
	;frees pointers
	IF Ptr_Valid(self.xPos)  THEN Ptr_Free,self.xPos
	IF Ptr_Valid(self.yPos)  THEN Ptr_Free,self.yPos
	IF Ptr_Valid(self.names) THEN Ptr_Free,self.names

	Return
END

;{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|{{:|

PRO TsChromosome__Define

	void = {TsChromosome			,$
	        numGenes 	: 0L		,$ ;number of genes
	        xPos 		: Ptr_New()	,$ ;x pos
	        yPos 		: Ptr_New()	,$ ;y pos
	        names 		: Ptr_New()  } ;names of each gene, used for identIFication

	Return
END

⌨️ 快捷键说明

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