📄 app.c
字号:
/* lil-gp Genetic Programming System, version 1.0, 11 July 1995 * Copyright (C) 1995 Michigan State University * * This program is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * Douglas Zongker (zongker@isl.cps.msu.edu) * Dr. Bill Punch (punch@isl.cps.msu.edu) * * Computer Science Department * A-714 Wells Hall * Michigan State University * East Lansing, Michigan 48824 * USA * */#include <stdio.h>#include <math.h>#include "xm_lib.h"#include "forms.h"#include "gp-form.h"#include <lilgp.h>function sets[4][30] ={ /*** RPB ***/ { /*** Functions ***/ { f_play_two, NULL, NULL, 2, "play-two", FUNC_DATA, -1, 0 }, { f_add_space, NULL, NULL, 1, "add-space", FUNC_DATA, -1, 0 }, { f_play_twice, NULL, NULL, 1, "play-twice", FUNC_DATA, -1, 0 }, { f_shift_up, NULL, NULL, 1, "shift-up", FUNC_DATA, -1, 0 }, { f_shift_down, NULL, NULL, 1, "shift-down", FUNC_DATA, -1, 0 }, { f_mirror, NULL, NULL, 1, "mirror", FUNC_DATA, -1, 0 }, { f_play_and_mirror, NULL, NULL, 1, "play-and-mirror", FUNC_DATA, -1, 0 },/* { NULL, NULL, NULL, -1, "ADF0", EVAL_DATA, 1, 0 }, { NULL, NULL, NULL, -1, "ADF1", EVAL_DATA, 2, 0 }, { NULL, NULL, NULL, -1, "ADF2", EVAL_DATA, 3, 0 },*/ /*** Terminals ***/ { f_C_4, NULL, NULL, 0, "C-4", TERM_NORM, -1, 0 }, { f_D_4, NULL, NULL, 0, "D-4", TERM_NORM, -1, 0 }, { f_E_4, NULL, NULL, 0, "E-4", TERM_NORM, -1, 0 }, { f_F_4, NULL, NULL, 0, "F-4", TERM_NORM, -1, 0 }, { f_G_4, NULL, NULL, 0, "G-4", TERM_NORM, -1, 0 }, { f_A_5, NULL, NULL, 0, "A-5", TERM_NORM, -1, 0 }, { f_B_5, NULL, NULL, 0, "B-5", TERM_NORM, -1, 0 }, { f_RST, NULL, NULL, 0, "RST", TERM_NORM, -1, 0 }#ifndef C_MAJOR ,{ f_CS4, NULL, NULL, 0, "C#4", TERM_NORM, -1, 0 }, { f_DS4, NULL, NULL, 0, "D#4", TERM_NORM, -1, 0 }, { f_FS4, NULL, NULL, 0, "F#4", TERM_NORM, -1, 0 }, { f_GS4, NULL, NULL, 0, "G#4", TERM_NORM, -1, 0 }, { f_AS5, NULL, NULL, 0, "A#5", TERM_NORM, -1, 0 }#endif #ifdef CHORDS , { f_C_Chord, NULL, NULL, 0, "C-Chord", TERM_NORM, -1, 0 }, { f_D_Chord, NULL, NULL, 0, "D-Chord", TERM_NORM, -1, 0 }, { f_E_Chord, NULL, NULL, 0, "E-Chord", TERM_NORM, -1, 0 }, { f_F_Chord, NULL, NULL, 0, "F-Chord", TERM_NORM, -1, 0 }, { f_G_Chord, NULL, NULL, 0, "G-Chord", TERM_NORM, -1, 0 }, { f_A_Chord, NULL, NULL, 0, "A-Chord", TERM_NORM, -1, 0 }, { f_B_Chord, NULL, NULL, 0, "B-Chord", TERM_NORM, -1, 0 }#endif }, /*** ADF0 ***/ { /*** Functions ***/ { f_play_two, NULL, NULL, 2, "play-two", FUNC_DATA, -1, 0 }, { f_add_space, NULL, NULL, 1, "add-space", FUNC_DATA, -1, 0 }, { f_play_twice, NULL, NULL, 1, "play-twice", FUNC_DATA, -1, 0 }, { f_shift_up, NULL, NULL, 1, "shift-up", FUNC_DATA, -1, 0 }, { f_shift_down, NULL, NULL, 1, "shift-down", FUNC_DATA, -1, 0 }, { f_mirror, NULL, NULL, 1, "mirror", FUNC_DATA, -1, 0 }, { f_play_and_mirror, NULL, NULL, 1, "play-and-mirror", FUNC_DATA, -1, 0 }, /*** Terminals ***/ { f_C_4, NULL, NULL, 0, "C-4", TERM_NORM, -1, 0 }, { f_D_4, NULL, NULL, 0, "D-4", TERM_NORM, -1, 0 }, { f_E_4, NULL, NULL, 0, "E-4", TERM_NORM, -1, 0 }, { f_F_4, NULL, NULL, 0, "F-4", TERM_NORM, -1, 0 }, { f_G_4, NULL, NULL, 0, "G-4", TERM_NORM, -1, 0 }, { f_A_5, NULL, NULL, 0, "A-5", TERM_NORM, -1, 0 }, { f_B_5, NULL, NULL, 0, "B-5", TERM_NORM, -1, 0 }, { f_RST, NULL, NULL, 0, "RST", TERM_NORM, -1, 0 }#ifndef C_MAJOR ,{ f_CS4, NULL, NULL, 0, "C#4", TERM_NORM, -1, 0 }, { f_DS4, NULL, NULL, 0, "D#4", TERM_NORM, -1, 0 }, { f_FS4, NULL, NULL, 0, "F#4", TERM_NORM, -1, 0 }, { f_GS4, NULL, NULL, 0, "G#4", TERM_NORM, -1, 0 }, { f_AS5, NULL, NULL, 0, "A#5", TERM_NORM, -1, 0 }#endif#ifdef CHORDS , { f_C_Chord, NULL, NULL, 0, "C-Chord", TERM_NORM, -1, 0 }, { f_D_Chord, NULL, NULL, 0, "D-Chord", TERM_NORM, -1, 0 }, { f_E_Chord, NULL, NULL, 0, "E-Chord", TERM_NORM, -1, 0 }, { f_F_Chord, NULL, NULL, 0, "F-Chord", TERM_NORM, -1, 0 }, { f_G_Chord, NULL, NULL, 0, "G-Chord", TERM_NORM, -1, 0 }, { f_A_Chord, NULL, NULL, 0, "A-Chord", TERM_NORM, -1, 0 }, { f_B_Chord, NULL, NULL, 0, "B-Chord", TERM_NORM, -1, 0 }#endif }, /*** ADF1 ***/ { /*** Functions ***/ { f_play_two, NULL, NULL, 2, "play-two", FUNC_DATA, -1, 0 }, { f_add_space, NULL, NULL, 1, "add-space", FUNC_DATA, -1, 0 }, { f_play_twice, NULL, NULL, 1, "play-twice", FUNC_DATA, -1, 0 }, { f_shift_up, NULL, NULL, 1, "shift-up", FUNC_DATA, -1, 0 }, { f_shift_down, NULL, NULL, 1, "shift-down", FUNC_DATA, -1, 0 }, { f_mirror, NULL, NULL, 1, "mirror", FUNC_DATA, -1, 0 }, { f_play_and_mirror, NULL, NULL, 1, "play-and-mirror", FUNC_DATA, -1, 0 }, /*** Terminals ***/ { f_C_4, NULL, NULL, 0, "C-4", TERM_NORM, -1, 0 }, { f_D_4, NULL, NULL, 0, "D-4", TERM_NORM, -1, 0 }, { f_E_4, NULL, NULL, 0, "E-4", TERM_NORM, -1, 0 }, { f_F_4, NULL, NULL, 0, "F-4", TERM_NORM, -1, 0 }, { f_G_4, NULL, NULL, 0, "G-4", TERM_NORM, -1, 0 }, { f_A_5, NULL, NULL, 0, "A-5", TERM_NORM, -1, 0 }, { f_B_5, NULL, NULL, 0, "B-5", TERM_NORM, -1, 0 }, { f_RST, NULL, NULL, 0, "RST", TERM_NORM, -1, 0 }#ifndef C_MAJOR ,{ f_CS4, NULL, NULL, 0, "C#4", TERM_NORM, -1, 0 }, { f_DS4, NULL, NULL, 0, "D#4", TERM_NORM, -1, 0 }, { f_FS4, NULL, NULL, 0, "F#4", TERM_NORM, -1, 0 }, { f_GS4, NULL, NULL, 0, "G#4", TERM_NORM, -1, 0 }, { f_AS5, NULL, NULL, 0, "A#5", TERM_NORM, -1, 0 }#endif #ifdef CHORDS , { f_C_Chord, NULL, NULL, 0, "C-Chord", TERM_NORM, -1, 0 }, { f_D_Chord, NULL, NULL, 0, "D-Chord", TERM_NORM, -1, 0 }, { f_E_Chord, NULL, NULL, 0, "E-Chord", TERM_NORM, -1, 0 }, { f_F_Chord, NULL, NULL, 0, "F-Chord", TERM_NORM, -1, 0 }, { f_G_Chord, NULL, NULL, 0, "G-Chord", TERM_NORM, -1, 0 }, { f_A_Chord, NULL, NULL, 0, "A-Chord", TERM_NORM, -1, 0 }, { f_B_Chord, NULL, NULL, 0, "B-Chord", TERM_NORM, -1, 0 }#endif }, /*** ADF2 ***/ { /*** Functions ***/ { f_play_two, NULL, NULL, 2, "play-two", FUNC_DATA, -1, 0 }, { f_add_space, NULL, NULL, 1, "add-space", FUNC_DATA, -1, 0 }, { f_play_twice, NULL, NULL, 1, "play-twice", FUNC_DATA, -1, 0 }, { f_shift_up, NULL, NULL, 1, "shift-up", FUNC_DATA, -1, 0 }, { f_shift_down, NULL, NULL, 1, "shift-down", FUNC_DATA, -1, 0 }, { f_mirror, NULL, NULL, 1, "mirror", FUNC_DATA, -1, 0 }, { f_play_and_mirror, NULL, NULL, 1, "play-and-mirror", FUNC_DATA, -1, 0 }, { NULL, NULL, NULL, -1, "ADF0", EVAL_DATA, 1, 0 }, { NULL, NULL, NULL, -1, "ADF1", EVAL_DATA, 2, 0 }, /*** Terminals ***/ { f_C_4, NULL, NULL, 0, "C-4", TERM_NORM, -1, 0 }, { f_D_4, NULL, NULL, 0, "D-4", TERM_NORM, -1, 0 }, { f_E_4, NULL, NULL, 0, "E-4", TERM_NORM, -1, 0 }, { f_F_4, NULL, NULL, 0, "F-4", TERM_NORM, -1, 0 }, { f_G_4, NULL, NULL, 0, "G-4", TERM_NORM, -1, 0 }, { f_A_5, NULL, NULL, 0, "A-5", TERM_NORM, -1, 0 }, { f_B_5, NULL, NULL, 0, "B-5", TERM_NORM, -1, 0 }, { f_RST, NULL, NULL, 0, "RST", TERM_NORM, -1, 0 }#ifndef C_MAJOR ,{ f_CS4, NULL, NULL, 0, "C#4", TERM_NORM, -1, 0 }, { f_DS4, NULL, NULL, 0, "D#4", TERM_NORM, -1, 0 }, { f_FS4, NULL, NULL, 0, "F#4", TERM_NORM, -1, 0 }, { f_GS4, NULL, NULL, 0, "G#4", TERM_NORM, -1, 0 }, { f_AS5, NULL, NULL, 0, "A#5", TERM_NORM, -1, 0 }#endif #ifdef CHORDS , { f_C_Chord, NULL, NULL, 0, "C-Chord", TERM_NORM, -1, 0 }, { f_D_Chord, NULL, NULL, 0, "D-Chord", TERM_NORM, -1, 0 }, { f_E_Chord, NULL, NULL, 0, "E-Chord", TERM_NORM, -1, 0 }, { f_F_Chord, NULL, NULL, 0, "F-Chord", TERM_NORM, -1, 0 }, { f_G_Chord, NULL, NULL, 0, "G-Chord", TERM_NORM, -1, 0 }, { f_A_Chord, NULL, NULL, 0, "A-Chord", TERM_NORM, -1, 0 }, { f_B_Chord, NULL, NULL, 0, "B-Chord", TERM_NORM, -1, 0 }#endif } };/* app_build_function_sets() * * this function should build data structures describing the function * set(s) and the trees of the individual. it should then pass these * structures to function_sets_init(), destroy its data structures, * and return the (integer) return value from function_sets_init(). * * see the manual for more information on constructing this function. */int app_build_function_sets ( void ){ function_set *fset; int *tree_map; char **tree_name; int ret; int num_function_sets = 1; int num_trees = 1; fset = (function_set *)MALLOC ( num_function_sets * sizeof ( function_set ) ); fset[0].size = 20; #ifdef C_MAJOR fset[0].size -= 5;#endif#ifdef CHORDS fset[0].size += 7;#endif fset[0].cset = sets[0]; /* fset[1].size = 20; fset[1].cset = sets[1]; fset[2].size = 21; fset[2].cset = sets[2]; fset[3].size = 22; fset[3].cset = sets[3];*/ tree_map = (int *)MALLOC ( num_trees * sizeof ( int ) ); /* specify, for each tree, what function set to use. */ tree_map[0] = 0; /* tree_map[1] = 1; tree_map[2] = 2; tree_map[3] = 3;*/ tree_name = (char **)MALLOC ( num_trees * sizeof ( char * ) ); /* give each tree a name. */ tree_name[0] = "MAIN";/* tree_name[1] = "ADF0"; tree_name[2] = "ADF1"; tree_name[3] = "ADF2";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -