📄 module1.vb
字号:
Public Const EV_TYPES_H__ As Integer = 1
' Typedefs for extra (convenience) types
' typedef double FAR * LPDOUBLE;
' typedef void _huge * HPVOID;
' typedef double _huge * HPDOUBLE;
' typedef short FAR * LPSHORT;
' typedef HPDOUBLE OPDOUBLE; // Used for arrays that may be passed in as NULL.// VB "declare" uses "as VariantType" to make it easy to pass 0 as int16 (NULL)
' #ifdef _MSC_VER
' #if _MSC_VER < 1100
' typedef unsigned char bool;
' #else
' #ifndef __cplusplus
' typedef unsigned char bool;
' #endif
' #endif
' #else
' typedef unsigned char bool;
' #endif
' Limits constants
Public Const EV_MAX_POPS As Integer = 1000
Public Const EV_MAX_SOLVING_METHODS As Integer = 256
Public Const EV_NUM_SM_MESSAGES As Integer = 8
Public Const EV_MAX_OPERATORS As Integer = 256
Public Const EV_MAX_VARIABLES As Integer = 20
Public Const EV_INFINITY As Double = 1.0E+300
' Evolver edition constants
Public Const EV_STANDARD_EDITION As Integer = 0
Public Const EV_PROFESSIONAL_EDITION As Integer = 1
Public Const EV_INDUSTRIAL_EDITION As Integer = 2
' Returned flags from EvPopReturnResult
Public Const EV_FLAGS_BEST_RESULT_SO_FAR As Integer = 1
Public Const EV_FLAGS_CONSTRAINTS_NOT_MET As Integer = 2
Public Const EV_FLAGS_FIND_THE_CLOSEST_VALUE_FOUND As Integer = 4
' Special Results flags (from EvRes... functions)
Public Const EV_RESULT_OK As Integer = 0
Public Const EV_RESULT_NEVER_CALCULATED As Integer = 1
Public Const EV_RESULT_CONSTRAINTS_NOT_MET As Integer = 2
Public Const EV_INVALID_RESULT As Double = -1.001E+300
' Constants to enable debugging features
Public Const EV_DEBUG_MEMCHECK As Integer = 1 ' Check for memory buffer overwrites
Public Const EV_DEBUG_ASSERT As Integer = 2 ' Check for consistency conditions
Public Const EV_DEBUG_SHOW_ERROR_MESSAGES As Integer = 4 ' Put up message boxes when errors occur, in// addition to returning an error code
Public Const EV_DEBUG_LOG As Integer = 8 ' Write information into EVLIB.LOG
' Minimize, Maximize, Find the closest value constants
Public Const EV_MINIMIZE As Integer = 0
Public Const EV_MAXIMIZE As Integer = 1
Public Const EV_FIND_THE_CLOSEST As Integer = 2
' Organism Indices
Public Const EV_BEST_ORGANISM_INDEX As Integer = -1
Public Const EV_ORIGINAL_ORGANISM_INDEX As Integer = -2
Public Const EV_BEST_ORGANISM_IN_INITIAL_POP_INDEX As Integer = -3
Public Const EV_EVAL_ORGANISM_INDEX As Integer = -4
' Mutation modes
Public Const EV_MUTATION_MODE_NORMAL As Integer = 0
Public Const EV_MUTATION_MODE_AUTO As Integer = 1
' Structures to pass to Evolver to tell it about the constraints for a problem.
Structure EvProjectConstraints
Public numRows As Long
Public numCols As Long
End Structure
Structure EvScheduleConstraints
Public numRows As Long
Public numTimeBlocks As Long
End Structure
' Put this value in constraint tables for empty table entries
Public Const EV_TABLE_ENTRY_EMPTY As Double = -1.0E+300
' Constants for "Schedule" solving method constraints
Public Const EV_SCHEDULE_A_AT_SAME_TIME_AS_B As Integer = 1
Public Const EV_SCHEDULE_A_NOT_AT_SAME_TIME_AS_B As Integer = 2
Public Const EV_SCHEDULE_A_BEFORE_B As Integer = 3
Public Const EV_SCHEDULE_A_AT_TIME_B As Integer = 4
Public Const EV_SCHEDULE_A_AT_SAME_TIME_OR_BEFORE_B As Integer = 5
Public Const EV_SCHEDULE_A_AT_SAME_TIME_OR_AFTER_B As Integer = 6
Public Const EV_SCHEDULE_A_NOT_AT_TIME_B As Integer = 7
Public Const EV_SCHEDULE_A_AFTER_B As Integer = 8
' Error codes
Public Const EV_NO_ERROR As Integer = 0
Public Const EV_INVALID_POP_HANDLE As Integer = -1
Public Const EV_INVALID_VARIABLE_NUMBER As Integer = -2
Public Const EV_INVALID_OPERATOR_NUMBER As Integer = -3
Public Const EV_OPERATOR_SOLVING_METHOD_DISAGREEMENT As Integer = -4
Public Const EV_INVALID_SOLVING_METHOD_NAME As Integer = -5
Public Const EV_INVALID_OPERATOR_NAME As Integer = -6
Public Const EV_INVALID_SOLVING_METHOD_NUMBER As Integer = -7
Public Const EV_INVALID_MESSAGE As Integer = -8
Public Const EV_POP_LIMIT_REACHED As Integer = -9
Public Const EV_INVALID_BASE_INDEX As Integer = -10
Public Const EV_INVALID_GENE_RANGE_CONSTRAINT As Integer = -11
Public Const EV_INVALID_PROGRESS_STEP_NUMBER As Integer = -12
Public Const EV_OUT_OF_MEMORY As Integer = -13
Public Const EV_INVALID_CONSTRAINTS As Integer = -14
Public Const EV_INVALID_FUNCTION_FOR_SOLVING_METHOD As Integer = -15
Public Const EV_INVALID_POP_NUMBER As Integer = -16
Public Const EV_CONSTRAINTS_NOT_MET As Integer = -17
Public Const EV_INVALID_ORGANISM_NUMBER As Integer = -18
Public Const EV_CANT_LOAD_EVOLVER_DLL As Integer = -19
Public Const EV_CANT_FIND_EVOLVER_FUNCTION_IN_DLL As Integer = -20
Public Const EV_INVALID_CHROMOSOME_NUMBER As Integer = -21
Public Const EV_INVALID_MIN_MAX_CLOSEST As Integer = -22
Public Const EV_TOO_FEW_CHROMOSOMES_PER_ORGANISM As Integer = -23
Public Const EV_TOO_FEW_ORGANISMS_PER_POP As Integer = -24
Public Const EV_TOO_MANY_ORGANISMS_PER_POP As Integer = -25
Public Const EV_TOO_MANY_CHROMOSOMES_PER_ORGANISM As Integer = -26
Public Const EV_TOO_MANY_GENES_PER_CHROMOSOME As Integer = -27
Public Const EV_TOO_MANY_GENES_PER_ORGANISM As Integer = -28
Public Const EV_TOO_FEW_GENES_PER_ORGANISM As Integer = -29
Public Const EV_CHROMOSOME_NOT_INITIALIZED As Integer = -30
Public Const EV_INVALID_RESULT_FLAG_VALUE As Integer = -31
Public Const EV_SCHEDULE_GENE_INVALID As Integer = -32
Public Const EV_TOO_FEW_GENES_PER_CHROMOSOME As Integer = -33
Public Const EV_INVALID_GENE_NUMBER As Integer = -34
Public Const EV_INVALID_SLOT_NUMBER As Integer = -35
Public Const EV_ORGANISM_DOES_NOT_YET_EXIST As Integer = -36
Public Const EV_VARIABLE_NEVER_ASSIGNED As Integer = -37
Public Const EV_EDITION_CAPABILITY_EXCEEDED As Integer = -38
Public Const EV_INVALID_CONSTRAINT_NUM As Integer = -39
Public Const EV_INVALID_MUTATION_RATE As Integer = -40
Public Const EV_INVALID_CROSSOVER_RATE As Integer = -41
Public Const EV_INVALID_BACKTRACK_RATE As Integer = -42
Public Const EV_INVALID_MUTATION_MODE As Integer = -43
Public Const EV_NO_APPLICABLE_OPERATOR As Integer = -44
Public Const EV_NOT_IN_SOLVING_METHOD As Integer = -45
' Commands sent to solving methods
Public Const EV_SM_GET_VERSION As Integer = 1
Public Const EV_SM_GET_MESSAGES As Integer = 2
Public Const EV_SM_GET_BASE_INDEX As Integer = 3 ' What is the index of the first element of an array (0 for C/C++, 1 for VB)
Public Const EV_SM_GET_NAME As Integer = 4
Public Const EV_SM_GET_NUMBER As Integer = 5
Public Const EV_SM_GET_PARENT As Integer = 6
Public Const EV_SM_SEND_MESSAGE As Integer = 100 ' Process one of the messages (see below for the list)
' Messages sent to solving methods
Public Const EV_SM_MSG_CREATE As Integer = 1
Public Const EV_SM_MSG_DESTROY As Integer = 2
Public Const EV_SM_MSG_ADD_CONSTRAINTS As Integer = 4
Public Const EV_SM_MSG_ADJUST_RANGE As Integer = 8
Public Const EV_SM_MSG_SELECT_PARENTS As Integer = 16
Public Const EV_SM_MSG_CROSSOVER As Integer = 32
Public Const EV_SM_MSG_MUTATE As Integer = 64
Public Const EV_SM_MSG_BACKTRACK As Integer = 256
' Commands sent to Operators
Public Const EV_OPER_GET_VERSION As Integer = 1 ' Get the version string for the Operator
Public Const EV_OPER_GET_MESSAGES As Integer = 2 ' Get the messages supported by the Operator (mutation, etc.)
Public Const EV_OPER_GET_BASE_INDEX As Integer = 3 ' What is the index of the first element of an array (0 for C/C++, 1 for VB)
Public Const EV_OPER_GET_NAME As Integer = 4 ' Get the name string of the Operator
Public Const EV_OPER_COMPATIBLE_WITH_SOLVING_METHOD As Integer = 5 ' Ask the Operator if it can work with a specific solving method
Public Const EV_OPER_SEND_MESSAGE As Integer = 100 ' Process one of the messages (see below for the list)
' Messages sent to Operators
Public Const EV_OPER_MSG_ADD_TO_CHROMOSOME As Integer = 1
Public Const EV_OPER_MSG_REMOVE_FROM_CHROMOSOME As Integer = 2
Public Const EV_OPER_MSG_START_USING As Integer = 4
Public Const EV_OPER_MSG_STOP_USING As Integer = 8
Public Const EV_OPER_MSG_SELECT_PARENTS As Integer = 16
Public Const EV_OPER_MSG_CROSSOVER As Integer = 32
Public Const EV_OPER_MSG_MUTATE As Integer = 64
Public Const EV_OPER_MSG_OTHER_OPERATOR As Integer = 128
Public Const EV_OPER_MSG_BACKTRACK As Integer = 256
Public Const EV_OPER_MSG_START_RETURN_RESULT As Integer = 512
Public Const EV_OPER_MSG_END_RETURN_RESULT As Integer = 1024
Public Const EV_OPER_MSG_NEW_BEST_FOUND As Integer = 2048
' #endif // __EV_TYPES_H__
Public Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As VariantType, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Public Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Public Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Dim evDll As Int64 ' Handle to the Evolver DLL - 0 means not loaded
Function EvLoad%(ByVal evPath$, ByVal baseIndex%, ByVal debugFlags%)
Dim dtoolsDir$, evDllName$
' Make sure we have the path to EVLIBxx.DLL
' If (evPath$ = vbNullString) Then
' dtoolsDir = Space(257)
' ilen% = GetPrivateProfileString("Directories", "System", "", dtoolsDir, 256, "DTOOLS.INI")
' dtoolsDir = Left$(dtoolsDir, ilen)
' Else
' dtoolsDir = evPath
' End If
dtoolsDir = "C:\windows\SYSTEM\"
evDllName = dtoolsDir & "evlib32.dll"
'#Else
' evDllName = dtoolsDir as int16 "EVLIB16.DLL"
'#End If
' Load the DLL
evDll = LoadLibrary(evDllName)
If (evDll = 0) Then
MsgBox("Error loading Evolver DLL (" & evDllName & ").")
EvLoad = EV_CANT_LOAD_EVOLVER_DLL
' Dll loaded, so initialize it
Else
EvLoad = EvInit(baseIndex, debugFlags)
If (EvLoad <> EV_NO_ERROR) Then
FreeLibrary(evDll)
evDll = 0
End If
End If
End Function
Function EvUnload%()
' Unload only if it was loaded successfully
If (evDll <> 0) Then
EvUnload = EvFree()
FreeLibrary(evDll)
Else
EvUnload = EV_NO_ERROR
End If
End Function
End Module
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -