473,405 Members | 2,338 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,405 software developers and data experts.

Runtime error occur in vc

hi,everyone ,
one Runtime error occur when running , maybe it's about assigning
memory .
I need your help , thanks.
It's about the travelling sellman problem .

//#include "stdafx.h"

//TSPÎÊÌâµÄ½â·¨
#include<stdlib.h>
#include<math.h>
#include<time.h>
#include "assert.h"
#include "iostream"
using namespace std;
struct city{
double x,y;};
city * cities;
double * dis;
double random1()//·µ»Ø[0,1)Ö®¼äµÄdouble
{
return ((double)rand())/RAND_MAX;
}
/*
template <class T>
void swap( T& a, T& b)

{ T c = a; a = b; b=c;}*/
int random()
{ return rand();}
inline double distance(int CityCnt, char a, char b)
{
double disX = cities[a].x -cities[b].x;
double disY = cities[a].y -cities[b].y;
return sqrt(disX*disX+disY*disY);
}

class Generation;
class Member{
public:
char * bytes;//ȾɫÌå
double dist;
static int Length ; // to denote using how many bytes
static double p; //±äÒì¸ÅÂÊ
Member(const Member &a) ;
Member();
~Member();
void bianyi();
double Adaptablity (double miniS); //¸æËßÕâÒ»´úµÄ×î¶Ì·¾¶£¬ÇóAdaptability
void diyidai();
void birth(Generation& g);
double Dis();
Member& operator=(Member& x);
};
class Generation {
public:
static int msize; // mn means MemberSize£¨ÖÖȺµÄ´óС£©
int GCount; //¼Ç¼ÏÖÔÚ´¦ÓÚµÚ¼¸´ú
double * board; //ÂÖÅÌ
static double p; // ±äÒì»ú»á
class Member * members; //¸öÌåÊý×é
double miniS;//µ±Ç°´úµÄ×î¶Ì·³Ì
double CalcMiniDis();
void PrintAllDis();
void CalcDis();
void setBoard(); //ÉèÖÃÂÛÅÌ
void PrintBoard();
void jiaocha(Member & a, Member & b); //½»²æ
void bianyi();//¸öÌå±äÒì
void FG();
Generation& birth();

~Generation(){ delete [] board; delete[] members;}
Generation(){
board = new double[msize];
members = new Member[msize];
}
};
void Generation::CalcDis()
{
for(int i=0;i<msize;i++)
members[i].dist = members[i].Dis();
}
double Generation::CalcMiniDis()
{
double s =members[0].dist;
for(int i=0;i<msize;i++)
{
if(s>members[i].dist) s=members[i].dist;
}
this->miniS= s;
return s;
}

void Generation::PrintBoard()
{
cout<<endl;
for(int i=0;i<msize;i++)
cout<<board[i]<< " ";
cout<<endl;
}
void Generation::bianyi()
{
for(int i=1;i<Generation::msize;i++)
{
this->members[i].bianyi();
}
}

Member::~Member()
{
delete []bytes;
}
Member::Member(const Member &a)
{
this->bytes = new char[Length];
for(int i =0 ;i<Member::Length;i++)
{ this->bytes[i] = a.bytes[i];}
}
void Member::bianyi() //±äÒì
{
double p1=random1();
while (p1<p)
{
int x1 = rand()%Member::Length; int x2 = rand()%Member::Length;
swap<char>(bytes[x1],bytes[x2]);
p1 = random1();
}
//
cout<<endl;
for(int i=0;i<Member::Length;i++)
{ cout<<(int)bytes[i]<<" ";}
cout<<endl;
}

void Member::diyidai() //µÚÒ»´úµÄmembers
{
int i,j;
for( i=0;i<Member::Length;i++)
{bytes[i] = i;}
for( i=0;i<Member::Length;i++)
{ j = random()%Member::Length; swap<char>(bytes[i],bytes[j]);}
//
cout<<endl;
for(i=0;i<Member::Length;i++)
{ cout<<(int)bytes[i]<<" ";}
cout<<endl;
}
Member::Member()
{
bytes = new char[Member::Length];
}
void Generation::PrintAllDis()
{
cout<<endl;
for(int i=0;i<Generation::msize;i++)
cout<<members[i].dist<<" ";
cout<<endl;
}
inline double Member::Dis()
{
double s = 0 ;
for(int i=0;i<Length-1;i++)
{ double temp = dis[bytes[i]*Member::Length+bytes[i+1]];
s+=temp;
}
s+= dis[bytes[0]*Member::Length+bytes[Member::Length]];
this->dist = s;
return s;
}
inline double Member::Adaptablity(double miniS)//¼ÆËãÊÊÓ¦¶È //Ϊ×Ü·³ÌµÄƽ·½µÄµ¹Êý
{ double s =this->dist;
s -= 0.9 * miniS; s*=s;
return 1000000/s;
}


