sorting failed error

monarch_dodra monarchdodra at gmail.com
Mon Jul 30 06:18:35 PDT 2012


On Monday, 30 July 2012 at 12:36:21 UTC, maarten van damme wrote:
> For fun I started implementing a program that uses genetics
> algorithm's to solve the travelling salesman problem. I want to 
> sort
> an array of chromosome structures according to their fitness. I 
> now
> get the error:
>
> core.exception.AssertError at C:\D\dmd2\windows\bin\..\..\src\phobos\std\algorithm.
> d(6714): Failed to sort range of type chromosome[]. Actual 
> result is: [chromosom
> e([city(20, 0), city(25, 25), city(10, 65), city(50, 50), 
> city(75, 30), city(0,
> 10)]), chromosome([city(10, 65), city(50, 50), city(25, 25), 
> city(75, 30), city(
> ...
>
> I have no idea what is wrong with my code and the error is not 
> very informative.
> Does anyone have any idea as to what the problem could be?
>
> (full code is at
> https://dl.dropbox.com/u/15024434/travelling_salesman.d , If 
> it's not
> something obvious then I'm going to try to reduce it to 
> something as
> small as possible)
>
> Maarten

I couldn't have access to your code, but my *guess* would be that 
the provided "less", or in your probable case, your "opCmp", is 
not transitive.

Eg, if you have 3 cities A, B and C, then if A<B and B<C, then 
you MUST have A<C.

Could you post here your implementation of opCmp?

If you are trying to implement traveling salesman, then I don't 
think "sort" is the algorithm should be using.


More information about the Digitalmars-d-learn mailing list