diff --git a/Darwin-copy-resources-to-bundle.sh b/Darwin-copy-resources-to-bundle.sh new file mode 100755 index 00000000..62228424 --- /dev/null +++ b/Darwin-copy-resources-to-bundle.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +appfolder=BrewBuddy.app +cp -R ./Misc/Standaard\ databanken/* Output/$appfolder/Contents/Resources/ +cp ./Misc/Handleiding/Introductie\ BrouwHulp\ Sassy\ Saison.pdf Output/$appfolder/Contents/Resources/Introductie\ BrewBuddy\ Sassy\ Saison.pdf diff --git a/Source/3rdParty/fann/usr/local/lib/libdoublefann.2.2.0.dylib b/Source/3rdParty/fann/usr/local/lib/libdoublefann.2.2.0.dylib new file mode 100755 index 00000000..da74893d Binary files /dev/null and b/Source/3rdParty/fann/usr/local/lib/libdoublefann.2.2.0.dylib differ diff --git a/Source/3rdParty/fann/usr/local/lib/libfann.2.2.0.dylib b/Source/3rdParty/fann/usr/local/lib/libfann.2.2.0.dylib new file mode 100755 index 00000000..6cb0fe5b Binary files /dev/null and b/Source/3rdParty/fann/usr/local/lib/libfann.2.2.0.dylib differ diff --git a/Source/3rdParty/fann/usr/local/lib/libfixedfann.2.2.0.dylib b/Source/3rdParty/fann/usr/local/lib/libfixedfann.2.2.0.dylib new file mode 100755 index 00000000..1e5b8595 Binary files /dev/null and b/Source/3rdParty/fann/usr/local/lib/libfixedfann.2.2.0.dylib differ diff --git a/Source/3rdParty/fann/usr/local/lib/libfloatfann.2.2.0.dylib b/Source/3rdParty/fann/usr/local/lib/libfloatfann.2.2.0.dylib new file mode 100755 index 00000000..b817a85d Binary files /dev/null and b/Source/3rdParty/fann/usr/local/lib/libfloatfann.2.2.0.dylib differ diff --git a/Source/Units/bh_report.pas b/Source/Units/bh_report.pas index c48e5f21..3e92b35d 100644 --- a/Source/Units/bh_report.pas +++ b/Source/Units/bh_report.pas @@ -934,8 +934,9 @@ procedure TBHRElement.SetTop(t : word); BRect.Left:= 0; BRect.Bottom:= SRect.Bottom - SRect.Top; BRect.Right:= SRect.Right - SRect.Left; - + {$ifndef Darwin} OTFH:= FChart.AxisList[0].Title.Font.Size; + {$endif} OMFH:= FChart.AxisList[0].Marks.LabelFont.Size; OTL:= FChart.AxisList[0].TickLength; OLFH:= FChart.Legend.Font.Size; @@ -946,7 +947,9 @@ procedure TBHRElement.SetTop(t : word); for i:= 0 to FChart.AxisList.Count - 1 do begin FChart.AxisList[i].Marks.LabelFont.Size:= round(GSc * 9); + {$ifndef Darwin} FChart.AxisList[i].Title.Font.Size:= round(GSC * 9); + {$endif} FChart.AxisList[i].TickLength:= round(GSc * OTL); end; FChart.Legend.Font.Size:= round(GSc * 9); @@ -962,7 +965,9 @@ procedure TBHRElement.SetTop(t : word); for i:= 0 to FChart.AxisList.Count - 1 do begin FChart.AxisList[i].Marks.LabelFont.Size:= OMFH; + {$ifndef Darwin} FChart.AxisList[i].Title.Font.Size:= OTFH; + {$endif} FChart.AxisList[i].TickLength:= OTL; end; FChart.Legend.Font.Size:= OLFH; diff --git a/Source/Units/containers.pas b/Source/Units/containers.pas index bdb3f8cb..609cf72b 100644 --- a/Source/Units/containers.pas +++ b/Source/Units/containers.pas @@ -3059,11 +3059,11 @@ TStyleLetters = record end; var sourcedata, destdata, sourcesounds, destsounds : string; begin - {$ifdef UNIX} + {$ifdef linux} sourcedata:= '/usr/share/brewbuddy/'; {$endif} {$ifdef darwin} - sourcedata:= '/usr/share/brewbuddy/'; + sourcedata:= ProgramDirectory() + 'BrewBuddy.app/Contents/Resources/'; {$endif} {$ifdef Windows} sourcedata:= ExtractFilePath(Application.ExeName) + 'brewbuddy\'; @@ -3116,9 +3116,9 @@ TStyleLetters = record CheckFile(sourcedata, destdata, 'Introductie BrewBuddy Sassy Saison.pdf'); {$endif} {$ifdef Darwin} - CheckFile('/usr/share/doc/brewbuddy/', destdata, 'Introductie BrewBuddy Sassy Saison.pdf'); + CheckFile(sourcedata, destdata, 'Introductie BrewBuddy Sassy Saison.pdf'); {$endif} - {$ifdef Unix} + {$ifdef linux} CheckFile('/usr/share/doc/brewbuddy/', destdata, 'Introductie BrewBuddy Sassy Saison.pdf'); {$endif} CheckFile(sourcesounds, destsounds, 'alarm.wav'); @@ -3232,11 +3232,11 @@ TStyleLetters = record end else //copy previous database to new location, but clear brews begin - {$ifdef UNIX} + {$ifdef linux} sourcedata:= '/usr/share/brewbuddy/'; {$endif} {$ifdef darwin} - sourcedata:= '/usr/share/brewbuddy/'; + sourcedata:= '/usr/local/share/brewbuddy/'; {$endif} {$ifdef Windows} sourcedata:= ExtractFilePath(Application.ExeName) + 'brewbuddy\'; @@ -3353,7 +3353,7 @@ TStyleLetters = record ExecFolder:= Application.Location; log('ExecFolder = ' + ExecFolder); OnUSB:= false; - {$ifdef UNIX} + {$ifdef linux} {DriveLetter:= LeftStr(ExecFolder, 6); if DriveLetter = '/media' then begin diff --git a/Source/Units/fann.pas b/Source/Units/fann.pas index 690d8717..5fe450be 100644 --- a/Source/Units/fann.pas +++ b/Source/Units/fann.pas @@ -1,1228 +1,1228 @@ -unit FANN; -{$mode delphi} -interface -{******************************************************* - - Only Delphi 6 and above supports variable arguments - functions. - If you are using a older version of Delphi comment the - VARIABLE_ARGUMENTS directive. - If you disable the VARIABLE_ARGUMENTS directive the - following functions will not be available: - fann_create_shortcut - fann_create_sparse - fann_create_standard - -********************************************************} - -{$DEFINE VARIABLE_ARGUMENTS} - -{******************************************************* - - If you want to use Fixed Fann or Double Fann please - uncomment the corresponding definition. - As default fann.pas uses the fannfloat dll. - -********************************************************} -//{$DEFINE FIXEDFANN} //Uncomment for fixed fann -{$DEFINE DOUBLEFANN} //Uncomment for double fann - - - - -{$ifdef windows} -{$IF Defined(FIXEDFANN)} -const DLL_FILE = 'fannfixed.dll'; -{$ELSEIF Defined(DOUBLEFANN)} -const DLL_FILE = 'fanndouble.dll'; -{$ELSE} -const DLL_FILE = 'fannfloat.dll'; -{$IFEND} -{$endif} -{$ifdef linux} -{$IF Defined(FIXEDFANN)} -const DLL_FILE = 'libfixedfann.so'; -{$ELSEIF Defined(DOUBLEFANN)} -const DLL_FILE = 'libdoublefann.so'; -{$ELSE} -const DLL_FILE = 'libfloatfann.so'; -{$IFEND} -{$endif} -{$ifdef darwin} -{$IF Defined(FIXEDFANN)} -const DLL_FILE = 'libfixedfann.2.2.0.dylib'; -{$ELSEIF Defined(DOUBLEFANN)} -const DLL_FILE = 'libdoublefann.2.2.0.dylib'; -{$ELSE} -const DLL_FILE = 'libfloatfann.2.2.0.dylib'; -{$IFEND} -{$endif} - - -type - - {$IF Defined(FIXEDFANN)} - fann_type = integer; - {$ELSEIF Defined(DOUBLEFANN)} - fann_type = double; - {$ELSE} - fann_type = single; - {$IFEND} - - - PFann_Type = ^fann_type; - - PPFann_Type = ^pfann_type; - - Fann_Type_Array = array [0..65535] of fann_type; - - PFann_Type_Array = ^Fann_type_array; - - PPFann_Type_Array = array [0..65535] of ^Fann_Type_Array; - - - - - (* MICROSOFT VC++ STDIO'S FILE DEFINITION*) - _iobuf = packed record - _ptr: Pchar; - _cnt: integer; - _base: Pchar; - _flag: integer; - _file: integer; - _charbuf: integer; - _bufsiz: integer; - _tmpfname: Pchar; - end; - - - PFile = ^TFile; - TFile = _iobuf; - - - PPFann_Neuron = ^PFann_Neuron; - PFann_Neuron = ^TFann_Neuron; - TFann_Neuron = packed record - first_con: Cardinal; - last_con: Cardinal; - sum: fann_type; - value: fann_type; - activation_steepness: fann_type; - activation_function: Cardinal; //enum - end; - - - PFann_Layer = ^TFann_Layer; - TFann_Layer = packed record - first_neuron: PFann_Neuron; - last_neuron: PFann_Neuron; - end; - - PFann = ^TFann; - TFann = packed record - errno_f: cardinal; - error_log: PFile; - errstr: Pchar; - - learning_rate: single; - learning_momentum: single; - connection_rate: single; - - network_type: Cardinal; //ENUM - - first_layer: PFann_Layer; - last_layer: PFann_Layer; - - total_neurons: cardinal; - num_input: cardinal; - num_output: cardinal; - - weights: Pfann_type; - - connections: PPFann_Neuron; - - train_errors: Pfann_type; - - training_algorithm: cardinal; //ENUM - - - {$IFDEF FIXEDFANN} - decimal_point: cardinal; - multiplier: cardinal; - - sigmoid_results: array [0..5] of fann_type; - sigmoid_values: array [0..5] of fann_type; - symmetric_results: array [0..5] of fann_type; - symmetric_values: array [0..5] of fann_type; - - {$ENDIF} - - total_connections: cardinal; - output: pfann_type; - - num_MSE: cardinal; - MSE_value: single; - - num_bit_fail: cardinal; - bit_fail_limit: fann_type; - - train_error_function: cardinal;//enum - train_stop_function: cardinal; //enum - - callback: Pointer; //TFANN_CALLBACK - - user_data: Pointer; - - cascade_output_change_fraction: single; - cascade_output_stagnation_epochs: Cardinal; - cascade_candidate_change_fraction: single; - cascade_candidate_stagnation_epochs: Cardinal; - cascade_best_candidate: Cardinal; - - cascade_candidate_limit: fann_type; - cascade_weight_multiplier: fann_type; - - cascade_max_out_epochs: Cardinal; - cascade_max_cand_epochs: Cardinal; - - cascade_activation_functions: PCardinal; - cascade_activation_functions_count: Cardinal; - - cascade_activation_steepnesses: PFann_Type; - - cascade_activation_steepnesses_count: Cardinal; - cascade_num_candidate_groups: Cardinal; - - cascade_candidate_scores: PFann_Type; - - total_neurons_allocated: Cardinal; - total_connections_allocated: Cardinal; - - - - quickprop_decay: single; - quickprop_mu: single; - - rprop_increase_factor: single; - rprop_decrease_factor: single; - - rprop_delta_min: single; - rprop_delta_max: single; - - rprop_delta_zero: single; - - train_slopes: pfann_type; - - prev_steps: pfann_type; - - prev_train_slopes: pfann_type; - - prev_weights_deltas: pfann_type; - - {$IFNDEF FIXEDFANN} - scale_mean_in: psingle; - scale_deviation_in: psingle; - scale_new_min_in: psingle; - scale_factor_in: psingle; - scale_mean_out: psingle; - scale_deviation_out: psingle; - scale_new_min_out: psingle; - scale_factor_out: psingle; - - {$ENDIF} - end; - - PFann_Train_Data = ^TFann_Train_Data; - TFann_Train_Data = packed record - errno_f: cardinal; - erro_log: PFile; - errstr: Pchar; - num_data: cardinal; - num_input: cardinal; - num_ouput: cardinal; - input: PPFann_Type_Array; - output: PPFann_Type_Array; - end; - - PFann_Connection = ^TFann_Connection; - TFann_Connection = packed record - from_neuron: Cardinal; - to_neuron: Cardinal; - weight: fann_type; - end; - - PFann_Error = ^TFann_Error; - TFann_Error = packed record - errno_f: Cardinal; //Enum - error_log: PFile; - errstr: PChar; - end; - - - //_Fann_Train = - const - - FANN_TRAIN_INCREMENTAL = 0; - FANN_TRAIN_BATCH = 1; - FANN_TRAIN_RPROP = 2; - FANN_TRAIN_QUICKPROP = 3; - - - //_Fann_Error_Func = - - FANN_ERRORFUNC_LINEAR = 0; - FANN_ERRORFUNC_TANH = 1; - - - //_Fann_Activation_Func = - FANN_LINEAR = 0; - FANN_THRESHOLD = 1; - FANN_THRESHOLD_SYMMETRIC = 2; - FANN_SIGMOID = 3; - FANN_SIGMOID_STEPWISE = 4; - FANN_SIGMOID_SYMMETRIC = 5; - FANN_SIGMOID_SYMMETRIC_STEPWISE = 6; - FANN_GAUSSIAN = 7; - FANN_GAUSSIAN_SYMMETRIC = 8; - FANN_GAUSSIAN_STEPWISE = 9; - FANN_ELLIOT = 10; - FANN_ELLIOT_SYMMETRIC = 11; - FANN_LINEAR_PIECE = 12; - FANN_LINEAR_PIECE_SYMMETRIC = 13; - FANN_SIN_SYMMETRIC = 14; - FANN_COS_SYMMETRIC = 15; - FANN_SIN = 16; - FANN_COS = 17; - - - //_Fann_ErroNo = - FANN_E_NO_ERROR = 0; - FANN_E_CANT_OPEN_CONFIG_R = 1; - FANN_E_CANT_OPEN_CONFIG_W = 2; - FANN_E_WRONG_CONFIG_VERSION = 3; - FANN_E_CANT_READ_CONFIG = 4; - FANN_E_CANT_READ_NEURON = 5; - FANN_E_CANT_READ_CONNECTIONS = 6; - FANN_E_WRONG_NUM_CONNECTIONS = 7; - FANN_E_CANT_OPEN_TD_W = 8; - FANN_E_CANT_OPEN_TD_R = 9; - FANN_E_CANT_READ_TD = 10; - FANN_E_CANT_ALLOCATE_MEM = 11; - FANN_E_CANT_TRAIN_ACTIVATION = 12; - FANN_E_CANT_USE_ACTIVATION = 13; - FANN_E_TRAIN_DATA_MISMATCH = 14; - FANN_E_CANT_USE_TRAIN_ALG = 15; - FANN_E_TRAIN_DATA_SUBSET = 16; - FANN_E_INDEX_OUT_OF_BOUND = 17; - FANN_E_SCALE_NOT_PRESENT = 18; - - - //_Fann_Stop_Func = - - FANN_STOPFUNC_MSE = 0; - FANN_STOPFUNC_BIT = 1; - - //_Fann_Net_Type = - FANN_NETTYPE_LAYER = 0; - FANN_NETTYPE_SHORTCUT = 1; - - type - - TFann_CallBack = function(Ann: PFann; - train: PFann_Train_Data; - max_epochs: Cardinal; - epochs_between_reports: cardinal; - desired_error: single; - epochs: cardinal): integer; cdecl; - - TUser_Function = procedure(num: Cardinal; - num_input: Cardinal; - num_output: cardinal; - input: PFann_Type; - output: PFann_Type); cdecl; - - - - -var - FANN_ERRORFUNC_NAMES: array [0..1] of string = ( - 'FANN_ERRORFUNC_LINEAR', - 'FANN_ERRORFUNC_TANH' - ); - - FANN_TRAIN_NAMES: array [0..3] of string = - ( - 'FANN_TRAIN_INCREMENTAL', - 'FANN_TRAIN_BATCH', - 'FANN_TRAIN_RPROP', - 'FANN_TRAIN_QUICKPROP' - ); - - FANN_ACTIVATIONFUNC_NAMES: array [0..17] of string = - ( - 'FANN_LINEAR', - 'FANN_THRESHOLD', - 'FANN_THRESHOLD_SYMMETRIC', - 'FANN_SIGMOID', - 'FANN_SIGMOID_STEPWISE', - 'FANN_SIGMOID_SYMMETRIC', - 'FANN_SIGMOID_SYMMETRIC_STEPWISE', - 'FANN_GAUSSIAN', - 'FANN_GAUSSIAN_SYMMETRIC', - 'FANN_GAUSSIAN_STEPWISE', - 'FANN_ELLIOT', - 'FANN_ELLIOT_SYMMETRIC', - 'FANN_LINEAR_PIECE', - 'FANN_LINEAR_PIECE_SYMMETRIC', - 'FANN_SIN_SYMMETRIC', - 'FANN_COS_SYMMETRIC', - 'FANN_SIN', - 'FANN_COS' - ); - - FANN_STOPFUNC_NAMES: array [0..1] of string = - ( - 'FANN_STOPFUNC_MSE', - 'FANN_STOPFUNC_BIT' - ); - - FANN_NETTYPE_NAMES: array [0..1] of string = - ( - 'FANN_NETTYPE_LAYER', - 'FANN_NETTYPE_SHORTCUT' - ); - - - //DECLARATIONS FROM FANN.H - - {$IFDEF VARIABLE_ARGUMENTS} - - { - - ATTENTION! - If your compilation breaks here maybe you are using a version of Delphi - prior to 6. In this case you should comment the VARIABLE_ARGUMENTS define - at the beginning of this file and live without this functions! - - } - function fann_create_standard(num_layers: Cardinal): PFann; cdecl; varargs; - - function fann_create_sparse(connection_rate: single; num_layers: Cardinal): PFann; cdecl; varargs; - - function fann_create_shortcut(connection_rate: single): PFann; cdecl; varargs; - - - {$ENDIF} - - - function fann_create_standard_array(num_layers: Cardinal; const layers: PCardinal): PFann; cdecl; - - function fann_create_sparse_array(connection_rate: single; num_layers: Cardinal; const layers: PCardinal): PFann; cdecl; - - function fann_create_shortcut_array(num_layers: cardinal;const layers: Pcardinal): PFann; cdecl; - - - procedure fann_destroy(Ann: PFann); cdecl; - - - function fann_run(ann: PFann; input: PFann_Type): Pfann_type_array; cdecl; - - - procedure fann_randomize_weights(Ann: PFann; Min_weight: fann_type; Max_weight: fann_type); cdecl; - - procedure fann_init_weights(Ann: PFann; train_data: PFann_Train_Data); cdecl; - - - procedure fann_print_connections(ann: PFann);cdecl; - - procedure fann_print_parameters(ann: PFann);cdecl; - - - function fann_get_num_input(Ann: PFann): cardinal;cdecl; - - function fann_get_num_output(Ann: PFann): cardinal;cdecl; - - function fann_get_total_neurons(Ann: PFann): cardinal; cdecl; - - function fann_get_total_connections(Ann: PFann): cardinal; cdecl; - - - function fann_get_network_type(Ann: PFann): cardinal; cdecl; - - function fann_get_connection_rate(Ann: PFann): single; cdecl; - - - function fann_get_num_layers(Ann: PFann): cardinal; cdecl; - - - procedure fann_get_layer_array(Ann: PFann; layers: PCardinal); cdecl; - - procedure fann_get_bias_array(Ann: PFann; bias: PCardinal);cdecl; - - - procedure fann_get_connection_array(Ann: PFann; connections: PFann_Connection);cdecl; - - - procedure fann_set_weight_array(Ann: PFann; connections: PFann_Connection; num_connection: Cardinal);cdecl; - - - procedure fann_set_weight(Ann: PFann; from_neuron: Cardinal; to_neuron: Cardinal; weight: fann_type);cdecl; - - procedure fann_set_user_data(Ann: PFann; user_data: Pointer);cdecl; - - function fann_get_user_data(Ann: PFann): Pointer; cdecl; - - - {$IFDEF FIXEDFANN} - - function fann_get_decimal_point(Ann: Pfann): cardinal; cdecl; - - function fann_get_multiplier(Ann: PFann): cardinal;cdecl; - - {$ENDIF} - - //END OF DECLARATIONS FROM FANN.H - - - - //DECLARATIONS FROM FANN_IO.H - - - function fann_create_from_file(const configuration_file: PChar): PFann; cdecl; - - procedure fann_save(Ann: PFann; Const Configuration_File: PChar);cdecl; - - function fann_save_to_fixed(Ann: PFann; Const Configuration_File: PChar): integer;cdecl; - - //END OF DECLARATIONS FROM FANN_IO.H - - - //DECLARATIONS FROM FANN_TRAIN.H - - {$IFNDEF FIXEDFANN} - procedure fann_train(Ann: PFann; Input: PFann_Type; Desired_Output: PFann_Type);cdecl; - {$ENDIF} - - function fann_test(Ann: PFann; Input: PFann_Type; Desired_Output: Pfann_Type): Pfann_type_array;cdecl; - - - function fann_get_MSE(Ann: PFann): single;cdecl; - - function fann_get_bit_fail(Ann: PFann): Cardinal;cdecl; - - procedure fann_reset_MSE(Ann: Pfann); cdecl; - - - {$IFNDEF FIXEDFANN} - - - procedure fann_train_on_data(Ann: PFann; Data: PFann_Train_Data;max_epochs: cardinal;epochs_between_reports: cardinal; desired_error: single);cdecl; - - procedure fann_train_on_file(Ann: PFann; Filename: Pchar;max_epochs: cardinal;epochs_between_reports: cardinal; desired_error: single); cdecl; - - - - function fann_train_epoch(Ann: PFann; data: PFann_Train_Data): single; cdecl; - - - function fann_test_data(Ann: PFann; data: PFann_Train_Data): single; cdecl; - - {$ENDIF} - - function fann_read_train_from_file(const filename: PChar): PFann_Train_Data; cdecl; - - - - function fann_create_train_from_callback(num_data: Cardinal; - num_input: Cardinal; - num_output: Cardinal; - user_function: TUser_Function): PFann_Train_Data; cdecl; - - - - procedure fann_destroy_train(train_data: PFann_Train_Data); cdecl; - - - procedure fann_shuffle_train_data(Train_Data: PFann_Train_Data);cdecl; - - - procedure fann_scale_train(Ann: PFann; data: PFann_Train_Data);cdecl; - - procedure fann_descale_train(Ann: PFann; data: PFann_Train_Data);cdecl; - - - function fann_set_input_scaling_params(Ann: PFann; - const data: PFann_Train_Data; - new_input_min: single; - new_input_max: single): integer;cdecl; - - - function fann_set_output_scaling_params(Ann: PFann; - const data: PFann_Train_Data; - new_output_min: single; - new_output_max: single): integer;cdecl; - - - - function fann_set_scaling_params(Ann: PFann; - const data: PFann_Train_Data; - new_input_min: single; - new_input_max: single; - new_output_min: single; - new_output_max: single): integer; cdecl; - - - function fann_clear_scaling_params(Ann: PFann): integer; cdecl; - - - - procedure fann_scale_input(Ann: PFann; input_vector: PFann_type); cdecl; - - - procedure fann_scale_output(Ann: PFann; output_vector: PFann_type); cdecl; - - - procedure fann_descale_input(Ann: PFann; input_vector: PFann_type); cdecl; - - - procedure fann_descale_output(Ann: PFann; output_vector: PFann_type); cdecl; - - - procedure fann_scale_input_train_data(Train_Data: PFann_Train_Data; - new_min: fann_type; - new_max: fann_type); cdecl; - - - procedure fann_scale_output_train_data(Train_Data: PFann_Train_Data; - new_min: fann_type; - new_max: fann_type); cdecl; - - - procedure fann_scale_train_data(Train_Data: PFann_Train_Data; - new_min: fann_type; - new_max: fann_type); cdecl; - - - function fann_merge_train_data(Data1: PFann_Train_Data; Data2: PFann_Train_Data): PFann_Train_Data; cdecl; - - - function fann_duplicate_train_data(Data: PFann_Train_Data): PFann_Train_Data;cdecl; - - - function fann_subset_train_data(data: PFann_Train_Data; pos: Cardinal; length: Cardinal): PFann_Train_Data; cdecl; - - - function fann_length_train_data(data: PFann_Train_Data): Cardinal; cdecl; - - - function fann_num_input_train_data(data: PFann_Train_Data): Cardinal; cdecl; - - function fann_num_output_train_data(data: PFann_Train_Data): Cardinal; cdecl; - - function fann_save_train(Data: PFann_train_Data; const Filename: PChar): integer;cdecl; - - function fann_save_train_to_fixed(Data: PFann_train_Data; const FileName: Pchar; decimal_point: cardinal): integer;cdecl; - - - - function fann_get_training_algorithm(Ann: Pfann): cardinal;cdecl; - - procedure fann_set_training_algorithm(Ann: PFann; Training_Algorithm: cardinal);cdecl; - - function fann_get_learning_rate(Ann: PFann): single;cdecl; - - procedure fann_set_learning_rate(Ann: PFann; Learning_Rate: Single); cdecl; - - function fann_get_learning_momentum(Ann: PFann): single;cdecl; - - procedure fann_set_learning_momentum(Ann: PFann; learning_momentum: Single); cdecl; - - - - function fann_get_activation_function(Ann: PFann; layer: integer; neuron: integer): Cardinal; cdecl; //ENUM - - procedure fann_set_activation_function(Ann: PFann; activation_function: Cardinal; layer: integer; neuron: integer); cdecl; //ENUM - - - procedure fann_set_activation_function_layer(Ann: PFann; activation_function: Cardinal; layer: integer); cdecl; //ENUM - - - procedure fann_set_activation_function_hidden(Ann: Pfann; Activation_function: cardinal); cdecl; - - procedure fann_set_activation_function_output(Ann: Pfann; Activation_Function: cardinal); cdecl; - - function fann_get_activation_steepness(Ann: PFann; layer: integer; neuron: integer): fann_type; cdecl; - - - procedure fann_set_activation_steepness(Ann: PFann; steepness: fann_type; layer: integer; neuron: integer); cdecl; - - - procedure fann_set_activation_steepness_layer(Ann: PFann; steepness: fann_type; layer: integer); cdecl; - - - procedure fann_set_activation_steepness_hidden(Ann: PFann; steepness: Fann_Type); cdecl; - - procedure fann_set_activation_steepness_output(Ann: PFann; steepness: Fann_Type);cdecl; - - function fann_get_train_error_function(Ann: PFann): cardinal;cdecl; - - procedure fann_set_train_error_function(Ann: PFann; Train_Error_Function: cardinal); cdecl; - - function fann_get_train_stop_function(Ann: PFann): Cardinal; cdecl; - - procedure fann_set_train_stop_function(Ann: PFann; train_stop_function: cardinal); cdecl; - - function fann_get_bit_fail_limit(Ann: PFann): fann_type; cdecl; - - procedure fann_set_bit_fail_limit(Ann: PFann; bit_fail_limit: fann_type); cdecl; - - procedure fann_set_callback(Ann: PFann; callback: TFann_Callback); cdecl; - - function fann_get_quickprop_decay(Ann: PFann): single;cdecl; - - procedure fann_set_quickprop_decay(Ann: Pfann; quickprop_decay: Single);cdecl; - - function fann_get_quickprop_mu(Ann: PFann): single;cdecl; - - procedure fann_set_quickprop_mu(Ann: PFann; Mu: Single);cdecl; - - function fann_get_rprop_increase_factor(Ann: PFann): single;cdecl; - - procedure fann_set_rprop_increase_factor(Ann: PFann;rprop_increase_factor: single);cdecl; - - function fann_get_rprop_decrease_factor(Ann: PFann): single;cdecl; - - procedure fann_set_rprop_decrease_factor(Ann: PFann;rprop_decrease_factor: single); cdecl; - - function fann_get_rprop_delta_min(Ann: PFann): single; cdecl; - - procedure fann_set_rprop_delta_min(Ann: PFann; rprop_delta_min: Single); cdecl; - - function fann_get_rprop_delta_max(Ann: PFann): single;cdecl; - - procedure fann_set_rprop_delta_max(Ann: PFann; rprop_delta_max: Single); cdecl; - - function fann_get_rprop_delta_zero(Ann: PFann): single;cdecl; - - procedure fann_set_rprop_delta_zero(Ann: PFann; rprop_delta_zero: Single); cdecl; - - //END OF DECLARATIONS OF FANN_TRAIN.H - - - //DECLARATIONS OF FANN_ERROR.H - - procedure fann_set_error_log(errdat: PFann_Error; Log_File: PFile);cdecl; - - function fann_get_errno(errdat: PFann_Error): cardinal;cdecl; - - procedure fann_reset_errno(errdat: PFann_Error);cdecl; - - procedure fann_reset_errstr(errdat: PFann_Error);cdecl; - - function fann_get_errstr(errdat: PFann_Error): PChar;cdecl; - - procedure fann_print_error(Errdat: PFann_Error);cdecl; - - - //END OF DECLARATIONS OF FANN_ERROR - - //DECLARATIONS OF FANN_CASCADE.H - - procedure fann_cascadetrain_on_data(Ann: PFann; - data: PFann_Train_Data; - max_neurons: Cardinal; - neurons_between_reports: Cardinal; - desired_error: single); cdecl; - - procedure fann_cascadetrain_on_file(Ann: PFann; - const filename: PChar; - max_neurons: Cardinal; - neurons_between_reports: Cardinal; - desired_error: single); cdecl; - - - function fann_get_cascade_output_change_fraction(Ann: PFann): single; cdecl; - - - procedure fann_set_cascade_output_change_fraction(Ann: PFann; cascade_output_change_fraction: single); cdecl; - - - function fann_get_cascade_output_stagnation_epochs(Ann: PFann): cardinal; cdecl; - - - procedure fann_set_cascade_output_stagnation_epochs(Ann: PFann; cascade_output_stagnation_epochs: cardinal); cdecl; - - - function fann_get_cascade_candidate_change_fraction(Ann: PFann): single; cdecl; - - - procedure fann_set_cascade_candidate_change_fraction(Ann: PFann; cascade_candidate_change_fraction: single); cdecl; - - - function fann_get_cascade_candidate_stagnation_epochs(Ann: PFann): cardinal; cdecl; - - - procedure fann_set_cascade_candidate_stagnation_epochs(Ann: PFann; cascade_candidate_stagnation_epochs: cardinal); cdecl; - - - function fann_get_cascade_weight_multiplier(Ann: PFann): fann_type; cdecl; - - - procedure fann_set_cascade_weight_multiplier(Ann: PFann; cascade_weight_multiplier: fann_type); cdecl; - - - function fann_get_cascade_candidate_limit(Ann: PFann): fann_type; cdecl; - - - procedure fann_set_cascade_candidate_limit(Ann: PFann; cascade_candidate_limit: fann_type); cdecl; - - - - function fann_get_cascade_max_out_epochs(Ann: PFann): cardinal; cdecl; - - - procedure fann_set_cascade_max_out_epochs(Ann: PFann; cascade_max_out_epochs: cardinal); cdecl; - - - function fann_get_cascade_max_cand_epochs(Ann: PFann): cardinal; cdecl; - - - procedure fann_set_cascade_max_cand_epochs(Ann: PFann; cascade_max_cand_epochs: cardinal); cdecl; - - - function fann_get_cascade_num_candidates(Ann: PFann): cardinal; cdecl; - - - function fann_get_cascade_activation_functions_count(Ann: PFann): cardinal; cdecl; - - - - function fann_get_cascade_activation_functions(Ann: PFann): PCardinal; cdecl; - - - procedure fann_set_cascade_activation_functions(Ann: PFann; cascade_activation_functions: PCardinal; cascade_activation_functions_count: Cardinal); cdecl; - - - function fann_get_cascade_activation_steepnesses_count(Ann: PFann): cardinal; cdecl; - - - function fann_get_cascade_activation_steepnesses(Ann: PFann): pfann_type; cdecl; - - procedure fann_set_cascade_activation_steepnesses(Ann: PFann; cascade_activation_steepnesses: PFann_Type; cascade_activation_steepnesses_count: Cardinal); cdecl; - - - function fann_get_cascade_num_candidate_groups(Ann: PFann): cardinal; cdecl; - - - procedure fann_set_cascade_num_candidate_groups(Ann: PFann; cascade_num_candidate_groups: cardinal); cdecl; - - - //END OF DECLARATIONS OF FANN_CASCADE.H - - - -implementation - - - {$IFDEF VARIABLE_ARGUMENTS} - - function fann_create_standard; external DLL_FILE; - - {$ENDIF} - - - function fann_create_standard_array; external DLL_FILE; - - - {$IFDEF VARIABLE_ARGUMENTS} - - function fann_create_sparse; external DLL_FILE; - - {$ENDIF} - - - - function fann_create_sparse_array; external DLL_FILE; - - - - {$IFDEF VARIABLE_ARGUMENTS} - - function fann_create_shortcut; external DLL_FILE; - - {$ENDIF} - - - function fann_create_shortcut_array; external DLL_FILE; - - - procedure fann_destroy; external DLL_FILE; - - - function fann_run; external DLL_FILE; - - - procedure fann_randomize_weights; external DLL_FILE; - - procedure fann_init_weights; external DLL_FILE; - - - procedure fann_print_connections; external DLL_FILE; - - procedure fann_print_parameters; external DLL_FILE; - - - function fann_get_num_input; external DLL_FILE; - - function fann_get_num_output; external DLL_FILE; - - function fann_get_total_neurons; external DLL_FILE; - - function fann_get_total_connections; external DLL_FILE; - - - function fann_get_network_type; external DLL_FILE; - - function fann_get_connection_rate; external DLL_FILE; - - - function fann_get_num_layers; external DLL_FILE; - - - procedure fann_get_layer_array; external DLL_FILE; - - procedure fann_get_bias_array; external DLL_FILE; - - - procedure fann_get_connection_array; external DLL_FILE; - - - procedure fann_set_weight_array; external DLL_FILE; - - - procedure fann_set_weight; external DLL_FILE; - - procedure fann_set_user_data; external DLL_FILE; - - function fann_get_user_data; external DLL_FILE; - - - {$IFDEF FIXEDFANN} - - function fann_get_decimal_point; external DLL_FILE; - - function fann_get_multiplier; external DLL_FILE; - - {$ENDIF} - - //END OF DECLARATIONS FROM FANN.H - - - - //DECLARATIONS FROM FANN_IO.H - - - function fann_create_from_file; external DLL_FILE; - - procedure fann_save; external DLL_FILE; - - function fann_save_to_fixed; external DLL_FILE; - - //END OF DECLARATIONS FROM FANN_IO.H - - - //DECLARATIONS FROM FANN_TRAIN.H - - {$IFNDEF FIXEDFANN} - procedure fann_train; external DLL_FILE; - {$ENDIF} - - function fann_test; external DLL_FILE; - - - function fann_get_MSE; external DLL_FILE; - - function fann_get_bit_fail; external DLL_FILE; - - procedure fann_reset_MSE; external DLL_FILE; - - - {$IFNDEF FIXEDFANN} - - - procedure fann_train_on_data; external DLL_FILE; - - procedure fann_train_on_file; external DLL_FILE; - - - - function fann_train_epoch; external DLL_FILE; - - - function fann_test_data; external DLL_FILE; - - {$ENDIF} - - function fann_read_train_from_file; external DLL_FILE; - - - - function fann_create_train_from_callback; external DLL_FILE; - - - - procedure fann_destroy_train; external DLL_FILE; - - - procedure fann_shuffle_train_data; external DLL_FILE; - - - procedure fann_scale_train; external DLL_FILE; - - procedure fann_descale_train; external DLL_FILE; - - - function fann_set_input_scaling_params; external DLL_FILE; - - - function fann_set_output_scaling_params; external DLL_FILE; - - - - function fann_set_scaling_params; external DLL_FILE; - - - function fann_clear_scaling_params; external DLL_FILE; - - - - procedure fann_scale_input; external DLL_FILE; - - - procedure fann_scale_output; external DLL_FILE; - - - procedure fann_descale_input; external DLL_FILE; - - - procedure fann_descale_output; external DLL_FILE; - - - procedure fann_scale_input_train_data; external DLL_FILE; - - - procedure fann_scale_output_train_data; external DLL_FILE; - - - procedure fann_scale_train_data; external DLL_FILE; - - - function fann_merge_train_data; external DLL_FILE; - - - function fann_duplicate_train_data; external DLL_FILE; - - - function fann_subset_train_data; external DLL_FILE; - - - function fann_length_train_data; external DLL_FILE; - - - function fann_num_input_train_data; external DLL_FILE; - - function fann_num_output_train_data; external DLL_FILE; - - function fann_save_train; external DLL_FILE; - - function fann_save_train_to_fixed; external DLL_FILE; - - - - function fann_get_training_algorithm; external DLL_FILE; - - procedure fann_set_training_algorithm; external DLL_FILE; - - function fann_get_learning_rate; external DLL_FILE; - - procedure fann_set_learning_rate; external DLL_FILE; - - function fann_get_learning_momentum; external DLL_FILE; - - procedure fann_set_learning_momentum; external DLL_FILE; - - - - function fann_get_activation_function; external DLL_FILE; //ENUM - - procedure fann_set_activation_function; external DLL_FILE; //ENUM - - - procedure fann_set_activation_function_layer; external DLL_FILE; //ENUM - - - procedure fann_set_activation_function_hidden; external DLL_FILE; - - procedure fann_set_activation_function_output; external DLL_FILE; - - function fann_get_activation_steepness; external DLL_FILE; - - - procedure fann_set_activation_steepness; external DLL_FILE; - - - procedure fann_set_activation_steepness_layer; external DLL_FILE; - - - procedure fann_set_activation_steepness_hidden; external DLL_FILE; - - procedure fann_set_activation_steepness_output; external DLL_FILE; - - function fann_get_train_error_function; external DLL_FILE; - - procedure fann_set_train_error_function; external DLL_FILE; - - function fann_get_train_stop_function; external DLL_FILE; - - procedure fann_set_train_stop_function; external DLL_FILE; - - function fann_get_bit_fail_limit; external DLL_FILE; - - procedure fann_set_bit_fail_limit; external DLL_FILE; - - procedure fann_set_callback; external DLL_FILE; - - function fann_get_quickprop_decay; external DLL_FILE; - - procedure fann_set_quickprop_decay; external DLL_FILE; - - function fann_get_quickprop_mu; external DLL_FILE; - - procedure fann_set_quickprop_mu; external DLL_FILE; - - function fann_get_rprop_increase_factor; external DLL_FILE; - - procedure fann_set_rprop_increase_factor; external DLL_FILE; - - function fann_get_rprop_decrease_factor; external DLL_FILE; - - procedure fann_set_rprop_decrease_factor; external DLL_FILE; - - function fann_get_rprop_delta_min; external DLL_FILE; - - procedure fann_set_rprop_delta_min; external DLL_FILE; - - function fann_get_rprop_delta_max; external DLL_FILE; - - procedure fann_set_rprop_delta_max; external DLL_FILE; - - function fann_get_rprop_delta_zero; external DLL_FILE; - - procedure fann_set_rprop_delta_zero; external DLL_FILE; - - //END OF DECLARATIONS OF FANN_TRAIN.H - - - //DECLARATIONS OF FANN_ERROR.H - - procedure fann_set_error_log; external DLL_FILE; - - function fann_get_errno; external DLL_FILE; - - procedure fann_reset_errno; external DLL_FILE; - - procedure fann_reset_errstr; external DLL_FILE; - - function fann_get_errstr; external DLL_FILE; - - procedure fann_print_error; external DLL_FILE; - - - //END OF DECLARATIONS OF FANN_ERROR - - //DECLARATIONS OF FANN_CASCADE.H - - procedure fann_cascadetrain_on_data; external DLL_FILE; - - procedure fann_cascadetrain_on_file; external DLL_FILE; - - - function fann_get_cascade_output_change_fraction; external DLL_FILE; - - - procedure fann_set_cascade_output_change_fraction; external DLL_FILE; - - - function fann_get_cascade_output_stagnation_epochs; external DLL_FILE; - - - procedure fann_set_cascade_output_stagnation_epochs; external DLL_FILE; - - - function fann_get_cascade_candidate_change_fraction; external DLL_FILE; - - - procedure fann_set_cascade_candidate_change_fraction; external DLL_FILE; - - - function fann_get_cascade_candidate_stagnation_epochs; external DLL_FILE; - - - procedure fann_set_cascade_candidate_stagnation_epochs; external DLL_FILE; - - - function fann_get_cascade_weight_multiplier; external DLL_FILE; - - - procedure fann_set_cascade_weight_multiplier; external DLL_FILE; - - - function fann_get_cascade_candidate_limit; external DLL_FILE; - - - procedure fann_set_cascade_candidate_limit; external DLL_FILE; - - - - function fann_get_cascade_max_out_epochs; external DLL_FILE; - - - procedure fann_set_cascade_max_out_epochs; external DLL_FILE; - - - function fann_get_cascade_max_cand_epochs; external DLL_FILE; - - - procedure fann_set_cascade_max_cand_epochs; external DLL_FILE; - - - function fann_get_cascade_num_candidates; external DLL_FILE; - - - function fann_get_cascade_activation_functions_count; external DLL_FILE; - - - - function fann_get_cascade_activation_functions; external DLL_FILE; - - - procedure fann_set_cascade_activation_functions; external DLL_FILE; - - - function fann_get_cascade_activation_steepnesses_count; external DLL_FILE; - - - function fann_get_cascade_activation_steepnesses; external DLL_FILE; - - procedure fann_set_cascade_activation_steepnesses; external DLL_FILE; - - - function fann_get_cascade_num_candidate_groups; external DLL_FILE; - - - procedure fann_set_cascade_num_candidate_groups; external DLL_FILE; - - - -end. - \ No newline at end of file +unit FANN; +{$mode delphi} +interface +{******************************************************* + + Only Delphi 6 and above supports variable arguments + functions. + If you are using a older version of Delphi comment the + VARIABLE_ARGUMENTS directive. + If you disable the VARIABLE_ARGUMENTS directive the + following functions will not be available: + fann_create_shortcut + fann_create_sparse + fann_create_standard + +********************************************************} + +{$DEFINE VARIABLE_ARGUMENTS} + +{******************************************************* + + If you want to use Fixed Fann or Double Fann please + uncomment the corresponding definition. + As default fann.pas uses the fannfloat dll. + +********************************************************} +//{$DEFINE FIXEDFANN} //Uncomment for fixed fann +{$DEFINE DOUBLEFANN} //Uncomment for double fann + + + + +{$ifdef windows} +{$IF Defined(FIXEDFANN)} +const DLL_FILE = 'fannfixed.dll'; +{$ELSEIF Defined(DOUBLEFANN)} +const DLL_FILE = 'fanndouble.dll'; +{$ELSE} +const DLL_FILE = 'fannfloat.dll'; +{$IFEND} +{$endif} +{$ifdef linux} +{$IF Defined(FIXEDFANN)} +const DLL_FILE = 'libfixedfann.so'; +{$ELSEIF Defined(DOUBLEFANN)} +const DLL_FILE = 'libdoublefann.so'; +{$ELSE} +const DLL_FILE = 'libfloatfann.so'; +{$IFEND} +{$endif} +{$ifdef darwin} +{$IF Defined(FIXEDFANN)} +const DLL_FILE = 'libfixedfann.2.2.0.dylib'; +{$ELSEIF Defined(DOUBLEFANN)} +const DLL_FILE = 'libdoublefann.2.2.0.dylib'; +{$ELSE} +const DLL_FILE = 'libfloatfann.2.2.0.dylib'; +{$IFEND} +{$endif} + + +type + + {$IF Defined(FIXEDFANN)} + fann_type = integer; + {$ELSEIF Defined(DOUBLEFANN)} + fann_type = double; + {$ELSE} + fann_type = single; + {$IFEND} + + + PFann_Type = ^fann_type; + + PPFann_Type = ^pfann_type; + + Fann_Type_Array = array [0..65535] of fann_type; + + PFann_Type_Array = ^Fann_type_array; + + PPFann_Type_Array = array [0..65535] of ^Fann_Type_Array; + + + + + (* MICROSOFT VC++ STDIO'S FILE DEFINITION*) + _iobuf = packed record + _ptr: Pchar; + _cnt: integer; + _base: Pchar; + _flag: integer; + _file: integer; + _charbuf: integer; + _bufsiz: integer; + _tmpfname: Pchar; + end; + + + PFile = ^TFile; + TFile = _iobuf; + + + PPFann_Neuron = ^PFann_Neuron; + PFann_Neuron = ^TFann_Neuron; + TFann_Neuron = packed record + first_con: Cardinal; + last_con: Cardinal; + sum: fann_type; + value: fann_type; + activation_steepness: fann_type; + activation_function: Cardinal; //enum + end; + + + PFann_Layer = ^TFann_Layer; + TFann_Layer = packed record + first_neuron: PFann_Neuron; + last_neuron: PFann_Neuron; + end; + + PFann = ^TFann; + TFann = packed record + errno_f: cardinal; + error_log: PFile; + errstr: Pchar; + + learning_rate: single; + learning_momentum: single; + connection_rate: single; + + network_type: Cardinal; //ENUM + + first_layer: PFann_Layer; + last_layer: PFann_Layer; + + total_neurons: cardinal; + num_input: cardinal; + num_output: cardinal; + + weights: Pfann_type; + + connections: PPFann_Neuron; + + train_errors: Pfann_type; + + training_algorithm: cardinal; //ENUM + + + {$IFDEF FIXEDFANN} + decimal_point: cardinal; + multiplier: cardinal; + + sigmoid_results: array [0..5] of fann_type; + sigmoid_values: array [0..5] of fann_type; + symmetric_results: array [0..5] of fann_type; + symmetric_values: array [0..5] of fann_type; + + {$ENDIF} + + total_connections: cardinal; + output: pfann_type; + + num_MSE: cardinal; + MSE_value: single; + + num_bit_fail: cardinal; + bit_fail_limit: fann_type; + + train_error_function: cardinal;//enum + train_stop_function: cardinal; //enum + + callback: Pointer; //TFANN_CALLBACK + + user_data: Pointer; + + cascade_output_change_fraction: single; + cascade_output_stagnation_epochs: Cardinal; + cascade_candidate_change_fraction: single; + cascade_candidate_stagnation_epochs: Cardinal; + cascade_best_candidate: Cardinal; + + cascade_candidate_limit: fann_type; + cascade_weight_multiplier: fann_type; + + cascade_max_out_epochs: Cardinal; + cascade_max_cand_epochs: Cardinal; + + cascade_activation_functions: PCardinal; + cascade_activation_functions_count: Cardinal; + + cascade_activation_steepnesses: PFann_Type; + + cascade_activation_steepnesses_count: Cardinal; + cascade_num_candidate_groups: Cardinal; + + cascade_candidate_scores: PFann_Type; + + total_neurons_allocated: Cardinal; + total_connections_allocated: Cardinal; + + + + quickprop_decay: single; + quickprop_mu: single; + + rprop_increase_factor: single; + rprop_decrease_factor: single; + + rprop_delta_min: single; + rprop_delta_max: single; + + rprop_delta_zero: single; + + train_slopes: pfann_type; + + prev_steps: pfann_type; + + prev_train_slopes: pfann_type; + + prev_weights_deltas: pfann_type; + + {$IFNDEF FIXEDFANN} + scale_mean_in: psingle; + scale_deviation_in: psingle; + scale_new_min_in: psingle; + scale_factor_in: psingle; + scale_mean_out: psingle; + scale_deviation_out: psingle; + scale_new_min_out: psingle; + scale_factor_out: psingle; + + {$ENDIF} + end; + + PFann_Train_Data = ^TFann_Train_Data; + TFann_Train_Data = packed record + errno_f: cardinal; + erro_log: PFile; + errstr: Pchar; + num_data: cardinal; + num_input: cardinal; + num_ouput: cardinal; + input: PPFann_Type_Array; + output: PPFann_Type_Array; + end; + + PFann_Connection = ^TFann_Connection; + TFann_Connection = packed record + from_neuron: Cardinal; + to_neuron: Cardinal; + weight: fann_type; + end; + + PFann_Error = ^TFann_Error; + TFann_Error = packed record + errno_f: Cardinal; //Enum + error_log: PFile; + errstr: PChar; + end; + + + //_Fann_Train = + const + + FANN_TRAIN_INCREMENTAL = 0; + FANN_TRAIN_BATCH = 1; + FANN_TRAIN_RPROP = 2; + FANN_TRAIN_QUICKPROP = 3; + + + //_Fann_Error_Func = + + FANN_ERRORFUNC_LINEAR = 0; + FANN_ERRORFUNC_TANH = 1; + + + //_Fann_Activation_Func = + FANN_LINEAR = 0; + FANN_THRESHOLD = 1; + FANN_THRESHOLD_SYMMETRIC = 2; + FANN_SIGMOID = 3; + FANN_SIGMOID_STEPWISE = 4; + FANN_SIGMOID_SYMMETRIC = 5; + FANN_SIGMOID_SYMMETRIC_STEPWISE = 6; + FANN_GAUSSIAN = 7; + FANN_GAUSSIAN_SYMMETRIC = 8; + FANN_GAUSSIAN_STEPWISE = 9; + FANN_ELLIOT = 10; + FANN_ELLIOT_SYMMETRIC = 11; + FANN_LINEAR_PIECE = 12; + FANN_LINEAR_PIECE_SYMMETRIC = 13; + FANN_SIN_SYMMETRIC = 14; + FANN_COS_SYMMETRIC = 15; + FANN_SIN = 16; + FANN_COS = 17; + + + //_Fann_ErroNo = + FANN_E_NO_ERROR = 0; + FANN_E_CANT_OPEN_CONFIG_R = 1; + FANN_E_CANT_OPEN_CONFIG_W = 2; + FANN_E_WRONG_CONFIG_VERSION = 3; + FANN_E_CANT_READ_CONFIG = 4; + FANN_E_CANT_READ_NEURON = 5; + FANN_E_CANT_READ_CONNECTIONS = 6; + FANN_E_WRONG_NUM_CONNECTIONS = 7; + FANN_E_CANT_OPEN_TD_W = 8; + FANN_E_CANT_OPEN_TD_R = 9; + FANN_E_CANT_READ_TD = 10; + FANN_E_CANT_ALLOCATE_MEM = 11; + FANN_E_CANT_TRAIN_ACTIVATION = 12; + FANN_E_CANT_USE_ACTIVATION = 13; + FANN_E_TRAIN_DATA_MISMATCH = 14; + FANN_E_CANT_USE_TRAIN_ALG = 15; + FANN_E_TRAIN_DATA_SUBSET = 16; + FANN_E_INDEX_OUT_OF_BOUND = 17; + FANN_E_SCALE_NOT_PRESENT = 18; + + + //_Fann_Stop_Func = + + FANN_STOPFUNC_MSE = 0; + FANN_STOPFUNC_BIT = 1; + + //_Fann_Net_Type = + FANN_NETTYPE_LAYER = 0; + FANN_NETTYPE_SHORTCUT = 1; + + type + + TFann_CallBack = function(Ann: PFann; + train: PFann_Train_Data; + max_epochs: Cardinal; + epochs_between_reports: cardinal; + desired_error: single; + epochs: cardinal): integer; cdecl; + + TUser_Function = procedure(num: Cardinal; + num_input: Cardinal; + num_output: cardinal; + input: PFann_Type; + output: PFann_Type); cdecl; + + + + +var + FANN_ERRORFUNC_NAMES: array [0..1] of string = ( + 'FANN_ERRORFUNC_LINEAR', + 'FANN_ERRORFUNC_TANH' + ); + + FANN_TRAIN_NAMES: array [0..3] of string = + ( + 'FANN_TRAIN_INCREMENTAL', + 'FANN_TRAIN_BATCH', + 'FANN_TRAIN_RPROP', + 'FANN_TRAIN_QUICKPROP' + ); + + FANN_ACTIVATIONFUNC_NAMES: array [0..17] of string = + ( + 'FANN_LINEAR', + 'FANN_THRESHOLD', + 'FANN_THRESHOLD_SYMMETRIC', + 'FANN_SIGMOID', + 'FANN_SIGMOID_STEPWISE', + 'FANN_SIGMOID_SYMMETRIC', + 'FANN_SIGMOID_SYMMETRIC_STEPWISE', + 'FANN_GAUSSIAN', + 'FANN_GAUSSIAN_SYMMETRIC', + 'FANN_GAUSSIAN_STEPWISE', + 'FANN_ELLIOT', + 'FANN_ELLIOT_SYMMETRIC', + 'FANN_LINEAR_PIECE', + 'FANN_LINEAR_PIECE_SYMMETRIC', + 'FANN_SIN_SYMMETRIC', + 'FANN_COS_SYMMETRIC', + 'FANN_SIN', + 'FANN_COS' + ); + + FANN_STOPFUNC_NAMES: array [0..1] of string = + ( + 'FANN_STOPFUNC_MSE', + 'FANN_STOPFUNC_BIT' + ); + + FANN_NETTYPE_NAMES: array [0..1] of string = + ( + 'FANN_NETTYPE_LAYER', + 'FANN_NETTYPE_SHORTCUT' + ); + + + //DECLARATIONS FROM FANN.H + + {$IFDEF VARIABLE_ARGUMENTS} + + { + + ATTENTION! + If your compilation breaks here maybe you are using a version of Delphi + prior to 6. In this case you should comment the VARIABLE_ARGUMENTS define + at the beginning of this file and live without this functions! + + } + function fann_create_standard(num_layers: Cardinal): PFann; cdecl; varargs; + + function fann_create_sparse(connection_rate: single; num_layers: Cardinal): PFann; cdecl; varargs; + + function fann_create_shortcut(connection_rate: single): PFann; cdecl; varargs; + + + {$ENDIF} + + + function fann_create_standard_array(num_layers: Cardinal; const layers: PCardinal): PFann; cdecl; + + function fann_create_sparse_array(connection_rate: single; num_layers: Cardinal; const layers: PCardinal): PFann; cdecl; + + function fann_create_shortcut_array(num_layers: cardinal;const layers: Pcardinal): PFann; cdecl; + + + procedure fann_destroy(Ann: PFann); cdecl; + + + function fann_run(ann: PFann; input: PFann_Type): Pfann_type_array; cdecl; + + + procedure fann_randomize_weights(Ann: PFann; Min_weight: fann_type; Max_weight: fann_type); cdecl; + + procedure fann_init_weights(Ann: PFann; train_data: PFann_Train_Data); cdecl; + + + procedure fann_print_connections(ann: PFann);cdecl; + + procedure fann_print_parameters(ann: PFann);cdecl; + + + function fann_get_num_input(Ann: PFann): cardinal;cdecl; + + function fann_get_num_output(Ann: PFann): cardinal;cdecl; + + function fann_get_total_neurons(Ann: PFann): cardinal; cdecl; + + function fann_get_total_connections(Ann: PFann): cardinal; cdecl; + + + function fann_get_network_type(Ann: PFann): cardinal; cdecl; + + function fann_get_connection_rate(Ann: PFann): single; cdecl; + + + function fann_get_num_layers(Ann: PFann): cardinal; cdecl; + + + procedure fann_get_layer_array(Ann: PFann; layers: PCardinal); cdecl; + + procedure fann_get_bias_array(Ann: PFann; bias: PCardinal);cdecl; + + + procedure fann_get_connection_array(Ann: PFann; connections: PFann_Connection);cdecl; + + + procedure fann_set_weight_array(Ann: PFann; connections: PFann_Connection; num_connection: Cardinal);cdecl; + + + procedure fann_set_weight(Ann: PFann; from_neuron: Cardinal; to_neuron: Cardinal; weight: fann_type);cdecl; + + procedure fann_set_user_data(Ann: PFann; user_data: Pointer);cdecl; + + function fann_get_user_data(Ann: PFann): Pointer; cdecl; + + + {$IFDEF FIXEDFANN} + + function fann_get_decimal_point(Ann: Pfann): cardinal; cdecl; + + function fann_get_multiplier(Ann: PFann): cardinal;cdecl; + + {$ENDIF} + + //END OF DECLARATIONS FROM FANN.H + + + + //DECLARATIONS FROM FANN_IO.H + + + function fann_create_from_file(const configuration_file: PChar): PFann; cdecl; + + procedure fann_save(Ann: PFann; Const Configuration_File: PChar);cdecl; + + function fann_save_to_fixed(Ann: PFann; Const Configuration_File: PChar): integer;cdecl; + + //END OF DECLARATIONS FROM FANN_IO.H + + + //DECLARATIONS FROM FANN_TRAIN.H + + {$IFNDEF FIXEDFANN} + procedure fann_train(Ann: PFann; Input: PFann_Type; Desired_Output: PFann_Type);cdecl; + {$ENDIF} + + function fann_test(Ann: PFann; Input: PFann_Type; Desired_Output: Pfann_Type): Pfann_type_array;cdecl; + + + function fann_get_MSE(Ann: PFann): single;cdecl; + + function fann_get_bit_fail(Ann: PFann): Cardinal;cdecl; + + procedure fann_reset_MSE(Ann: Pfann); cdecl; + + + {$IFNDEF FIXEDFANN} + + + procedure fann_train_on_data(Ann: PFann; Data: PFann_Train_Data;max_epochs: cardinal;epochs_between_reports: cardinal; desired_error: single);cdecl; + + procedure fann_train_on_file(Ann: PFann; Filename: Pchar;max_epochs: cardinal;epochs_between_reports: cardinal; desired_error: single); cdecl; + + + + function fann_train_epoch(Ann: PFann; data: PFann_Train_Data): single; cdecl; + + + function fann_test_data(Ann: PFann; data: PFann_Train_Data): single; cdecl; + + {$ENDIF} + + function fann_read_train_from_file(const filename: PChar): PFann_Train_Data; cdecl; + + + + function fann_create_train_from_callback(num_data: Cardinal; + num_input: Cardinal; + num_output: Cardinal; + user_function: TUser_Function): PFann_Train_Data; cdecl; + + + + procedure fann_destroy_train(train_data: PFann_Train_Data); cdecl; + + + procedure fann_shuffle_train_data(Train_Data: PFann_Train_Data);cdecl; + + + procedure fann_scale_train(Ann: PFann; data: PFann_Train_Data);cdecl; + + procedure fann_descale_train(Ann: PFann; data: PFann_Train_Data);cdecl; + + + function fann_set_input_scaling_params(Ann: PFann; + const data: PFann_Train_Data; + new_input_min: single; + new_input_max: single): integer;cdecl; + + + function fann_set_output_scaling_params(Ann: PFann; + const data: PFann_Train_Data; + new_output_min: single; + new_output_max: single): integer;cdecl; + + + + function fann_set_scaling_params(Ann: PFann; + const data: PFann_Train_Data; + new_input_min: single; + new_input_max: single; + new_output_min: single; + new_output_max: single): integer; cdecl; + + + function fann_clear_scaling_params(Ann: PFann): integer; cdecl; + + + + procedure fann_scale_input(Ann: PFann; input_vector: PFann_type); cdecl; + + + procedure fann_scale_output(Ann: PFann; output_vector: PFann_type); cdecl; + + + procedure fann_descale_input(Ann: PFann; input_vector: PFann_type); cdecl; + + + procedure fann_descale_output(Ann: PFann; output_vector: PFann_type); cdecl; + + + procedure fann_scale_input_train_data(Train_Data: PFann_Train_Data; + new_min: fann_type; + new_max: fann_type); cdecl; + + + procedure fann_scale_output_train_data(Train_Data: PFann_Train_Data; + new_min: fann_type; + new_max: fann_type); cdecl; + + + procedure fann_scale_train_data(Train_Data: PFann_Train_Data; + new_min: fann_type; + new_max: fann_type); cdecl; + + + function fann_merge_train_data(Data1: PFann_Train_Data; Data2: PFann_Train_Data): PFann_Train_Data; cdecl; + + + function fann_duplicate_train_data(Data: PFann_Train_Data): PFann_Train_Data;cdecl; + + + function fann_subset_train_data(data: PFann_Train_Data; pos: Cardinal; length: Cardinal): PFann_Train_Data; cdecl; + + + function fann_length_train_data(data: PFann_Train_Data): Cardinal; cdecl; + + + function fann_num_input_train_data(data: PFann_Train_Data): Cardinal; cdecl; + + function fann_num_output_train_data(data: PFann_Train_Data): Cardinal; cdecl; + + function fann_save_train(Data: PFann_train_Data; const Filename: PChar): integer;cdecl; + + function fann_save_train_to_fixed(Data: PFann_train_Data; const FileName: Pchar; decimal_point: cardinal): integer;cdecl; + + + + function fann_get_training_algorithm(Ann: Pfann): cardinal;cdecl; + + procedure fann_set_training_algorithm(Ann: PFann; Training_Algorithm: cardinal);cdecl; + + function fann_get_learning_rate(Ann: PFann): single;cdecl; + + procedure fann_set_learning_rate(Ann: PFann; Learning_Rate: Single); cdecl; + + function fann_get_learning_momentum(Ann: PFann): single;cdecl; + + procedure fann_set_learning_momentum(Ann: PFann; learning_momentum: Single); cdecl; + + + + function fann_get_activation_function(Ann: PFann; layer: integer; neuron: integer): Cardinal; cdecl; //ENUM + + procedure fann_set_activation_function(Ann: PFann; activation_function: Cardinal; layer: integer; neuron: integer); cdecl; //ENUM + + + procedure fann_set_activation_function_layer(Ann: PFann; activation_function: Cardinal; layer: integer); cdecl; //ENUM + + + procedure fann_set_activation_function_hidden(Ann: Pfann; Activation_function: cardinal); cdecl; + + procedure fann_set_activation_function_output(Ann: Pfann; Activation_Function: cardinal); cdecl; + + function fann_get_activation_steepness(Ann: PFann; layer: integer; neuron: integer): fann_type; cdecl; + + + procedure fann_set_activation_steepness(Ann: PFann; steepness: fann_type; layer: integer; neuron: integer); cdecl; + + + procedure fann_set_activation_steepness_layer(Ann: PFann; steepness: fann_type; layer: integer); cdecl; + + + procedure fann_set_activation_steepness_hidden(Ann: PFann; steepness: Fann_Type); cdecl; + + procedure fann_set_activation_steepness_output(Ann: PFann; steepness: Fann_Type);cdecl; + + function fann_get_train_error_function(Ann: PFann): cardinal;cdecl; + + procedure fann_set_train_error_function(Ann: PFann; Train_Error_Function: cardinal); cdecl; + + function fann_get_train_stop_function(Ann: PFann): Cardinal; cdecl; + + procedure fann_set_train_stop_function(Ann: PFann; train_stop_function: cardinal); cdecl; + + function fann_get_bit_fail_limit(Ann: PFann): fann_type; cdecl; + + procedure fann_set_bit_fail_limit(Ann: PFann; bit_fail_limit: fann_type); cdecl; + + procedure fann_set_callback(Ann: PFann; callback: TFann_Callback); cdecl; + + function fann_get_quickprop_decay(Ann: PFann): single;cdecl; + + procedure fann_set_quickprop_decay(Ann: Pfann; quickprop_decay: Single);cdecl; + + function fann_get_quickprop_mu(Ann: PFann): single;cdecl; + + procedure fann_set_quickprop_mu(Ann: PFann; Mu: Single);cdecl; + + function fann_get_rprop_increase_factor(Ann: PFann): single;cdecl; + + procedure fann_set_rprop_increase_factor(Ann: PFann;rprop_increase_factor: single);cdecl; + + function fann_get_rprop_decrease_factor(Ann: PFann): single;cdecl; + + procedure fann_set_rprop_decrease_factor(Ann: PFann;rprop_decrease_factor: single); cdecl; + + function fann_get_rprop_delta_min(Ann: PFann): single; cdecl; + + procedure fann_set_rprop_delta_min(Ann: PFann; rprop_delta_min: Single); cdecl; + + function fann_get_rprop_delta_max(Ann: PFann): single;cdecl; + + procedure fann_set_rprop_delta_max(Ann: PFann; rprop_delta_max: Single); cdecl; + + function fann_get_rprop_delta_zero(Ann: PFann): single;cdecl; + + procedure fann_set_rprop_delta_zero(Ann: PFann; rprop_delta_zero: Single); cdecl; + + //END OF DECLARATIONS OF FANN_TRAIN.H + + + //DECLARATIONS OF FANN_ERROR.H + + procedure fann_set_error_log(errdat: PFann_Error; Log_File: PFile);cdecl; + + function fann_get_errno(errdat: PFann_Error): cardinal;cdecl; + + procedure fann_reset_errno(errdat: PFann_Error);cdecl; + + procedure fann_reset_errstr(errdat: PFann_Error);cdecl; + + function fann_get_errstr(errdat: PFann_Error): PChar;cdecl; + + procedure fann_print_error(Errdat: PFann_Error);cdecl; + + + //END OF DECLARATIONS OF FANN_ERROR + + //DECLARATIONS OF FANN_CASCADE.H + + procedure fann_cascadetrain_on_data(Ann: PFann; + data: PFann_Train_Data; + max_neurons: Cardinal; + neurons_between_reports: Cardinal; + desired_error: single); cdecl; + + procedure fann_cascadetrain_on_file(Ann: PFann; + const filename: PChar; + max_neurons: Cardinal; + neurons_between_reports: Cardinal; + desired_error: single); cdecl; + + + function fann_get_cascade_output_change_fraction(Ann: PFann): single; cdecl; + + + procedure fann_set_cascade_output_change_fraction(Ann: PFann; cascade_output_change_fraction: single); cdecl; + + + function fann_get_cascade_output_stagnation_epochs(Ann: PFann): cardinal; cdecl; + + + procedure fann_set_cascade_output_stagnation_epochs(Ann: PFann; cascade_output_stagnation_epochs: cardinal); cdecl; + + + function fann_get_cascade_candidate_change_fraction(Ann: PFann): single; cdecl; + + + procedure fann_set_cascade_candidate_change_fraction(Ann: PFann; cascade_candidate_change_fraction: single); cdecl; + + + function fann_get_cascade_candidate_stagnation_epochs(Ann: PFann): cardinal; cdecl; + + + procedure fann_set_cascade_candidate_stagnation_epochs(Ann: PFann; cascade_candidate_stagnation_epochs: cardinal); cdecl; + + + function fann_get_cascade_weight_multiplier(Ann: PFann): fann_type; cdecl; + + + procedure fann_set_cascade_weight_multiplier(Ann: PFann; cascade_weight_multiplier: fann_type); cdecl; + + + function fann_get_cascade_candidate_limit(Ann: PFann): fann_type; cdecl; + + + procedure fann_set_cascade_candidate_limit(Ann: PFann; cascade_candidate_limit: fann_type); cdecl; + + + + function fann_get_cascade_max_out_epochs(Ann: PFann): cardinal; cdecl; + + + procedure fann_set_cascade_max_out_epochs(Ann: PFann; cascade_max_out_epochs: cardinal); cdecl; + + + function fann_get_cascade_max_cand_epochs(Ann: PFann): cardinal; cdecl; + + + procedure fann_set_cascade_max_cand_epochs(Ann: PFann; cascade_max_cand_epochs: cardinal); cdecl; + + + function fann_get_cascade_num_candidates(Ann: PFann): cardinal; cdecl; + + + function fann_get_cascade_activation_functions_count(Ann: PFann): cardinal; cdecl; + + + + function fann_get_cascade_activation_functions(Ann: PFann): PCardinal; cdecl; + + + procedure fann_set_cascade_activation_functions(Ann: PFann; cascade_activation_functions: PCardinal; cascade_activation_functions_count: Cardinal); cdecl; + + + function fann_get_cascade_activation_steepnesses_count(Ann: PFann): cardinal; cdecl; + + + function fann_get_cascade_activation_steepnesses(Ann: PFann): pfann_type; cdecl; + + procedure fann_set_cascade_activation_steepnesses(Ann: PFann; cascade_activation_steepnesses: PFann_Type; cascade_activation_steepnesses_count: Cardinal); cdecl; + + + function fann_get_cascade_num_candidate_groups(Ann: PFann): cardinal; cdecl; + + + procedure fann_set_cascade_num_candidate_groups(Ann: PFann; cascade_num_candidate_groups: cardinal); cdecl; + + + //END OF DECLARATIONS OF FANN_CASCADE.H + + + +implementation + + + {$IFDEF VARIABLE_ARGUMENTS} + + function fann_create_standard; external DLL_FILE; + + {$ENDIF} + + + function fann_create_standard_array; external DLL_FILE; + + + {$IFDEF VARIABLE_ARGUMENTS} + + function fann_create_sparse; external DLL_FILE; + + {$ENDIF} + + + + function fann_create_sparse_array; external DLL_FILE; + + + + {$IFDEF VARIABLE_ARGUMENTS} + + function fann_create_shortcut; external DLL_FILE; + + {$ENDIF} + + + function fann_create_shortcut_array; external DLL_FILE; + + + procedure fann_destroy; external DLL_FILE; + + + function fann_run; external DLL_FILE; + + + procedure fann_randomize_weights; external DLL_FILE; + + procedure fann_init_weights; external DLL_FILE; + + + procedure fann_print_connections; external DLL_FILE; + + procedure fann_print_parameters; external DLL_FILE; + + + function fann_get_num_input; external DLL_FILE; + + function fann_get_num_output; external DLL_FILE; + + function fann_get_total_neurons; external DLL_FILE; + + function fann_get_total_connections; external DLL_FILE; + + + function fann_get_network_type; external DLL_FILE; + + function fann_get_connection_rate; external DLL_FILE; + + + function fann_get_num_layers; external DLL_FILE; + + + procedure fann_get_layer_array; external DLL_FILE; + + procedure fann_get_bias_array; external DLL_FILE; + + + procedure fann_get_connection_array; external DLL_FILE; + + + procedure fann_set_weight_array; external DLL_FILE; + + + procedure fann_set_weight; external DLL_FILE; + + procedure fann_set_user_data; external DLL_FILE; + + function fann_get_user_data; external DLL_FILE; + + + {$IFDEF FIXEDFANN} + + function fann_get_decimal_point; external DLL_FILE; + + function fann_get_multiplier; external DLL_FILE; + + {$ENDIF} + + //END OF DECLARATIONS FROM FANN.H + + + + //DECLARATIONS FROM FANN_IO.H + + + function fann_create_from_file; external DLL_FILE; + + procedure fann_save; external DLL_FILE; + + function fann_save_to_fixed; external DLL_FILE; + + //END OF DECLARATIONS FROM FANN_IO.H + + + //DECLARATIONS FROM FANN_TRAIN.H + + {$IFNDEF FIXEDFANN} + procedure fann_train; external DLL_FILE; + {$ENDIF} + + function fann_test; external DLL_FILE; + + + function fann_get_MSE; external DLL_FILE; + + function fann_get_bit_fail; external DLL_FILE; + + procedure fann_reset_MSE; external DLL_FILE; + + + {$IFNDEF FIXEDFANN} + + + procedure fann_train_on_data; external DLL_FILE; + + procedure fann_train_on_file; external DLL_FILE; + + + + function fann_train_epoch; external DLL_FILE; + + + function fann_test_data; external DLL_FILE; + + {$ENDIF} + + function fann_read_train_from_file; external DLL_FILE; + + + + function fann_create_train_from_callback; external DLL_FILE; + + + + procedure fann_destroy_train; external DLL_FILE; + + + procedure fann_shuffle_train_data; external DLL_FILE; + + + procedure fann_scale_train; external DLL_FILE; + + procedure fann_descale_train; external DLL_FILE; + + + function fann_set_input_scaling_params; external DLL_FILE; + + + function fann_set_output_scaling_params; external DLL_FILE; + + + + function fann_set_scaling_params; external DLL_FILE; + + + function fann_clear_scaling_params; external DLL_FILE; + + + + procedure fann_scale_input; external DLL_FILE; + + + procedure fann_scale_output; external DLL_FILE; + + + procedure fann_descale_input; external DLL_FILE; + + + procedure fann_descale_output; external DLL_FILE; + + + procedure fann_scale_input_train_data; external DLL_FILE; + + + procedure fann_scale_output_train_data; external DLL_FILE; + + + procedure fann_scale_train_data; external DLL_FILE; + + + function fann_merge_train_data; external DLL_FILE; + + + function fann_duplicate_train_data; external DLL_FILE; + + + function fann_subset_train_data; external DLL_FILE; + + + function fann_length_train_data; external DLL_FILE; + + + function fann_num_input_train_data; external DLL_FILE; + + function fann_num_output_train_data; external DLL_FILE; + + function fann_save_train; external DLL_FILE; + + function fann_save_train_to_fixed; external DLL_FILE; + + + + function fann_get_training_algorithm; external DLL_FILE; + + procedure fann_set_training_algorithm; external DLL_FILE; + + function fann_get_learning_rate; external DLL_FILE; + + procedure fann_set_learning_rate; external DLL_FILE; + + function fann_get_learning_momentum; external DLL_FILE; + + procedure fann_set_learning_momentum; external DLL_FILE; + + + + function fann_get_activation_function; external DLL_FILE; //ENUM + + procedure fann_set_activation_function; external DLL_FILE; //ENUM + + + procedure fann_set_activation_function_layer; external DLL_FILE; //ENUM + + + procedure fann_set_activation_function_hidden; external DLL_FILE; + + procedure fann_set_activation_function_output; external DLL_FILE; + + function fann_get_activation_steepness; external DLL_FILE; + + + procedure fann_set_activation_steepness; external DLL_FILE; + + + procedure fann_set_activation_steepness_layer; external DLL_FILE; + + + procedure fann_set_activation_steepness_hidden; external DLL_FILE; + + procedure fann_set_activation_steepness_output; external DLL_FILE; + + function fann_get_train_error_function; external DLL_FILE; + + procedure fann_set_train_error_function; external DLL_FILE; + + function fann_get_train_stop_function; external DLL_FILE; + + procedure fann_set_train_stop_function; external DLL_FILE; + + function fann_get_bit_fail_limit; external DLL_FILE; + + procedure fann_set_bit_fail_limit; external DLL_FILE; + + procedure fann_set_callback; external DLL_FILE; + + function fann_get_quickprop_decay; external DLL_FILE; + + procedure fann_set_quickprop_decay; external DLL_FILE; + + function fann_get_quickprop_mu; external DLL_FILE; + + procedure fann_set_quickprop_mu; external DLL_FILE; + + function fann_get_rprop_increase_factor; external DLL_FILE; + + procedure fann_set_rprop_increase_factor; external DLL_FILE; + + function fann_get_rprop_decrease_factor; external DLL_FILE; + + procedure fann_set_rprop_decrease_factor; external DLL_FILE; + + function fann_get_rprop_delta_min; external DLL_FILE; + + procedure fann_set_rprop_delta_min; external DLL_FILE; + + function fann_get_rprop_delta_max; external DLL_FILE; + + procedure fann_set_rprop_delta_max; external DLL_FILE; + + function fann_get_rprop_delta_zero; external DLL_FILE; + + procedure fann_set_rprop_delta_zero; external DLL_FILE; + + //END OF DECLARATIONS OF FANN_TRAIN.H + + + //DECLARATIONS OF FANN_ERROR.H + + procedure fann_set_error_log; external DLL_FILE; + + function fann_get_errno; external DLL_FILE; + + procedure fann_reset_errno; external DLL_FILE; + + procedure fann_reset_errstr; external DLL_FILE; + + function fann_get_errstr; external DLL_FILE; + + procedure fann_print_error; external DLL_FILE; + + + //END OF DECLARATIONS OF FANN_ERROR + + //DECLARATIONS OF FANN_CASCADE.H + + procedure fann_cascadetrain_on_data; external DLL_FILE; + + procedure fann_cascadetrain_on_file; external DLL_FILE; + + + function fann_get_cascade_output_change_fraction; external DLL_FILE; + + + procedure fann_set_cascade_output_change_fraction; external DLL_FILE; + + + function fann_get_cascade_output_stagnation_epochs; external DLL_FILE; + + + procedure fann_set_cascade_output_stagnation_epochs; external DLL_FILE; + + + function fann_get_cascade_candidate_change_fraction; external DLL_FILE; + + + procedure fann_set_cascade_candidate_change_fraction; external DLL_FILE; + + + function fann_get_cascade_candidate_stagnation_epochs; external DLL_FILE; + + + procedure fann_set_cascade_candidate_stagnation_epochs; external DLL_FILE; + + + function fann_get_cascade_weight_multiplier; external DLL_FILE; + + + procedure fann_set_cascade_weight_multiplier; external DLL_FILE; + + + function fann_get_cascade_candidate_limit; external DLL_FILE; + + + procedure fann_set_cascade_candidate_limit; external DLL_FILE; + + + + function fann_get_cascade_max_out_epochs; external DLL_FILE; + + + procedure fann_set_cascade_max_out_epochs; external DLL_FILE; + + + function fann_get_cascade_max_cand_epochs; external DLL_FILE; + + + procedure fann_set_cascade_max_cand_epochs; external DLL_FILE; + + + function fann_get_cascade_num_candidates; external DLL_FILE; + + + function fann_get_cascade_activation_functions_count; external DLL_FILE; + + + + function fann_get_cascade_activation_functions; external DLL_FILE; + + + procedure fann_set_cascade_activation_functions; external DLL_FILE; + + + function fann_get_cascade_activation_steepnesses_count; external DLL_FILE; + + + function fann_get_cascade_activation_steepnesses; external DLL_FILE; + + procedure fann_set_cascade_activation_steepnesses; external DLL_FILE; + + + function fann_get_cascade_num_candidate_groups; external DLL_FILE; + + + procedure fann_set_cascade_num_candidate_groups; external DLL_FILE; + + + +end. + diff --git a/Source/Units/hulpfuncties.pas b/Source/Units/hulpfuncties.pas index d61b7bb6..06f08325 100644 --- a/Source/Units/hulpfuncties.pas +++ b/Source/Units/hulpfuncties.pas @@ -2358,7 +2358,7 @@ function GetTaskBarSize: TRect; // {$endif} {$ifdef darwin} sound:= TProcess.Create(NIL); - sound.CommandLine:= 'afplay ' + StartSound; + sound.CommandLine:= 'afplay ' + WarningSound; sound.Execute; sound.Free; {$endif} @@ -2375,9 +2375,9 @@ function GetTaskBarSize: TRect; // {$ifdef linux} // AlSourcePlay(source[alarm]); // {$endif} - {$ifdef darwub} + {$ifdef darwin} sound:= TProcess.Create(NIL); - sound.CommandLine:= 'afplay ' + StartSound; + sound.CommandLine:= 'afplay ' + AlarmSound; sound.Execute; sound.Free; {$endif} @@ -2396,7 +2396,7 @@ function GetTaskBarSize: TRect; // {$endif} {$ifdef darwin} sound:= TProcess.Create(NIL); - sound.CommandLine:= 'afplay ' + StartSound; + sound.CommandLine:= 'afplay ' + EndSound; sound.Execute; sound.Free; {$endif} diff --git a/Source/UserInterface/Forms/frrestoredatabases.pas b/Source/UserInterface/Forms/frrestoredatabases.pas index 32dae37e..83654ed7 100644 --- a/Source/UserInterface/Forms/frrestoredatabases.pas +++ b/Source/UserInterface/Forms/frrestoredatabases.pas @@ -57,9 +57,12 @@ procedure TfrmRestoreDatabase.cbAllChange(Sender: TObject); begin Screen.Cursor:= crHourglass; Backup; - {$ifdef UNIX} + {$ifdef linux} sourcedata:= '/usr/share/brewbuddy/'; {$endif} + {$ifdef Darwin} + sourcedata:= ProgramDirectory() + 'BrewBuddy.app/Contents/Resources/'; + {$endif} {$ifdef Windows} sourcedata:= ExtractFilePath(Application.ExeName) + 'brewbuddy\'; {$endif} diff --git a/Source/brewbuddy.pas b/Source/brewbuddy.pas index 698d6834..062ff8fd 100644 --- a/Source/brewbuddy.pas +++ b/Source/brewbuddy.pas @@ -25,7 +25,7 @@ {$R *.res} begin - Application.Title:='brewbuddy'; + Application.Title:='BrewBuddy'; try Application.Initialize; Application.CreateForm(TfrmMain, frmMain); diff --git a/Source/brewbuddy_osx.lpi b/Source/brewbuddy_osx.lpi index 5ded8c0e..ce932805 100644 --- a/Source/brewbuddy_osx.lpi +++ b/Source/brewbuddy_osx.lpi @@ -1,14 +1,12 @@ - + - - <UseAppBundle Value="False"/> + <Title Value="BrewBuddy"/> <ResourceType Value="res"/> - <Icon Value="0"/> </General> <i18n> <EnableI18N LFM="False"/> @@ -20,18 +18,23 @@ <Language Value="0413"/> <StringTable CompanyName="Brouwerij Het Witte Paard" FileDescription="BrewBuddy Sassy Saison" InternalName="BrewBuddy" OriginalFilename="BrewBuddy" ProductName="BrewBuddy" ProductVersion="5.3.5.2"/> </VersionInfo> + <MacroValues Count="1"> + <Macro1 Name="LCLWidgetType" Value="cocoa"/> + </MacroValues> <BuildModes Count="1" Active="Default"> <Item1 Name="Default" Default="True"/> + <SharedMatrixOptions Count="1"> + <Item1 ID="090156190409" Modes="Default" Type="IDEMacro" MacroName="LCLWidgetType" Value="cocoa"/> + </SharedMatrixOptions> </BuildModes> <PublishOptions> <Version Value="2"/> - <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> - <ExcludeFileFilter Value="*.(bak|ppu|o|so);*~;backup"/> </PublishOptions> <RunParams> - <local> - <FormatVersion Value="1"/> - </local> + <FormatVersion Value="2"/> + <Modes Count="1"> + <Mode0 Name="default"/> + </Modes> </RunParams> <RequiredPackages Count="9"> <Item1> @@ -65,14 +68,14 @@ <PackageName Value="LCL"/> </Item9> </RequiredPackages> - <Units Count="199"> + <Units Count="212"> <Unit0> <Filename Value="brewbuddy.pas"/> <IsPartOfProject Value="True"/> - <EditorIndex Value="-1"/> - <TopLine Value="7"/> - <CursorPos Y="29"/> + <EditorIndex Value="5"/> + <CursorPos X="50" Y="7"/> <UsageCount Value="201"/> + <Loaded Value="True"/> </Unit0> <Unit1> <Filename Value="UserInterface/Forms/frmain.pas"/> @@ -81,12 +84,11 @@ <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="FrMain"/> - <IsVisibleTab Value="True"/> - <TopLine Value="1047"/> - <CursorPos Y="1048"/> + <EditorIndex Value="8"/> + <TopLine Value="1475"/> + <CursorPos X="20" Y="1491"/> <UsageCount Value="201"/> <Loaded Value="True"/> - <LoadedDesigner Value="True"/> </Unit1> <Unit2> <Filename Value="Units/data.pas"/> @@ -147,10 +149,11 @@ <Filename Value="Units/hulpfuncties.pas"/> <IsPartOfProject Value="True"/> <UnitName Value="Hulpfuncties"/> - <EditorIndex Value="-1"/> - <TopLine Value="2490"/> - <CursorPos Y="2526"/> + <EditorIndex Value="2"/> + <TopLine Value="2375"/> + <CursorPos X="11" Y="2391"/> <UsageCount Value="201"/> + <Loaded Value="True"/> </Unit11> <Unit12> <Filename Value="lnet/lazaruspackage/lnetbase.pas"/> @@ -160,9 +163,10 @@ <Filename Value="Units/containers.pas"/> <IsPartOfProject Value="True"/> <UnitName Value="Containers"/> - <EditorIndex Value="-1"/> - <CursorPos Y="3349"/> + <TopLine Value="3055"/> + <CursorPos X="74" Y="3066"/> <UsageCount Value="200"/> + <Loaded Value="True"/> </Unit13> <Unit14> <Filename Value="appsettings.pas"/> @@ -651,10 +655,11 @@ <Filename Value="Units/bh_report.pas"/> <IsPartOfProject Value="True"/> <UnitName Value="BH_report"/> - <EditorIndex Value="-1"/> - <TopLine Value="993"/> - <CursorPos X="8" Y="1013"/> + <EditorIndex Value="1"/> + <TopLine Value="983"/> + <CursorPos X="31" Y="1007"/> <UsageCount Value="200"/> + <Loaded Value="True"/> </Unit71> <Unit72> <Filename Value="UserInterface/Forms/frprintpreview.pas"/> @@ -1186,7 +1191,7 @@ <EditorIndex Value="-1"/> <TopLine Value="2"/> <CursorPos X="86" Y="8"/> - <UsageCount Value="170"/> + <UsageCount Value="176"/> </Unit147> <Unit148> <Filename Value="/usr/share/lazarus/1.0/components/lazutils/fileutil.inc"/> @@ -1207,7 +1212,7 @@ <EditorIndex Value="-1"/> <TopLine Value="1307"/> <CursorPos X="42" Y="194"/> - <UsageCount Value="118"/> + <UsageCount Value="124"/> </Unit150> <Unit151> <Filename Value="/usr/share/lazarus/1.0.2/lcl/extctrls.pp"/> @@ -1243,7 +1248,7 @@ <EditorIndex Value="-1"/> <TopLine Value="91"/> <CursorPos X="32" Y="115"/> - <UsageCount Value="119"/> + <UsageCount Value="125"/> </Unit155> <Unit156> <Filename Value="UserInterface/Forms/frrestoredatabases.pas"/> @@ -1251,17 +1256,18 @@ <ComponentName Value="frmRestoreDatabase"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> - <EditorIndex Value="-1"/> - <CursorPos X="47" Y="16"/> - <UsageCount Value="118"/> + <EditorIndex Value="4"/> + <TopLine Value="49"/> + <CursorPos X="76" Y="64"/> + <UsageCount Value="124"/> + <Loaded Value="True"/> </Unit156> <Unit157> <Filename Value="Units/neuroot.pas"/> <IsPartOfProject Value="True"/> <EditorIndex Value="-1"/> - <TopLine Value="189"/> - <CursorPos X="25" Y="213"/> - <UsageCount Value="118"/> + <CursorPos X="71" Y="8"/> + <UsageCount Value="124"/> </Unit157> <Unit158> <Filename Value="fann.pas"/> @@ -1297,7 +1303,7 @@ <EditorIndex Value="-1"/> <TopLine Value="7"/> <CursorPos Y="21"/> - <UsageCount Value="101"/> + <UsageCount Value="107"/> </Unit162> <Unit163> <Filename Value="UserInterface/Forms/frdownloadprogress.pas"/> @@ -1308,7 +1314,7 @@ <EditorIndex Value="-1"/> <TopLine Value="29"/> <CursorPos Y="57"/> - <UsageCount Value="95"/> + <UsageCount Value="101"/> </Unit163> <Unit164> <Filename Value="/usr/share/fpcsrc/2.6.0/packages/fcl-xml/src/xmlutils.pp"/> @@ -1560,39 +1566,249 @@ <CursorPos X="3" Y="11"/> <UsageCount Value="10"/> </Unit198> + <Unit199> + <Filename Value="../../../../fpcupdeluxe/lazarus/components/tachart/tachartaxis.pas"/> + <UnitName Value="TAChartAxis"/> + <EditorIndex Value="-1"/> + <TopLine Value="157"/> + <CursorPos X="14" Y="185"/> + <UsageCount Value="10"/> + </Unit199> + <Unit200> + <Filename Value="../../../../fpcupdeluxe/lazarus/components/tachart/tachartaxisutils.pas"/> + <UnitName Value="TAChartAxisUtils"/> + <EditorIndex Value="-1"/> + <TopLine Value="4"/> + <CursorPos X="3" Y="39"/> + <UsageCount Value="10"/> + </Unit200> + <Unit201> + <Filename Value="Units/fann.pas"/> + <IsPartOfProject Value="True"/> + <UnitName Value="FANN"/> + <EditorIndex Value="-1"/> + <TopLine Value="34"/> + <CursorPos X="19" Y="55"/> + <UsageCount Value="26"/> + </Unit201> + <Unit202> + <Filename Value="../../app/Source/Units/containers.pas"/> + <UnitName Value="Containers"/> + <EditorIndex Value="-1"/> + <TopLine Value="3277"/> + <CursorPos X="58" Y="3292"/> + <UsageCount Value="10"/> + </Unit202> + <Unit203> + <Filename Value="../../app/Source/UserInterface/Forms/frmain.pas"/> + <UnitName Value="FrMain"/> + <EditorIndex Value="-1"/> + <TopLine Value="4579"/> + <CursorPos X="28" Y="4597"/> + <UsageCount Value="10"/> + </Unit203> + <Unit204> + <Filename Value="../../app/Source/UserInterface/Forms/backup/frmain.pas"/> + <UnitName Value="FrMain"/> + <EditorIndex Value="-1"/> + <TopLine Value="4579"/> + <CursorPos X="28" Y="4597"/> + <UsageCount Value="10"/> + </Unit204> + <Unit205> + <Filename Value="Units/backup/containers.pas"/> + <UnitName Value="Containers"/> + <EditorIndex Value="-1"/> + <TopLine Value="3092"/> + <CursorPos X="5" Y="3119"/> + <UsageCount Value="10"/> + </Unit205> + <Unit206> + <Filename Value="../../../../fpcupdeluxe/fpcsrc/rtl/objpas/sysutils/finah.inc"/> + <EditorIndex Value="-1"/> + <TopLine Value="13"/> + <CursorPos X="25" Y="23"/> + <UsageCount Value="10"/> + </Unit206> + <Unit207> + <Filename Value="../../../../fpcupdeluxe/lazarus/lcl/forms.pp"/> + <UnitName Value="Forms"/> + <EditorIndex Value="7"/> + <TopLine Value="1540"/> + <CursorPos X="24" Y="1417"/> + <UsageCount Value="11"/> + <Loaded Value="True"/> + </Unit207> + <Unit208> + <Filename Value="../../../../fpcupdeluxe/lazarus/lcl/include/winapi.inc"/> + <EditorIndex Value="6"/> + <TopLine Value="164"/> + <CursorPos Y="180"/> + <UsageCount Value="10"/> + <Loaded Value="True"/> + </Unit208> + <Unit209> + <Filename Value="Units/backup/hulpfuncties.pas"/> + <UnitName Value="Hulpfuncties"/> + <EditorIndex Value="3"/> + <TopLine Value="2375"/> + <CursorPos X="11" Y="2391"/> + <UsageCount Value="10"/> + <Loaded Value="True"/> + </Unit209> + <Unit210> + <Filename Value="UserInterface/Forms/frhistogram.pas"/> + <EditorIndex Value="9"/> + <TopLine Value="36"/> + <CursorPos X="15" Y="51"/> + <UsageCount Value="10"/> + <Loaded Value="True"/> + </Unit210> + <Unit211> + <Filename Value="3rdParty/Orpheus/tests/TestTblEdits/unit1.pas"/> + <UnitName Value="Unit1"/> + <IsVisibleTab Value="True"/> + <EditorIndex Value="10"/> + <TopLine Value="66"/> + <CursorPos X="18" Y="82"/> + <UsageCount Value="10"/> + <Loaded Value="True"/> + </Unit211> </Units> - <JumpHistory Count="1"> + <JumpHistory Count="30" HistoryIndex="29"> <Position1> - <Filename Value="UserInterface/Forms/frmain.pas"/> - <Caret Line="1048" TopLine="1046"/> + <Filename Value="Units/containers.pas"/> + <Caret Line="3119" Column="74" TopLine="3104"/> </Position1> + <Position2> + <Filename Value="Units/containers.pas"/> + <Caret Line="3122" Column="91" TopLine="3104"/> + </Position2> + <Position3> + <Filename Value="Units/containers.pas"/> + <Caret Line="3265" Column="81" TopLine="3240"/> + </Position3> + <Position4> + <Filename Value="Units/containers.pas"/> + <Caret Line="3292" Column="72" TopLine="3267"/> + </Position4> + <Position5> + <Filename Value="Units/containers.pas"/> + <Caret Line="3116" Column="74" TopLine="451"/> + </Position5> + <Position6> + <Filename Value="Units/bh_report.pas"/> + <Caret Line="15" Column="58" TopLine="157"/> + </Position6> + <Position7> + <Filename Value="Units/hulpfuncties.pas"/> + <Caret Line="2515" Column="66" TopLine="2496"/> + </Position7> + <Position8> + <Filename Value="Units/hulpfuncties.pas"/> + <Caret Line="2342" Column="30" TopLine="2326"/> + </Position8> + <Position9> + <Filename Value="Units/hulpfuncties.pas"/> + <Caret Line="2361" Column="47" TopLine="2341"/> + </Position9> + <Position10> + <Filename Value="Units/hulpfuncties.pas"/> + <Caret Line="2447" Column="44" TopLine="2432"/> + </Position10> + <Position11> + <Filename Value="Units/hulpfuncties.pas"/> + <Caret Line="7" Column="15"/> + </Position11> + <Position12> + <Filename Value="Units/hulpfuncties.pas"/> + <Caret Line="165" Column="15" TopLine="160"/> + </Position12> + <Position13> + <Filename Value="brewbuddy.pas"/> + <Caret Line="7" Column="50"/> + </Position13> + <Position14> + <Filename Value="Units/hulpfuncties.pas"/> + <Caret Line="9" Column="61"/> + </Position14> + <Position15> + <Filename Value="Units/hulpfuncties.pas"/> + <Caret Line="185" Column="17" TopLine="159"/> + </Position15> + <Position16> + <Filename Value="Units/hulpfuncties.pas"/> + <Caret Line="2340" Column="17" TopLine="2318"/> + </Position16> + <Position17> + <Filename Value="Units/hulpfuncties.pas"/> + <Caret Line="2359" Column="17" TopLine="2361"/> + </Position17> + <Position18> + <Filename Value="Units/hulpfuncties.pas"/> + <Caret Line="2378" Column="17" TopLine="2361"/> + </Position18> + <Position19> + <Filename Value="Units/hulpfuncties.pas"/> + <Caret Line="2391" Column="22" TopLine="2371"/> + </Position19> + <Position20> + <Filename Value="Units/hulpfuncties.pas"/> + <Caret Line="341" Column="11" TopLine="333"/> + </Position20> + <Position21> + <Filename Value="Units/hulpfuncties.pas"/> + <Caret Line="2391" Column="11" TopLine="2375"/> + </Position21> + <Position22> + <Filename Value="Units/backup/hulpfuncties.pas"/> + <Caret Line="341" Column="11" TopLine="325"/> + </Position22> + <Position23> + <Filename Value="Units/backup/hulpfuncties.pas"/> + <Caret Line="2391" Column="11" TopLine="2375"/> + </Position23> + <Position24> + <Filename Value="UserInterface/Forms/frmain.pas"/> + <Caret Line="1491" Column="31" TopLine="1485"/> + </Position24> + <Position25> + <Filename Value="UserInterface/Forms/frmain.pas"/> + <Caret Line="701" Column="26" TopLine="686"/> + </Position25> + <Position26> + <Filename Value="UserInterface/Forms/frmain.pas"/> + <Caret Line="1491" Column="31" TopLine="1465"/> + </Position26> + <Position27> + <Filename Value="UserInterface/Forms/frmain.pas"/> + <Caret Line="701" Column="15" TopLine="686"/> + </Position27> + <Position28> + <Filename Value="UserInterface/Forms/frmain.pas"/> + <Caret Line="1491" Column="20" TopLine="1475"/> + </Position28> + <Position29> + <Filename Value="UserInterface/Forms/frhistogram.pas"/> + <Caret Line="51" Column="15" TopLine="36"/> + </Position29> + <Position30> + <Filename Value="3rdParty/Orpheus/tests/TestTblEdits/unit1.pas"/> + <Caret Line="36" Column="15" TopLine="20"/> + </Position30> </JumpHistory> </ProjectOptions> <CompilerOptions> <Version Value="11"/> <Target> - <Filename Value="../Output/brewbuddy"/> + <Filename Value="../Output/BrewBuddy"/> </Target> <SearchPaths> <IncludeFiles Value="../Output;$(ProjOutDir)"/> <OtherUnitFiles Value="UserInterface/Forms;Units"/> <UnitOutputDirectory Value="../Output/units"/> </SearchPaths> - <Parsing> - <SyntaxOptions> - <IncludeAssertionCode Value="True"/> - </SyntaxOptions> - </Parsing> <CodeGeneration> - <Checks> - <IOChecks Value="True"/> - <RangeChecks Value="True"/> - <OverflowChecks Value="True"/> - <StackChecks Value="True"/> - </Checks> - <VerifyObjMethodCallValidity Value="True"/> - <TargetCPU Value=""/> - <TargetOS Value=""/> <Optimizations> <OptimizationLevel Value="0"/> <VariablesInRegisters Value="True"/> @@ -1600,14 +1816,12 @@ </CodeGeneration> <Linking> <Debugging> - <UseValgrind Value="True"/> + <DebugInfoType Value="dsDwarf2Set"/> </Debugging> - <Options> - <Win32> - <GraphicApplication Value="True"/> - </Win32> - </Options> </Linking> + <Other> + <CustomOptions Value="-k$(ProjSrcPath)3rdParty/fann/usr/local/lib/libdoublefann.2.2.0.dylib"/> + </Other> </CompilerOptions> <Debugging> <BreakPoints Count="3">