void Generation::FG() //FirstGeneration
{
for(int i = 0; i<Generation::msize;i++)
members[i].diyidai();
}
Generation& Generation::birth()
{
Generation * child = new Generation();
for(int i=0;i<msize;i++)
{
double p1 = random1();
int j;
for(j=0;j<Generation::msize && this->board[j]<p1;j++);
//delete[] child->members[i].bytes;
child->members[i] = this->members[j];
cout<<i<<endl;
}
return *child;
}
Member& Member::operator=(Member& x) //
{
if(this->bytes != NULL) delete[] this->bytes;
if(NULL==(this->bytes = new char[Member::Length])) cout<<"memory
error";
for(int i=0;i<Member::Length;i++)
this->bytes[i]=x.bytes[i];
return *this;
}
void Generation::jiaocha(Member &a,Member &b) //½»²æ
{
//
cout<<"positionxxx"<<endl;
cout<<endl;
for(int p=0;p<Member::Length;p++) cout<<(int)b.bytes[p]<<" ";
cout<<endl;
bool *flagA=new bool[Member::Length];
bool *flagB=new bool[Member::Length];
memset(flagA,0,sizeof(flagA));
memset(flagB,0,sizeof(flagB));
char * Abytes = new char[Member::Length];
char * Bbytes = new char[Member::Length];
for(int i=0;i<Member::Length;i++)
{Abytes[i]=a.bytes[i];Bbytes[i]=b.bytes[i];}
int x1 = random()%Member::Length;
int x2 = random()%Member::Length;
if(x1>x2) swap<int>(x1,x2);
i=x1;int j=0;
for(;i<=x2;i++,j++)
{ Abytes[j]=a.bytes[i];Bbytes[j]=a.bytes[i];
flagA[Abytes[j]]=true; flagB[Bbytes[j]]=true;}
int j1=j,j2=j;
for(int k=0;k<Member::Length;k++)
{
char temp = b.bytes[k];
if(flagA[temp]==false) Abytes[j1++] =temp;
} assert(j1==Member::Length);
for(k=0;k<Member::Length;k++)
{
char temp = a.bytes[k];
if(flagB[temp]==false) Bbytes[j2++] = temp;
} assert(j2==Member::Length);
delete[] a.bytes;
delete[] b.bytes;
a.bytes = Abytes; b.bytes = Bbytes;
delete [] flagA; delete [] flagB;

}
void Generation::setBoard()
{ double s = 0;
for(int i=0;i<msize;i++)
{ s+=members[i].Adaptablity(this->miniS); board[i]=s;}
for(i=0;i<msize;i++)//normalize
{ board[i]/=board[msize-1];}
}
//DEL void Generation::Init()
//DEL {
//DEL
//DEL }

int Member::Length=0;
double Member::p = 0.1;
int Generation::msize = 10;
void main()
{
freopen("f:\\oliver30.txt","r",stdin);
srand((int)time(0));
int CntCity,i,j;
cin>>CntCity;
Member::Length = CntCity;
cities = new city[CntCity];
double temp;
for( i=0;i<CntCity;i++)
{ cin>>temp>>cities[i].x>>cities[i].y>>temp;}
for(i=0;i<CntCity;i++)
{cout<<cities[i].x<<" "<<cities[i].y<<endl;}
dis = new double[CntCity*CntCity]; //done
for(i=0;i<CntCity;i++)
{
for(j=0;j<CntCity;j++)
{ dis[i*CntCity+j]= distance(CntCity,(char)i,(char)j);
cout<<dis[i*CntCity+j]<<" ";}cout<<endl;
}

Generation * g1 = new Generation(),gt;
g1->FG();g1->CalcDis();g1->CalcMiniDis();
g1->setBoard();g1->PrintAllDis();g1->PrintBoard();

for(i=0;i<=100;i++)
{
Generation * g2 = &(g1->birth());
for(j=0;j<Generation::msize/2;j++)
{g2->jiaocha(g2->members[i],g2->members[i+Generation::msize]);}
g2->CalcDis();
g2->CalcMiniDis();
g2->setBoard();
g2->PrintAllDis();
g2->PrintBoard();
cout<<g1->miniS<<endl;
delete g1;
cout<<" xxxxxxxxxxxx"<<endl;
g1 = g2;
}
}



