> > int main(int argc, char *argv[])
> > {
> > srand(time(NULL));
>
> Hvor er "srand" erklæret ?
> Er programmet et C eller C++ program ?
Srand er da en del af C's library funktioner eller noget i den retning, med
andre ord: funktionen ligger i C.
> > arg argumenter;
>
> Hvor er typen "arg" erklæret ?
>
> > argumenter = commandVar(&argc, argv);
> >
> > /* Her skaber vi vores knuder, enten ud fra en fil, eller
> genererer
> > dem */
> > knude *knudeArray;
>
> Hvor er typen "knude" erklæret ?
>
> Man er nok nød til at se lidt af "header.h"
Ok, du får den herunder
---------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <limits.h>
#include <float.h>
#include <math.h>
#define STD_KNUDEANTAL 10
#define STD_INDIVIDANTAL 500
#define STD_MAKSGEN 1000
#define STD_MUTATION_SAND 1
#define STD_MUTATION_PROCENT 5
#define STD_SELEKTIONMETODE "roulette"
#define STD_MUTATIONMETODE "random"
#define STD_MUTATIONSKIFT 0
#define STD_DOBBELBARN 1
#define STD_BEDSTEFORAELDER 1
#define STD_ELITISMEPROCENT 5
#define MAX_TEMP_STRING 1000
#define MAX_TEMP_TAL 50
#define PI 3.14
typedef struct time_keeper
{
clock_t begin_clock, save_clock;
time_t begin_time, save_time;
} time_keeper;
typedef struct individ
{
double laengde;
int *knudeArray;
} individ;
typedef struct knude
{
double x, y;
} knude;
typedef struct cons_cell
{
int data;
struct cons_cell *next;
} cons_cell;
typedef struct foraeldre
{
int fA, fB;
} foraeldre;
typedef struct arg
{
int knudeAntal, individAntal, maksGen, bedsteForaeldre, cirkelKnuder,
mutationSkift, dobbelBarn;
int udskrivTekst, testMode, printGrafFil;
double mutationSandsynlighed, mutationProcent, elitismeUdvaelgProcent,
sidsteLaengde, gennemsnitLaengde;
char *selektionMetode, *mutationMetode;
char *filnavn, *resultatFil, *csvGenerationFil;
char *mutationStandard;
} arg;
/* Funktioner i generation.c */
void lavGenerationer(arg *argumenter, knude *knudeArray);
/* Funktioner i hentknuder.c */
knude *hentKnuder(arg *argumenter);
knude *lavKnuder(arg *argumenter);
knude *lavCirkelKnuder(arg *argumenter);
knude *indlaesKnuder(arg *argumenter);
int odd(int x);
/* Funktioner i lavPopulation.c */
individ *lavPopulation(knude knudeArray[], arg *argumenter);
individ lavIndivid(knude knudeArray[], int knudeAntal);
cons_cell *arrayTilListe(knude knudeArray[], int knudeAntal);
cons_cell *cons(int data, cons_cell *next);
int head(cons_cell *cell);
cons_cell *tail(cons_cell *cell);
void sletElement(cons_cell *p, int k);
/* Funktioner i sorter.c */
void popSort(individ *popArray, knude knudeArray[], arg *argumenter);
void byt(individ *, individ *);
double lavLaengde(int intKnudeArray[], knude knudeArray[], int knudeAntal);
/* Funktioner i elitisme.c */
int elitisme (individ *glPopArray, individ nyPopArray[], arg *argumenter);
/* Funktioner i selektion.c */
foraeldre *selektion(individ popListe[], int antalForaeldre, arg
*argumenter);
/* Funktioner i roulette.c */
foraeldre roulette(arg *argumenter, double fitness[]);
double *lavFitness(individ popArray[], arg *argumenter);
/* Funktioner i crossover.c */
void lavCrossover(foraeldre *foraeldreArray, individ popArray[], int
antalForaeldre,
arg *argumenter, individ nytPopArray[], int startIndex);
/* Funktioner i mutation.c */
char *strCopy (const char *s);
char *strToLower (const char *input);
int strSammenLign (const char *s1, const char *s2, size_t u);
void mutation(individ *popArray, arg *argumenter, int startIndex);
void mutering(individ *individ, arg *argumenter);
int random(int minimum, int maksimum);
int afrund(double x);
void bytKnuder(int *p, int *q);
void selectMutMetode (arg *argumenter, int generationer);
/* Funktioner i command.c */
arg commandVar(int *arg_antal, char *argumenter[]);
void print_help(void);
/* Funktioner i interaktion.c */
int inter_KnudeAntal(void);
char *inter_FilNavn(void);
int inter_IndividAntal(void);
int inter_MaksGen(void);
int inter_cirkelKnuder(void);
double inter_Elitisme(void);
double inter_MutationProcent(void);
double inter_MutationSandsynlighed(void);
char *inter_SelektionMetode(void);
char *inter_MutationMetode(void);
char *inter_ResultatFil(void);
int inter_MutationSkift(void);
int inter_getInt(void);
double inter_getDouble(void);
char *inter_getString(void);
/* SkrivIndivid */
void rydFil (arg *argumenter);
char *dkKommatal (double tal, int decimaler);
void skrivIndividLaengde (arg *argumenter, individ *individ, int
generation);
void RydTempResultat (arg *argumenter);
void skrivTestSnit(arg *argumenter, int test_nr);