//#include "stdafx.h"

//TSPÎÊÌâµÄ½â·¨
#include<stdlib.h>
#include<math.h>
#include<time.h>
#include "assert.h"
#include "iostream"
using namespace std;
struct city{
double x,y;};
city * cities;
double * dis;
double random1()//·µ»Ø[0,1)Ö®¼äµÄdouble
{
return ((double)rand())/RAND_MAX;
}
/*
template <class T>
void swap( T& a, T& b)

{ T c = a; a = b; b=c;}*/
int random()
{ return rand();}
inline double distance(int CityCnt, char a, char b)
{
double disX = cities[a].x -cities[b].x;
double disY = cities[a].y -cities[b].y;
return sqrt(disX*disX+disY*disY);
}

class Generation;
class Member{
public:
char * bytes;//ȾɫÌå
double dist;
static int Length ; // to denote using how many bytes
static double p; //±äÒì¸ÅÂÊ
Member(const Member &a) ;
Member();
~Member();
void bianyi();
double Adaptablity (double miniS); //¸æËßÕâÒ»´úµÄ×î¶Ì·¾¶£¬ÇóAdaptability
void diyidai();
void birth(Generation& g);
double Dis();
Member& operator=(Member& x);
};
class Generation {
public:
static int msize; // mn means MemberSize£¨ÖÖȺµÄ´óС£©
int GCount; //¼Ç¼ÏÖÔÚ´¦ÓÚµÚ¼¸´ú
double * board; //ÂÖÅÌ
static double p; // ±äÒì»ú»á
class Member * members; //¸öÌåÊý×é
double miniS;//µ±Ç°´úµÄ×î¶Ì·³Ì
double CalcMiniDis();
void PrintAllDis();
void CalcDis();
void setBoard(); //ÉèÖÃÂÛÅÌ
void PrintBoard();
void jiaocha(Member & a, Member & b); //½»²æ
void bianyi();//¸öÌå±äÒì
void FG();
Generation& birth();

~Generation(){ delete [] board; delete[] members;}
Generation(){
board = new double[msize];
members = new Member[msize];
}
};
void Generation::CalcDis()
{
for(int i=0;i<msize;i++)
members[i].dist = members[i].Dis();
}
double Generation::CalcMiniDis()
{
double s =members[0].dist;
for(int i=0;i<msize;i++)
{
if(s>members[i].dist) s=members[i].dist;
}
this->miniS= s;
return s;
}

void Generation::PrintBoard()
{
cout<<endl;
for(int i=0;i<msize;i++)
cout<<board[i]<< " ";
cout<<endl;
}
void Generation::bianyi()
{
for(int i=1;i<Generation::msize;i++)
{
this->members[i].bianyi();
}
}

Member::~Member()
{
delete []bytes;
}
Member::Member(const Member &a)
{
this->bytes = new char[Length];
for(int i =0 ;i<Member::Length;i++)
{ this->bytes[i] = a.bytes[i];}
}
void Member::bianyi() //±äÒì
{
double p1=random1();
while (p1<p)
{
int x1 = rand()%Member::Length; int x2 = rand()%Member::Length;
swap<char>(bytes[x1],bytes[x2]);
p1 = random1();
}
//
cout<<endl;
for(int i=0;i<Member::Length;i++)
{ cout<<(int)bytes[i]<<" ";}
cout<<endl;
}

void Member::diyidai() //µÚÒ»´úµÄmembers
{
int i,j;
for( i=0;i<Member::Length;i++)
{bytes[i] = i;}
for( i=0;i<Member::Length;i++)
{ j = random()%Member::Length; swap<char>(bytes[i],bytes[j]);}
//
cout<<endl;
for(i=0;i<Member::Length;i++)
{ cout<<(int)bytes[i]<<" ";}
cout<<endl;
}
Member::Member()
{
bytes = new char[Member::Length];
}
void Generation::PrintAllDis()
{
cout<<endl;
for(int i=0;i<Generation::msize;i++)
cout<<members[i].dist<<" ";
cout<<endl;
}
inline double Member::Dis()
{
double s = 0 ;
for(int i=0;i<Length-1;i++)
{ double temp = dis[bytes[i]*Member::Length+bytes[i+1]];
s+=temp;
}
s+= dis[bytes[0]*Member::Length+bytes[Member::Length]];
this->dist = s;
return s;
}
inline double Member::Adaptablity(double miniS)//¼ÆËãÊÊÓ¦¶È //Ϊ×Ü·³ÌµÄƽ·½µÄµ¹Êý
{ double s =this->dist;
s -= 0.9 * miniS; s*=s;
return 1000000/s;
}


void Generation::FG() //FirstGeneration
{
for(int i = 0; i<Generation::msize;i++)
members[i].diyidai();
}
Generation& Generation::birth()
{
Generation * child = new Generation();
for(int i=0;i<msize;i++)
{
double p1 = random1();
int j;
for(j=0;j<Generation::msize && this->board[j]<p1;j++);
//delete[] child->members[i].bytes;
child->members[i] = this->members[j];
cout<<i<<endl;
}
return *child;
}
Member& Member::operator=(Member& x) //
{
if(this->bytes != NULL) delete[] this->bytes;
if(NULL==(this->bytes = new char[Member::Length])) cout<<"memory
error";
for(int i=0;i<Member::Length;i++)
this->bytes[i]=x.bytes[i];
return *this;
}
void Generation::jiaocha(Member &a,Member &b) //½»²æ
{
//
cout<<"positionxxx"<<endl;
cout<<endl;
for(int p=0;p<Member::Length;p++) cout<<(int)b.bytes[p]<<" ";
cout<<endl;
bool *flagA=new bool[Member::Length];
bool *flagB=new bool[Member::Length];
memset(flagA,0,sizeof(flagA));
memset(flagB,0,sizeof(flagB));
char * Abytes = new char[Member::Length];
char * Bbytes = new char[Member::Length];
for(int i=0;i<Member::Length;i++)
{Abytes[i]=a.bytes[i];Bbytes[i]=b.bytes[i];}
int x1 = random()%Member::Length;
int x2 = random()%Member::Length;
if(x1>x2) swap<int>(x1,x2);
i=x1;int j=0;
for(;i<=x2;i++,j++)
{ Abytes[j]=a.bytes[i];Bbytes[j]=a.bytes[i];
flagA[Abytes[j]]=true; flagB[Bbytes[j]]=true;}
int j1=j,j2=j;
for(int k=0;k<Member::Length;k++)
{
char temp = b.bytes[k];
if(flagA[temp]==false) Abytes[j1++] =temp;
} assert(j1==Member::Length);
for(k=0;k<Member::Length;k++)
{
char temp = a.bytes[k];
if(flagB[temp]==false) Bbytes[j2++] = temp;
} assert(j2==Member::Length);
delete[] a.bytes;
delete[] b.bytes;
a.bytes = Abytes; b.bytes = Bbytes;
delete [] flagA; delete [] flagB;

}
void Generation::setBoard()
{ double s = 0;
for(int i=0;i<msize;i++)
{ s+=members[i].Adaptablity(this->miniS); board[i]=s;}
for(i=0;i<msize;i++)//normalize
{ board[i]/=board[msize-1];}
}
//DEL void Generation::Init()
//DEL {
//DEL
//DEL }

int Member::Length=0;
double Member::p = 0.1;
int Generation::msize = 10;
void main()
{
freopen("f:\\oliver30.txt","r",stdin);
srand((int)time(0));
int CntCity,i,j;
cin>>CntCity;
Member::Length = CntCity;
cities = new city[CntCity];
double temp;
for( i=0;i<CntCity;i++)
{ cin>>temp>>cities[i].x>>cities[i].y>>temp;}
for(i=0;i<CntCity;i++)
{cout<<cities[i].x<<" "<<cities[i].y<<endl;}
dis = new double[CntCity*CntCity]; //done
for(i=0;i<CntCity;i++)
{
for(j=0;j<CntCity;j++)
{ dis[i*CntCity+j]= distance(CntCity,(char)i,(char)j);
cout<<dis[i*CntCity+j]<<" ";}cout<<endl;
}

Generation * g1 = new Generation(),gt;
g1->FG();g1->CalcDis();g1->CalcMiniDis();
g1->setBoard();g1->PrintAllDis();g1->PrintBoard();

for(i=0;i<=100;i++)
{
Generation * g2 = &(g1->birth());
for(j=0;j<Generation::msize/2;j++)
{g2->jiaocha(g2->members[i],g2->members[i+Generation::msize]);}
g2->CalcDis();
g2->CalcMiniDis();
g2->setBoard();
g2->PrintAllDis();
g2->PrintBoard();
cout<<g1->miniS<<endl;
delete g1;
cout<<" xxxxxxxxxxxx"<<endl;
g1 = g2;
}
}

Mar 29 '07 #1
3 2730
// this is the oliver30.txt file
30
0 4.1 9.4 1
1 3.7 8.4 2
2 5.4 6.7 1
3 2.5 6.2 3
4 0.7 6.4 1
5 0.2 9.9 0
6 6.8 5.8 2
7 7.1 4.4 1
8 5.4 6.2 0
9 8.3 6.9 2
10 6.4 6 1
11 1.8 5.4 0
12 2.2 6 1
13 8.3 4.6 0
14 9.1 3.8 1
15 2.5 3.8 3
16 2.4 4.2 0
17 5.8 6.9 0
18 7.1 7.1 0
19 7.4 7.8 0
20 8.7 7.6 1
21 1.8 4 0
22 1.3 4 2
23 8.2 7 1
24 6.2 3.2 1
25 5.8 3.5 0
26 4.5 2.1 0
27 4.1 2.6 1
28 4.4 3.5 0
29 0.4 5 1

Mar 29 '07 #2
On 2007-03-29 20:07, Baby Lion wrote:
hi,everyone ,
one Runtime error occur when running , maybe it's about assigning
memory .
I need your help , thanks.
It's about the travelling sellman problem .
Run it through the debugger.

--
Erik Wikström
Mar 29 '07 #3
On 29 Mar 2007 11:07:10 -0700 in comp.lang.c++, "Baby Lion"
<Ba************@gmail.comwrote,
> for(;i<=x2;i++,j++)
{ Abytes[j]=a.bytes[i];Bbytes[j]=a.bytes[i];
That second a.bytes looks suspicious.

The whole program is impossible to understand.
Please re-write it so that everything is clear and straightforward.
Mar 29 '07 #4

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

5
by: Reza Roby | last post by:
The following code reports a runtime error "v has no properties." function ff() { var v; v.x=5; //error alert(v.x); } But this one alerts "undefined":
6
by: Dan Roberts | last post by:
I am running some off-the-shelf software that is written in ASP, which uses JScript to generate dynamic content within HTML forms. There are several ASP pages which are partially rendering to IE,...
1
by: Aleks A. | last post by:
Greetings all, I'm getting the following 2 errors, back to back, ever couple of days. Anyone encountered anything of the sort? After these 2 errors occur, the asp.net application stops...
24
by: Dave | last post by:
I understand that VS.NET is supposed to compile native Win32 apps that do not require the .Net runtime. If that's the case then there is something else from the VS200x package that is required. ...
2
by: sj | last post by:
I am using Access 03 to develop a Quotation system and has this strange enconter. On computer with Full Access Ver. --------------------------------------------------- The MDB program works...
3
by: Dave G | last post by:
I recently finished a system in Access 2003 for a client and loaded it onto their server. They use the A2003 runtime version. One of the main forms contains a TAB control. On moving away from one...
2
by: suneel pandey | last post by:
when I open aspx page from html this error occur Runtime Error Description: An application error occurred on the server. The current custom error settings for this application prevent the...
3
by: falderals | last post by:
I get the runtime error "_gat is undefined" and a popup yes/no option to debug when I run the code below which is code to "screen scrape" the text off a web page without a browser. When I click "no...
2
by: =?Utf-8?B?TUNN?= | last post by:
I have an UpdatePanel that is throwing the following error on an attempted postback: Sys.WebForms.PagerequestManagerServerErrorException: An Unknown error occurred while processing the request...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.