Hello,
I'm trying to get the NeuroDimensions OptiGen Library to work, unfortunately I am by no means skilled at COM interfaces and all the intricasies there-in.
I am getting an Error 533 with the following line of code...
OBJECT SET oGA.objectiveType = enumObjectiveType.otMaximize
The actual full code, and COM interface is included below if anyone is interested and able to help.
I also believe there will be issues with the sub at the end, which appears to have an interface as a variable...
Regards
Andrew
Main Program (As is stands)
#COMPILE EXE
#DIM ALL
#INCLUDE "OptiGenCom.inc"
FUNCTION PBMAIN () AS LONG
DIM oGA AS IGenerationalGA
' Create the GenerationalGA object
'Set ga = New GenerationalGA
oGA = ANYCOM $PROGID_OptiGenLibraryForCOM_GenerationalGA
' Could EXCEL be opened? If not, terminate this app
IF ISFALSE ISOBJECT(oGA) OR ERR THEN
PRINT "OptiGen Library could not be opened."
PRINT "Please check Optigen Library installed."
PRINT
PRINT "Press any key to exit..."
WAITKEY$
EXIT FUNCTION
END IF
' Gene Definitions
oGA.addBinaryGeneDefinition 0
oGA.addIntegerGeneDefinition -5, 5, 2
oGA.addDoubleGeneDefinition -10.75, 10.75, 5.5
' Specify whether to minimize or maximize the objective function
OBJECT SET oGA.objectiveType = enumObjectiveType.otMaximize
' Set genetic algorithm parameters to user-specified values
OBJECT LET oGA.maxNumberOfGenerations = 250
OBJECT LET oGA.populationSize = 25
OBJECT LET oGA.mutationProbability = 0.005
OBJECT LET oGA.crossoverProbability = 0.95
' Run the genetic algorithm
OBJECT CALL oGA.evolve
' Retrieve and display the best overall result
DIM i AS INTEGER
DIM result AS STRING
result = ""
FOR i = 0 TO OBJECT GET oGA.bestChromosome.numberOfGenes - 1
result = result & oGA.bestChromosome.genes(i).Value & ", "
NEXT i
? "Best Chromosome: " & LEFT(result, LEN(result) - 2)
END FUNCTION
SUB ga_objectiveFunction(fitness AS DOUBLE, pause AS LONG, chromosome AS OptiGenLibraryForCOM.IChromosome)
' Objective function (Maximize/Minimize genes)
fitness = 0
DIM i AS INTEGER
FOR i = 0 TO chromosome.numberOfGenes - 1
fitness = fitness + chromosome.genes(i).Value
NEXT i
END SUB
OptiGen.inc
' Generated by: PowerBASIC COM Browser v.2.00.0086
' Date & Time : 1/09/2011 at 6:12 PM
' Options:
' Always use an Interface Prefix : Off
' Interface Prefix : Int_
' Prefix ProgIDs, ClassIDs... : On
' Use ANSI Strings : Off
' Use Singular Enumerations : Off
' Generate Dispatch Interfaces : Off
' Include Parameter Names : On
' Use Property Get/Set statements: On
' ------------------------------------------------
' Library Name: OptiGenLibraryForCOM
' Library File: C:\Program Files\OptiGen Library\OptiGen Library for COM\OptiGenLibraryForCOM.dll
' Description : OptiGen Library for COM 2.0 Type Library
' GUID : {F250BE58-E6AF-4D50-AFB8-12FA9269F62D}
' LCID : 0
' Version : 2.0
' Version Dependent ProgIDs
$PROGID_OptiGenLibraryForCOM_GenerationalGA1 = "GeneticServer.GenerationalGA.1"
$PROGID_OptiGenLibraryForCOM_SteadyStateGA1 = "GeneticServer.SteadyStateGA.1"
$PROGID_OptiGenLibraryForCOM_population1 = "GeneticServer.Population.1"
$PROGID_OptiGenLibraryForCOM_chromosome1 = "GeneticServer.Chromosome.1"
$PROGID_OptiGenLibraryForCOM_Gene1 = "GeneticServer.Gene.1"
$PROGID_OptiGenLibraryForCOM_statistics1 = "GeneticServer.Statistics.1"
$PROGID_OptiGenLibraryForCOM_AttributeSelection1 = "GeneticServer.AttributeSelection.1"
$PROGID_OptiGenLibraryForCOM_NonDominatedSortingGA1 = "GeneticServer.NonDominatedSortingGA.1"
$PROGID_OptiGenLibraryForCOM_RandomNumber1 = "GeneticServer.RandomNumber.1"
$PROGID_OptiGenLibraryForCOM_SAStatistics1 = "GeneticServer.SAStatistics.1"
$PROGID_OptiGenLibraryForCOM_SimulatedAnnealing1 = "GeneticServer.SimulatedAnnealing.1"
' Version Independent ProgIDs
$PROGID_OptiGenLibraryForCOM_GenerationalGA = "GeneticServer.GenerationalGA"
$PROGID_OptiGenLibraryForCOM_SteadyStateGA = "GeneticServer.SteadyStateGA"
$PROGID_OptiGenLibraryForCOM_population = "GeneticServer.Population"
$PROGID_OptiGenLibraryForCOM_chromosome = "GeneticServer.Chromosome"
$PROGID_OptiGenLibraryForCOM_Gene = "GeneticServer.Gene"
$PROGID_OptiGenLibraryForCOM_statistics = "GeneticServer.Statistics"
$PROGID_OptiGenLibraryForCOM_AttributeSelection = "GeneticServer.AttributeSelection"
$PROGID_OptiGenLibraryForCOM_NonDominatedSortingGA = "GeneticServer.NonDominatedSortingGA"
$PROGID_OptiGenLibraryForCOM_RandomNumber = "GeneticServer.RandomNumber"
$PROGID_OptiGenLibraryForCOM_SAStatistics = "GeneticServer.SAStatistics"
$PROGID_OptiGenLibraryForCOM_SimulatedAnnealing = "GeneticServer.SimulatedAnnealing"
' Class Identifiers
$CLSID_OptiGenLibraryForCOM_GenerationalGA = GUID$("{F8619E8E-9621-11D2-8DC2-0060978D6BC9}")
$CLSID_OptiGenLibraryForCOM_Event__IGenerationalGAEvents = GUID$("{3C2AB253-C35C-4115-8921-8175391287AF}")
$CLSID_OptiGenLibraryForCOM_SteadyStateGA = GUID$("{F8619E91-9621-11D2-8DC2-0060978D6BC9}")
$CLSID_OptiGenLibraryForCOM_Event__ISteadyStateGAEvents = GUID$("{181F3946-9D1D-4C84-8BDD-D620D337A5F4}")
$CLSID_OptiGenLibraryForCOM_population = GUID$("{BBD54DC3-9FD3-11D2-8DC2-0060978D6BC9}")
$CLSID_OptiGenLibraryForCOM_chromosome = GUID$("{BBD54DC5-9FD3-11D2-8DC2-0060978D6BC9}")
$CLSID_OptiGenLibraryForCOM_Gene = GUID$("{BBD54DC7-9FD3-11D2-8DC2-0060978D6BC9}")
$CLSID_OptiGenLibraryForCOM_statistics = GUID$("{CF13AC06-C0CC-11D2-8DC2-0060978D6BC9}")
$CLSID_OptiGenLibraryForCOM_AttributeSelection = GUID$("{E4E1E7C8-A7E9-48AE-96AB-7B58B057BC36}")
$CLSID_OptiGenLibraryForCOM_Event__IAttributeSelectionEvents = GUID$("{756F089A-0923-4EE0-BE8F-D53A53ECD983}")
$CLSID_OptiGenLibraryForCOM_NonDominatedSortingGA = GUID$("{C3697541-3D17-4F22-85E3-A3F3B4D64D31}")
$CLSID_OptiGenLibraryForCOM_Event__INonDominatedSortingGAEvents = GUID$("{25428F4E-FC62-4E9E-8175-9FC0DE4DEB1A}")
$CLSID_OptiGenLibraryForCOM_MOGene = GUID$("{636AB1EA-7E7B-43CA-8C26-9F42BF353D90}")
$CLSID_OptiGenLibraryForCOM_MOChromosome = GUID$("{0B51973E-E5AA-4277-AECC-E1331C4566BE}")
$CLSID_OptiGenLibraryForCOM_MOPopulation = GUID$("{ED6FBAE9-E74B-4047-BE6D-C70C0B242F7D}")
$CLSID_OptiGenLibraryForCOM_MOStatistics = GUID$("{AA9CF668-532A-46A3-B301-782F23E875AC}")
$CLSID_OptiGenLibraryForCOM_Objective = GUID$("{D0CC6895-EB64-4B28-8AE2-F879AD1E995A}")
$CLSID_OptiGenLibraryForCOM_Constrain = GUID$("{08AD60D6-2CD1-4981-8F44-722FA3DD7C76}")
$CLSID_OptiGenLibraryForCOM_RandomNumber = GUID$("{E1D16907-29FF-4CF6-AD46-0AC823097F3A}")
$CLSID_OptiGenLibraryForCOM_SAStatistics = GUID$("{70C776AB-DDF1-4A0D-B888-058C0A38A80C}")
$CLSID_OptiGenLibraryForCOM_SimulatedAnnealing = GUID$("{FEF3FA5C-B121-4B45-9481-46EF296ADD80}")
$CLSID_OptiGenLibraryForCOM_Event__ISimulatedAnnealingEvents = GUID$("{E18E5F4E-92EA-4A04-8428-EE860588BEE2}")
' Interface Identifiers
$IID_OptiGenLibraryForCOM_IGenerationalGA = GUID$("{F8619E8D-9621-11D2-8DC2-0060978D6BC9}")
$IID_OptiGenLibraryForCOM_IPopulation = GUID$("{BBD54DC2-9FD3-11D2-8DC2-0060978D6BC9}")
$IID_OptiGenLibraryForCOM_IChromosome = GUID$("{BBD54DC4-9FD3-11D2-8DC2-0060978D6BC9}")
$IID_OptiGenLibraryForCOM_IGene = GUID$("{BBD54DC6-9FD3-11D2-8DC2-0060978D6BC9}")
$IID_OptiGenLibraryForCOM_IStatistics = GUID$("{CF13AC05-C0CC-11D2-8DC2-0060978D6BC9}")
$IID_OptiGenLibraryForCOM_Int__IGenerationalGAEvents = GUID$("{F8619E8F-9621-11D2-8DC2-0060978D6BC9}")
$IID_OptiGenLibraryForCOM_ISteadyStateGA = GUID$("{F8619E90-9621-11D2-8DC2-0060978D6BC9}")
$IID_OptiGenLibraryForCOM_Int__ISteadyStateGAEvents = GUID$("{F8619E92-9621-11D2-8DC2-0060978D6BC9}")
$IID_OptiGenLibraryForCOM_IAttributeSelection = GUID$("{944A41B9-0335-4A3B-B1C3-BE435B4478BC}")
$IID_OptiGenLibraryForCOM_IMOChromosome = GUID$("{17E37640-9FB6-41B9-99DB-929268FA9AA5}")
$IID_OptiGenLibraryForCOM_IMOGene = GUID$("{0AFEBD5E-ECB0-499E-AF4F-E7920C5D034E}")
$IID_OptiGenLibraryForCOM_IObjective = GUID$("{CAB5DBB8-2DB2-44AE-A930-D890253A401B}")
$IID_OptiGenLibraryForCOM_IConstrain = GUID$("{487716D3-6A9A-4521-8A0A-C3C738B4F0BB}")
$IID_OptiGenLibraryForCOM_Int__IAttributeSelectionEvents = GUID$("{7FFA3E15-6030-45E0-9E47-C9864F124F9F}")
$IID_OptiGenLibraryForCOM_INonDominatedSortingGA = GUID$("{33B63F6A-85D8-4803-83BF-382F1347F511}")
$IID_OptiGenLibraryForCOM_IMOPopulation = GUID$("{7CB9D8E8-63C0-447F-B0A2-19203F4FC794}")
$IID_OptiGenLibraryForCOM_IMOStatistics = GUID$("{625DD4B5-87C3-4750-93B7-1711C1FFB666}")
$IID_OptiGenLibraryForCOM_Int__INonDominatedSortingGAEvents = GUID$("{8D4F569B-8AB6-4E37-A469-4E7E680B638B}")
$IID_OptiGenLibraryForCOM_IRandomNumber = GUID$("{D5C282ED-71CC-44F9-8897-134EC2505BA5}")
$IID_OptiGenLibraryForCOM_ISAStatistics = GUID$("{6D76A57E-3254-4D65-97CC-A1FF1E652EFB}")
$IID_OptiGenLibraryForCOM_Int__ISimulatedAnnealingEvents = GUID$("{5498DB09-DD4D-4B52-8473-CE0232C336AE}")
$IID_OptiGenLibraryForCOM_ISimulatedAnnealing = GUID$("{1FC4AB97-6E71-45E1-8C82-09EA081E5A29}")
ENUM enumObjectiveType
otMinimize = 0
otMaximize = 1
END ENUM
ENUM enumBinaryMutationType
bmFlipBitMutation = 0
END ENUM
ENUM enumIntegerMutationType
imGaussianMutation = 1
imUniformMutation = 2
imBoundaryMutation = 3
imNonUniformMutation = 4
imSwapMutation = 6
END ENUM
ENUM enumDoubleMutationType
fmGaussianMutation = 1
fmUniformMutation = 2
fmBoundaryMutation = 3
fmNonUniformMutation = 4
fmCauchyMutation = 7
END ENUM
ENUM enumGeneType
gtBinaryGene = 0
gtIntegerGene = 1
gtFloatGene = 2
END ENUM
ENUM enumInitializationType
itNormalInitialization = 0
itUniqueInitialization = 1
END ENUM
ENUM enumSelectionType
stRouletteSelection = 0
stTournamentSelection = 1
stRandomSelection = 2
stBestSelection = 3
stTopPercentSelection = 4
END ENUM
ENUM enumRouletteSelectionBasis
rsFitnessBasis = 0
rsRankBasis = 1
END ENUM
ENUM enumCrossoverType
ctOnePointCrossover = 0
ctTwoPointCrossover = 1
ctUniformCrossover = 2
ctArithemeticCrossover = 3
ctHeuristicCrossover = 4
ctGreedyCrossover = 6
END ENUM
ENUM enumTerminationType
ttNoTermination = 0
ttEvolutionTimeTermination = 1
ttFitnessThresholdTermination = 2
ttFitnessConvergenceTermination = 4
ttPopulationConvergenceTermination = 8
ttGeneConvergenceTermination = 16
ttMaxIterationsWithoutImprovement = 32
ttHyperVolumeConvergenceTermination = 64
ttGreedyBackEliminationTermination = 128
ttSAMinTemperatureTermination = 256
END ENUM
ENUM enumConstraintType
ctLessThan = 0
ctGreaterThan = 1
ctEqual = 2
END ENUM
ENUM enumObjectiveBoundType
obtFixed = 0
obtDynamic = 1
END ENUM
ENUM enumAttributeSelectionSearchType
astGreedySearch = 0
astBackElimination = 1
astExhaustive = 2
END ENUM
ENUM enumObjectiveFunctionType
oftExternal = 0
oftInternalClustering = 1
oftSymmetricUncertainty = 2
END ENUM
' Interface Name : IGenerationalGA
' Description : IGenerationalGA Interface
' Class Name : GenerationalGA
' ClassID : $CLSID_OptiGenLibraryForCOM_GenerationalGA
' ProgID : $PROGID_OptiGenLibraryForCOM_GenerationalGA
' Version ProgID : $PROGID_OptiGenLibraryForCOM_GenerationalGA1
INTERFACE IGenerationalGA $IID_OptiGenLibraryForCOM_IGenerationalGA
INHERIT IDISPATCH
METHOD evolve <1> ()
PROPERTY GET objectiveType <2> () AS LONG
PROPERTY SET objectiveType <2> (BYVAL pVal AS LONG)
PROPERTY GET population <3> () AS IPopulation
METHOD addBinaryGeneDefinition <4> (OPT BYVAL initialValue AS DOUBLE, OPT BYVAL mutationType AS LONG)
METHOD addIntegerGeneDefinition <5> (BYVAL lowerBound AS DOUBLE, BYVAL upperBound AS DOUBLE, OPT BYVAL initialValue AS _
DOUBLE, OPT BYVAL mutationType AS LONG)
PROPERTY GET maxNumberOfGenerations <6> () AS LONG
PROPERTY SET maxNumberOfGenerations <6> (BYVAL pVal AS LONG)
PROPERTY GET bestChromosome <7> (OPT BYVAL evaluateIfNecessary AS INTEGER) AS IChromosome
METHOD addDoubleGeneDefinition <8> (BYVAL lowerBound AS DOUBLE, BYVAL upperBound AS DOUBLE, OPT BYVAL initialValue AS _
DOUBLE, OPT BYVAL mutationType AS LONG)
METHOD setDefaultParameters <9> ()
PROPERTY GET populationSize <10> () AS LONG
PROPERTY SET populationSize <10> (BYVAL pVal AS LONG)
PROPERTY GET checkForMatchingChromosome <11> () AS INTEGER
PROPERTY SET checkForMatchingChromosome <11> (BYVAL pVal AS INTEGER)
METHOD RESET <12> (OPT BYVAL useInitialValues AS INTEGER)
METHOD updateGeneDefinition <13> (BYVAL index AS LONG, BYVAL geneType AS LONG, BYVAL lowerBound AS DOUBLE, BYVAL _
upperBound AS DOUBLE, BYVAL initialValue AS DOUBLE, BYVAL mutationType AS LONG)
METHOD removeGeneDefinition <14> (BYVAL index AS LONG)
PROPERTY GET numberOfGeneDefinitions <15> () AS LONG
PROPERTY GET selectionType <16> () AS LONG
PROPERTY SET selectionType <16> (BYVAL pVal AS LONG)
PROPERTY GET rouletteSelectionBasis <17> () AS LONG
PROPERTY SET rouletteSelectionBasis <17> (BYVAL pVal AS LONG)
PROPERTY GET tournamentSelectionSize <18> () AS LONG
PROPERTY SET tournamentSelectionSize <18> (BYVAL pVal AS LONG)
PROPERTY GET topPercentSelectionPercentage <19> () AS DOUBLE
PROPERTY SET topPercentSelectionPercentage <19> (BYVAL pVal AS DOUBLE)
PROPERTY GET crossoverType <20> () AS LONG
PROPERTY SET crossoverType <20> (BYVAL pVal AS LONG)
PROPERTY GET crossoverProbability <21> () AS DOUBLE
PROPERTY SET crossoverProbability <21> (BYVAL pVal AS DOUBLE)
PROPERTY GET uniformCrossoverMixingRatio <22> () AS DOUBLE
PROPERTY SET uniformCrossoverMixingRatio <22> (BYVAL pVal AS DOUBLE)
PROPERTY GET heuristicCrossoverTries <23> () AS LONG
PROPERTY SET heuristicCrossoverTries <23> (BYVAL pVal AS LONG)
PROPERTY GET mutationProbability <24> () AS DOUBLE
PROPERTY SET mutationProbability <24> (BYVAL pVal AS DOUBLE)
PROPERTY GET terminationType <25> () AS LONG
PROPERTY SET terminationType <25> (BYVAL pVal AS LONG)
PROPERTY GET maximumEvolutionTime <26> () AS LONG
PROPERTY SET maximumEvolutionTime <26> (BYVAL pVal AS LONG)
PROPERTY GET allowTerminationDuringEvaluation <27> () AS INTEGER
PROPERTY SET allowTerminationDuringEvaluation <27> (BYVAL pVal AS INTEGER)
PROPERTY GET fitnessThreshold <28> () AS DOUBLE
PROPERTY SET fitnessThreshold <28> (BYVAL pVal AS DOUBLE)
PROPERTY GET fitnessConvergenceThreshold <29> () AS DOUBLE
PROPERTY SET fitnessConvergenceThreshold <29> (BYVAL pVal AS DOUBLE)
PROPERTY GET populationConvergenceThreshold <30> () AS DOUBLE
PROPERTY SET populationConvergenceThreshold <30> (BYVAL pVal AS DOUBLE)
PROPERTY GET geneConvergenceThreshold <31> () AS DOUBLE
PROPERTY SET geneConvergenceThreshold <31> (BYVAL pVal AS DOUBLE)
PROPERTY GET geneConvergencePercentage <32> () AS DOUBLE
PROPERTY SET geneConvergencePercentage <32> (BYVAL pVal AS DOUBLE)
PROPERTY GET computeStatisticsEvery <33> () AS LONG
PROPERTY SET computeStatisticsEvery <33> (BYVAL pVal AS LONG)
PROPERTY GET numberOfStatistics <34> () AS LONG
PROPERTY GET statistics <36> (BYVAL index AS LONG) AS IStatistics
PROPERTY GET numberOfGenerations <37> () AS LONG
PROPERTY GET elapsedTime <38> () AS LONG
PROPERTY GET saveBestChromosome <39> () AS INTEGER
PROPERTY SET saveBestChromosome <39> (BYVAL pVal AS INTEGER)
PROPERTY GET bestChromosomeGeneration <40> () AS LONG
METHOD seedRandom <41> (BYVAL seed AS LONG)
PROPERTY GET useElitism <42> () AS INTEGER
PROPERTY SET useElitism <42> (BYVAL pVal AS INTEGER)
PROPERTY GET gaussianMutationTries <43> () AS LONG
PROPERTY SET gaussianMutationTries <43> (BYVAL pVal AS LONG)
PROPERTY GET initializationType <44> () AS LONG
PROPERTY SET initializationType <44> (BYVAL pVal AS LONG)
METHOD retrieveStates <45> (BYVAL states AS DWORD)
METHOD restoreStates <46> (BYVAL states AS DWORD)
METHOD writeStatesToFile <47> (BYVAL filePathName AS WSTRING)
METHOD loadStatesFromFile <48> (BYVAL filePathName AS WSTRING)
METHOD evolveSingleStep <49> ()
PROPERTY GET terminated <50> () AS INTEGER
METHOD writeStatisticsToFile <35> (BYVAL filePathName AS WSTRING, OPT BYVAL useExponentialNotatation AS INTEGER)
PROPERTY GET maxIterationsWithoutImprovement <51> () AS LONG
PROPERTY SET maxIterationsWithoutImprovement <51> (BYVAL pVal AS LONG)
END INTERFACE
' Interface Name : IPopulation
' Description : IPopulation Interface
' Class Name : population
' ClassID : $CLSID_OptiGenLibraryForCOM_population
' ProgID : $PROGID_OptiGenLibraryForCOM_population
' Version ProgID : $PROGID_OptiGenLibraryForCOM_population1
INTERFACE IPopulation $IID_OptiGenLibraryForCOM_IPopulation
INHERIT IDISPATCH
PROPERTY GET numberOfChromosomes <1> () AS LONG
PROPERTY GET chromosomes <2> (BYVAL index AS LONG) AS IChromosome
METHOD initialize <3> ()
METHOD evaluate <4> (OPT BYVAL chromosomeIndex AS LONG)
METHOD SORT <5> ()
METHOD writePopulationToFile <6> (BYVAL filePathName AS WSTRING, OPT BYVAL sortPopulation AS INTEGER, OPT BYVAL _
useExponentialNotation AS INTEGER)
PROPERTY GET bestChromosome <7> (OPT BYVAL evaluateIfNecessary AS INTEGER) AS IChromosome
PROPERTY GET worstChromosome <8> (OPT BYVAL evaluateIfNecessary AS INTEGER) AS IChromosome
PROPERTY GET averageFitness <9> (OPT BYVAL evaluateIfNecessary AS INTEGER) AS DOUBLE
PROPERTY GET stdDevFitness <10> (OPT BYVAL evaluateIfNecessary AS INTEGER, OPT BYVAL averageFitness AS DOUBLE) AS DOUBLE
PROPERTY GET minimumFitness <11> (OPT BYVAL evaluateIfNecessary AS INTEGER) AS DOUBLE
PROPERTY GET maximumFitness <12> (OPT BYVAL evaluateIfNecessary AS INTEGER) AS DOUBLE
END INTERFACE
' Interface Name : IChromosome
' Description : IChromosome Interface
' Class Name : chromosome
' ClassID : $CLSID_OptiGenLibraryForCOM_chromosome
' ProgID : $PROGID_OptiGenLibraryForCOM_chromosome
' Version ProgID : $PROGID_OptiGenLibraryForCOM_chromosome1
INTERFACE IChromosome $IID_OptiGenLibraryForCOM_IChromosome
INHERIT IDISPATCH
PROPERTY GET fitness <1> () AS DOUBLE
PROPERTY GET genes <2> (BYVAL index AS LONG) AS IGene
PROPERTY GET numberOfGenes <3> () AS LONG
END INTERFACE
' Interface Name : IGene
' Description : IGene Interface
' Class Name : Gene
' ClassID : $CLSID_OptiGenLibraryForCOM_Gene
' ProgID : $PROGID_OptiGenLibraryForCOM_Gene
' Version ProgID : $PROGID_OptiGenLibraryForCOM_Gene1
INTERFACE IGene $IID_OptiGenLibraryForCOM_IGene
INHERIT IDISPATCH
PROPERTY GET value <1> () AS DOUBLE
PROPERTY SET value <1> (BYVAL pVal AS DOUBLE)
END INTERFACE
' Interface Name : IStatistics
' Description : IStatistics Interface
' Class Name : statistics
' ClassID : $CLSID_OptiGenLibraryForCOM_statistics
' ProgID : $PROGID_OptiGenLibraryForCOM_statistics
' Version ProgID : $PROGID_OptiGenLibraryForCOM_statistics1
INTERFACE IStatistics $IID_OptiGenLibraryForCOM_IStatistics
INHERIT IDISPATCH
PROPERTY GET generationNumber <1> () AS LONG
PROPERTY GET minimumFitness <2> () AS DOUBLE
PROPERTY GET maximumFitness <3> () AS DOUBLE
PROPERTY GET averageFitness <4> () AS DOUBLE
PROPERTY GET stdDevFitness <5> () AS DOUBLE
END INTERFACE
' Interface Name : Int__IGenerationalGAEvents
' Description : _IGenerationalGAEvents Interface
' ClassID : $CLSID_OptiGenLibraryForCOM_Event__IGenerationalGAEvents
' ProgID : $PROGID_OptiGenLibraryForCOM_GenerationalGA
' Version ProgID : $PROGID_OptiGenLibraryForCOM_GenerationalGA1
CLASS Class_Int__IGenerationalGAEvents $CLSID_OptiGenLibraryForCOM_Event__IGenerationalGAEvents AS EVENT
INTERFACE Int__IGenerationalGAEvents $IID_OptiGenLibraryForCOM_Int__IGenerationalGAEvents
INHERIT IDISPATCH
METHOD objectiveFunction <1> (BYREF fitness AS DOUBLE, BYREF pause AS INTEGER, BYREF IN chromosome AS IChromosome)
' Insert your code here
END METHOD
METHOD generationEnded <2> ()
' Insert your code here
END METHOD
METHOD greedyCrossoverObjFn <3> (BYREF fitness AS DOUBLE, BYVAL gene1Value AS LONG, BYVAL gene2Value AS LONG)
' Insert your code here
END METHOD
END INTERFACE
END CLASS
' Interface Name : ISteadyStateGA
' Description : ISteadyStateGA Interface
' Class Name : SteadyStateGA
' ClassID : $CLSID_OptiGenLibraryForCOM_SteadyStateGA
' ProgID : $PROGID_OptiGenLibraryForCOM_SteadyStateGA
' Version ProgID : $PROGID_OptiGenLibraryForCOM_SteadyStateGA1
INTERFACE ISteadyStateGA $IID_OptiGenLibraryForCOM_ISteadyStateGA
INHERIT IDISPATCH
METHOD evolve <1> ()
PROPERTY GET objectiveType <2> () AS LONG
PROPERTY SET objectiveType <2> (BYVAL pVal AS LONG)
PROPERTY GET population <3> () AS IPopulation
METHOD addBinaryGeneDefinition <4> (OPT BYVAL initialValue AS DOUBLE, OPT BYVAL mutationType AS LONG)
METHOD addIntegerGeneDefinition <5> (BYVAL lowerBound AS DOUBLE, BYVAL upperBound AS DOUBLE, OPT BYVAL initialValue AS _
DOUBLE, OPT BYVAL mutationType AS LONG)
PROPERTY GET maxNumberOfGenerations <6> () AS LONG
PROPERTY SET maxNumberOfGenerations <6> (BYVAL pVal AS LONG)
PROPERTY GET bestChromosome <7> (OPT BYVAL evaluateIfNecessary AS INTEGER) AS IChromosome
METHOD addDoubleGeneDefinition <8> (BYVAL lowerBound AS DOUBLE, BYVAL upperBound AS DOUBLE, OPT BYVAL initialValue AS _
DOUBLE, OPT BYVAL mutationType AS LONG)
METHOD setDefaultParameters <9> ()
PROPERTY GET populationSize <10> () AS LONG
PROPERTY SET populationSize <10> (BYVAL pVal AS LONG)
PROPERTY GET checkForMatchingChromosome <11> () AS INTEGER
PROPERTY SET checkForMatchingChromosome <11> (BYVAL pVal AS INTEGER)
METHOD RESET <12> (OPT BYVAL useInitialValues AS INTEGER)
METHOD updateGeneDefinition <13> (BYVAL index AS LONG, BYVAL geneType AS LONG, BYVAL lowerBound AS DOUBLE, BYVAL _
upperBound AS DOUBLE, BYVAL initialValue AS DOUBLE, BYVAL mutationType AS LONG)
METHOD removeGeneDefinition <14> (BYVAL index AS LONG)
PROPERTY GET numberOfGeneDefinitions <15> () AS LONG
PROPERTY GET selectionType <16> () AS LONG
PROPERTY SET selectionType <16> (BYVAL pVal AS LONG)
PROPERTY GET rouletteSelectionBasis <17> () AS LONG
PROPERTY SET rouletteSelectionBasis <17> (BYVAL pVal AS LONG)
PROPERTY GET tournamentSelectionSize <18> () AS LONG
PROPERTY SET tournamentSelectionSize <18> (BYVAL pVal AS LONG)
PROPERTY GET topPercentSelectionPercentage <19> () AS DOUBLE
PROPERTY SET topPercentSelectionPercentage <19> (BYVAL pVal AS DOUBLE)
PROPERTY GET crossoverType <20> () AS LONG
PROPERTY SET crossoverType <20> (BYVAL pVal AS LONG)
PROPERTY GET crossoverProbability <21> () AS DOUBLE
PROPERTY SET crossoverProbability <21> (BYVAL pVal AS DOUBLE)
PROPERTY GET uniformCrossoverMixingRatio <22> () AS DOUBLE
PROPERTY SET uniformCrossoverMixingRatio <22> (BYVAL pVal AS DOUBLE)
PROPERTY GET heuristicCrossoverTries <23> () AS LONG
PROPERTY SET heuristicCrossoverTries <23> (BYVAL pVal AS LONG)
PROPERTY GET mutationProbability <24> () AS DOUBLE
PROPERTY SET mutationProbability <24> (BYVAL pVal AS DOUBLE)
PROPERTY GET terminationType <25> () AS LONG
PROPERTY SET terminationType <25> (BYVAL pVal AS LONG)
PROPERTY GET maximumEvolutionTime <26> () AS LONG
PROPERTY SET maximumEvolutionTime <26> (BYVAL pVal AS LONG)
PROPERTY GET allowTerminationDuringEvaluation <27> () AS INTEGER
PROPERTY SET allowTerminationDuringEvaluation <27> (BYVAL pVal AS INTEGER)
PROPERTY GET fitnessThreshold <28> () AS DOUBLE
PROPERTY SET fitnessThreshold <28> (BYVAL pVal AS DOUBLE)
PROPERTY GET fitnessConvergenceThreshold <29> () AS DOUBLE
PROPERTY SET fitnessConvergenceThreshold <29> (BYVAL pVal AS DOUBLE)
PROPERTY GET populationConvergenceThreshold <30> () AS DOUBLE
PROPERTY SET populationConvergenceThreshold <30> (BYVAL pVal AS DOUBLE)
PROPERTY GET geneConvergenceThreshold <31> () AS DOUBLE
PROPERTY SET geneConvergenceThreshold <31> (BYVAL pVal AS DOUBLE)
PROPERTY GET geneConvergencePercentage <32> () AS DOUBLE
PROPERTY SET geneConvergencePercentage <32> (BYVAL pVal AS DOUBLE)
PROPERTY GET computeStatisticsEvery <33> () AS LONG
PROPERTY SET computeStatisticsEvery <33> (BYVAL pVal AS LONG)
PROPERTY GET numberOfStatistics <34> () AS LONG
METHOD writeStatisticsToFile <35> (BYVAL filePathName AS WSTRING, OPT BYVAL useExponentialNotatation AS INTEGER)
PROPERTY GET statistics <36> (BYVAL index AS LONG) AS IStatistics
PROPERTY GET numberOfGenerations <37> () AS LONG
PROPERTY GET elapsedTime <38> () AS LONG
PROPERTY GET saveBestChromosome <39> () AS INTEGER
PROPERTY SET saveBestChromosome <39> (BYVAL pVal AS INTEGER)
PROPERTY GET bestChromosomeGeneration <40> () AS LONG
METHOD seedRandom <41> (BYVAL seed AS LONG)
PROPERTY GET gaussianMutationTries <42> () AS LONG
PROPERTY SET gaussianMutationTries <42> (BYVAL pVal AS LONG)
PROPERTY GET initializationType <43> () AS LONG
PROPERTY SET initializationType <43> (BYVAL pVal AS LONG)
METHOD retrieveStates <44> (BYVAL states AS DWORD)
METHOD restoreStates <45> (BYVAL states AS DWORD)
METHOD writeStatesToFile <46> (BYVAL filePathName AS WSTRING)
METHOD loadStatesFromFile <47> (BYVAL filePathName AS WSTRING)
METHOD evolveSingleStep <48> ()
PROPERTY GET terminated <49> () AS INTEGER
PROPERTY GET maxIterationsWithoutImprovement <50> () AS LONG
PROPERTY SET maxIterationsWithoutImprovement <50> (BYVAL pVal AS LONG)
END INTERFACE
' Interface Name : Int__ISteadyStateGAEvents
' Description : _ISteadyStateGAEvents Interface
' ClassID : $CLSID_OptiGenLibraryForCOM_Event__ISteadyStateGAEvents
' ProgID : $PROGID_OptiGenLibraryForCOM_SteadyStateGA
' Version ProgID : $PROGID_OptiGenLibraryForCOM_SteadyStateGA1
CLASS Class_Int__ISteadyStateGAEvents $CLSID_OptiGenLibraryForCOM_Event__ISteadyStateGAEvents AS EVENT
INTERFACE Int__ISteadyStateGAEvents $IID_OptiGenLibraryForCOM_Int__ISteadyStateGAEvents
INHERIT IDISPATCH
METHOD objectiveFunction <1> (BYREF fitness AS DOUBLE, BYREF pause AS INTEGER, BYREF IN chromosome AS IChromosome)
' Insert your code here
END METHOD
METHOD generationEnded <2> ()
' Insert your code here
END METHOD
METHOD greedyCrossoverObjFn <3> (BYREF fitness AS DOUBLE, BYVAL gene1Value AS LONG, BYVAL gene2Value AS LONG)
' Insert your code here
END METHOD
END INTERFACE
END CLASS
' Interface Name : IAttributeSelection
' Description : IAttributeSelection Interface
' Class Name : AttributeSelection
' ClassID : $CLSID_OptiGenLibraryForCOM_AttributeSelection
' ProgID : $PROGID_OptiGenLibraryForCOM_AttributeSelection
' Version ProgID : $PROGID_OptiGenLibraryForCOM_AttributeSelection1
INTERFACE IAttributeSelection $IID_OptiGenLibraryForCOM_IAttributeSelection
INHERIT IDISPATCH
METHOD evolve <1> ()
PROPERTY GET objectiveType <2> () AS LONG
PROPERTY SET objectiveType <2> (BYVAL pVal AS LONG)
METHOD addAttributes <4> (BYVAL iNumberOfAttributes AS LONG)
PROPERTY GET maxNumberOfIterations <5> () AS LONG
PROPERTY SET maxNumberOfIterations <5> (BYVAL pVal AS LONG)
PROPERTY GET bestChromosome <6> (OPT BYVAL evaluateIfNecessary AS INTEGER) AS IMOChromosome
METHOD RESET <7> (OPT BYVAL useInitialValues AS INTEGER)
PROPERTY GET maximumEvolutionTime <8> () AS LONG
PROPERTY SET maximumEvolutionTime <8> (BYVAL pVal AS LONG)
PROPERTY GET computeStatisticsEvery <10> () AS LONG
PROPERTY SET computeStatisticsEvery <10> (BYVAL pVal AS LONG)
PROPERTY GET numberOfStatistics <11> () AS LONG
PROPERTY GET statistics <12> (BYVAL index AS LONG) AS IStatistics
PROPERTY GET numberOfGenerations <13> () AS LONG
PROPERTY GET elapsedTime <14> () AS LONG
PROPERTY GET terminated <17> () AS INTEGER
METHOD writeStatisticsToFile <18> (BYVAL filePathName AS WSTRING, OPT BYVAL useExponentialNotation AS INTEGER)
PROPERTY GET attributeSelectionSearchType <19> () AS LONG
PROPERTY SET attributeSelectionSearchType <19> (BYVAL pVal AS LONG)
PROPERTY GET numberOfAttributes <20> () AS LONG
PROPERTY GET eliteSize <21> () AS LONG
PROPERTY SET eliteSize <21> (BYVAL pVal AS LONG)
PROPERTY GET objectiveFunctionType <22> () AS LONG
PROPERTY SET objectiveFunctionType <22> (BYVAL pVal AS LONG)
METHOD enableInternalObjectiveFunction <23> (BYVAL pInputArray AS DWORD, BYVAL pDesiredOutputArray AS DWORD, BYVAL _
objType AS LONG)
PROPERTY GET lagsOfAttributes <24> (BYVAL index AS LONG) AS LONG
PROPERTY SET lagsOfAttributes <24> (BYVAL index AS LONG, BYVAL pVal AS LONG)
PROPERTY GET numberOfIntervalsOfAttributes <25> (BYVAL index AS LONG) AS LONG
PROPERTY SET numberOfIntervalsOfAttributes <25> (BYVAL index AS LONG, BYVAL pVal AS LONG)
PROPERTY GET isAttributeAnalog <26> (BYVAL index AS LONG) AS INTEGER
PROPERTY SET isAttributeAnalog <26> (BYVAL index AS LONG, BYVAL pVal AS INTEGER)
METHOD InitializationForInternalObjectiveFunction <27> (BYVAL trainPortion AS DOUBLE, BYVAL CVPortion AS DOUBLE, BYVAL _
testPortion AS DOUBLE, BYVAL PB_randomize AS INTEGER)
PROPERTY GET bestSolution <28> (OPT BYVAL evaluateIfNecessary AS INTEGER) AS IMOChromosome
PROPERTY GET numberOfIterations <29> () AS LONG
PROPERTY GET maxIterationWithoutImprovement <30> () AS LONG
PROPERTY SET maxIterationWithoutImprovement <30> (BYVAL pVal AS LONG)
PROPERTY GET terminationType <31> () AS LONG
PROPERTY SET terminationType <31> (BYVAL pVal AS LONG)
END INTERFACE
' Interface Name : IMOChromosome
' Description : IMOChromosome Interface
' Class Name : MOChromosome
' ClassID : $CLSID_OptiGenLibraryForCOM_MOChromosome
INTERFACE IMOChromosome $IID_OptiGenLibraryForCOM_IMOChromosome
INHERIT IDISPATCH
PROPERTY GET fitness <1> () AS DOUBLE
PROPERTY GET genes <2> (BYVAL index AS LONG) AS IMOGene
PROPERTY GET numberOfGenes <3> () AS LONG
PROPERTY GET objectives <4> (BYVAL index AS LONG) AS IObjective
PROPERTY GET numberOfObjectives <5> () AS LONG
PROPERTY GET numberOfConstraints <6> () AS LONG
PROPERTY GET constraints <7> (BYVAL index AS LONG) AS IConstrain
END INTERFACE
' Interface Name : IMOGene
' Description : IMOGene Interface
' Class Name : MOGene
' ClassID : $CLSID_OptiGenLibraryForCOM_MOGene
INTERFACE IMOGene $IID_OptiGenLibraryForCOM_IMOGene
INHERIT IDISPATCH
PROPERTY GET value <1> () AS DOUBLE
PROPERTY SET value <1> (BYVAL pVal AS DOUBLE)
END INTERFACE
' Interface Name : IObjective
' Description : IObjective Interface
' Class Name : Objective
' ClassID : $CLSID_OptiGenLibraryForCOM_Objective
INTERFACE IObjective $IID_OptiGenLibraryForCOM_IObjective
INHERIT IDISPATCH
PROPERTY GET value <1> () AS DOUBLE
PROPERTY SET value <1> (BYVAL pVal AS DOUBLE)
END INTERFACE
' Interface Name : IConstrain
' Description : IConstrain Interface
' Class Name : Constrain
' ClassID : $CLSID_OptiGenLibraryForCOM_Constrain
INTERFACE IConstrain $IID_OptiGenLibraryForCOM_IConstrain
INHERIT IDISPATCH
PROPERTY GET value <1> () AS DOUBLE
PROPERTY SET value <1> (BYVAL pVal AS DOUBLE)
END INTERFACE
' Interface Name : Int__IAttributeSelectionEvents
' Description : _IAttributeSelectionEvents Interface
' ClassID : $CLSID_OptiGenLibraryForCOM_Event__IAttributeSelectionEvents
' ProgID : $PROGID_OptiGenLibraryForCOM_AttributeSelection
' Version ProgID : $PROGID_OptiGenLibraryForCOM_AttributeSelection1
CLASS Class_Int__IAttributeSelectionEvents $CLSID_OptiGenLibraryForCOM_Event__IAttributeSelectionEvents AS EVENT
INTERFACE Int__IAttributeSelectionEvents $IID_OptiGenLibraryForCOM_Int__IAttributeSelectionEvents
INHERIT IDISPATCH
METHOD objectiveFunction <1> (BYREF fitness AS DOUBLE, BYREF pause AS INTEGER, BYREF IN chromosome AS IMOChromosome)
' Insert your code here
END METHOD
METHOD generationEnded <2> ()
' Insert your code here
END METHOD
END INTERFACE
END CLASS
' Interface Name : INonDominatedSortingGA
' Description : INonDominatedSortingGA Interface
' Class Name : NonDominatedSortingGA
' ClassID : $CLSID_OptiGenLibraryForCOM_NonDominatedSortingGA
' ProgID : $PROGID_OptiGenLibraryForCOM_NonDominatedSortingGA
' Version ProgID : $PROGID_OptiGenLibraryForCOM_NonDominatedSortingGA1
INTERFACE INonDominatedSortingGA $IID_OptiGenLibraryForCOM_INonDominatedSortingGA
INHERIT IDISPATCH
METHOD evolve <1> ()
PROPERTY GET population <2> () AS IMOPopulation
PROPERTY GET maxNumberOfGeneration <3> () AS LONG
PROPERTY SET maxNumberOfGeneration <3> (BYVAL pVal AS LONG)
PROPERTY GET populationSize <4> () AS LONG
PROPERTY SET populationSize <4> (BYVAL pVal AS LONG)
PROPERTY GET checkForMatchingChromosome <5> () AS INTEGER
PROPERTY SET checkForMatchingChromosome <5> (BYVAL pVal AS INTEGER)
METHOD RESET <6> (BYVAL useInitialValues AS INTEGER)
PROPERTY GET numberOfGeneDefinitions <7> () AS LONG
PROPERTY GET crossoverProbability <8> () AS DOUBLE
PROPERTY SET crossoverProbability <8> (BYVAL pVal AS DOUBLE)
PROPERTY GET mutationProbability <9> () AS DOUBLE
PROPERTY SET mutationProbability <9> (BYVAL pVal AS DOUBLE)
PROPERTY GET terminationType <10> () AS LONG
PROPERTY SET terminationType <10> (BYVAL pVal AS LONG)
PROPERTY GET maximumEvolutionTime <11> () AS LONG
PROPERTY SET maximumEvolutionTime <11> (BYVAL pVal AS LONG)
PROPERTY GET allowTerminationDuringEvaluation <12> () AS INTEGER
PROPERTY SET allowTerminationDuringEvaluation <12> (BYVAL pVal AS INTEGER)
PROPERTY GET computeStatisticsEvery <13> () AS LONG
PROPERTY SET computeStatisticsEvery <13> (BYVAL pVal AS LONG)
PROPERTY GET numberOfStatistics <14> () AS LONG
PROPERTY GET statistics <15> (BYVAL index AS LONG) AS IMOStatistics
PROPERTY GET elapsedTime <16> () AS LONG
METHOD seedRandom <17> (BYVAL seed AS LONG)
PROPERTY GET initializationType <18> () AS LONG
PROPERTY SET initializationType <18> (BYVAL pVal AS LONG)
PROPERTY GET terminated <19> () AS INTEGER
METHOD writeStatisticsToFile <20> (BYVAL filePathName AS WSTRING, OPT BYVAL useExponentialNotation AS INTEGER)
METHOD addBinaryGeneDefinition <21> (OPT BYVAL initialValue AS DOUBLE, OPT BYVAL mutationType AS LONG)
METHOD addIntegerGeneDefinition <22> (BYVAL lowerBound AS DOUBLE, BYVAL upperBound AS DOUBLE, OPT BYVAL initialValue AS _
DOUBLE, OPT BYVAL mutationType AS LONG)
METHOD addDoubleGeneDefinition <23> (BYVAL lowerBound AS DOUBLE, BYVAL upperBound AS DOUBLE, OPT BYVAL initialValue AS _
DOUBLE, OPT BYVAL mutationType AS LONG)
PROPERTY GET HVConvergenceThreshold <24> () AS DOUBLE
PROPERTY SET HVConvergenceThreshold <24> (BYVAL pVal AS DOUBLE)
PROPERTY GET numberOfObjectives <25> () AS LONG
METHOD addObjectiveDefinition <26> (OPT BYVAL objectiveType AS LONG)
PROPERTY GET numberOfConstraints <27> () AS LONG
METHOD addConstraintDefinition <28> (OPT BYVAL constraintType AS LONG, OPT BYVAL constraintBoundary AS DOUBLE)
PROPERTY GET numberOfGenerations <29> () AS LONG
PROPERTY GET maxIterationsWithoutImprovement <30> () AS LONG
PROPERTY SET maxIterationsWithoutImprovement <30> (BYVAL pVal AS LONG)
METHOD constrainDominationSort <31> ()
END INTERFACE
' Interface Name : IMOPopulation
' Description : IMOPopulation Interface
' Class Name : MOPopulation
' ClassID : $CLSID_OptiGenLibraryForCOM_MOPopulation
INTERFACE IMOPopulation $IID_OptiGenLibraryForCOM_IMOPopulation
INHERIT IDISPATCH
PROPERTY GET numberOfChromosomes <1> () AS LONG
PROPERTY GET chromosomes <2> (BYVAL index AS LONG) AS IMOChromosome
METHOD initialize <3> ()
METHOD evaluate <4> (OPT BYVAL chromosomeIndex AS LONG)
METHOD writePopulationToFile <5> (BYVAL filePathName AS WSTRING, OPT BYVAL sortPopulation AS INTEGER, OPT BYVAL _
useExponentialNotation AS INTEGER)
METHOD SORT <6> ()
END INTERFACE
' Interface Name : IMOStatistics
' Description : IMOStatistics Interface
' Class Name : MOStatistics
' ClassID : $CLSID_OptiGenLibraryForCOM_MOStatistics
INTERFACE IMOStatistics $IID_OptiGenLibraryForCOM_IMOStatistics
INHERIT IDISPATCH
PROPERTY GET generationNumber <1> () AS LONG
PROPERTY GET averageViolation <2> () AS DOUBLE
PROPERTY GET hyperVolume <3> () AS DOUBLE
PROPERTY GET numberOfBestSolutions <4> () AS LONG
PROPERTY GET numberOfDistinctBestSolutions <5> () AS LONG
END INTERFACE
' Interface Name : Int__INonDominatedSortingGAEvents
' Description : _INonDominatedSortingGAEvents Interface
' ClassID : $CLSID_OptiGenLibraryForCOM_Event__INonDominatedSortingGAEvents
' ProgID : $PROGID_OptiGenLibraryForCOM_NonDominatedSortingGA
' Version ProgID : $PROGID_OptiGenLibraryForCOM_NonDominatedSortingGA1
CLASS Class_Int__INonDominatedSortingGAEvents $CLSID_OptiGenLibraryForCOM_Event__INonDominatedSortingGAEvents AS EVENT
INTERFACE Int__INonDominatedSortingGAEvents $IID_OptiGenLibraryForCOM_Int__INonDominatedSortingGAEvents
INHERIT IDISPATCH
METHOD objectiveFunction <1> (BYREF fitness AS DOUBLE, BYREF pause AS INTEGER, BYREF INOUT chromosome AS IMOChromosome)
' Insert your code here
END METHOD
METHOD generationEnded <2> ()
' Insert your code here
END METHOD
END INTERFACE
END CLASS
' Interface Name : IRandomNumber
' Description : IRandomNumber Interface
' Class Name : RandomNumber
' ClassID : $CLSID_OptiGenLibraryForCOM_RandomNumber
' ProgID : $PROGID_OptiGenLibraryForCOM_RandomNumber
' Version ProgID : $PROGID_OptiGenLibraryForCOM_RandomNumber1
INTERFACE IRandomNumber $IID_OptiGenLibraryForCOM_IRandomNumber
INHERIT IDISPATCH
METHOD seedRandom <1> (BYVAL seed AS LONG)
METHOD randomBinary <2> () AS DOUBLE
METHOD randomInteger <3> (BYVAL lowerBound AS DOUBLE, BYVAL upperBound AS DOUBLE) AS DOUBLE
METHOD randomDouble <4> (BYVAL lowerBound AS DOUBLE, BYVAL upperBound AS DOUBLE) AS DOUBLE
METHOD flipBiasedCoin <5> (BYVAL probability AS DOUBLE) AS INTEGER
METHOD randomGaussian <6> (BYVAL mean AS DOUBLE, BYVAL stdDev AS DOUBLE) AS DOUBLE
END INTERFACE
' Interface Name : ISAStatistics
' Description : ISAStatistics Interface
' Class Name : SAStatistics
' ClassID : $CLSID_OptiGenLibraryForCOM_SAStatistics
' ProgID : $PROGID_OptiGenLibraryForCOM_SAStatistics
' Version ProgID : $PROGID_OptiGenLibraryForCOM_SAStatistics1
INTERFACE ISAStatistics $IID_OptiGenLibraryForCOM_ISAStatistics
INHERIT IDISPATCH
PROPERTY GET generationNumber <1> () AS LONG
PROPERTY GET temperature <2> () AS DOUBLE
PROPERTY GET uphillAcceptance <3> () AS LONG
PROPERTY GET totalAcceptance <4> () AS LONG
PROPERTY GET optimalValue <5> () AS DOUBLE
END INTERFACE
' Interface Name : Int__ISimulatedAnnealingEvents
' Description : _ISimulatedAnnealingEvents Interface
' ClassID : $CLSID_OptiGenLibraryForCOM_Event__ISimulatedAnnealingEvents
' ProgID : $PROGID_OptiGenLibraryForCOM_SimulatedAnnealing
' Version ProgID : $PROGID_OptiGenLibraryForCOM_SimulatedAnnealing1
CLASS Class_Int__ISimulatedAnnealingEvents $CLSID_OptiGenLibraryForCOM_Event__ISimulatedAnnealingEvents AS EVENT
INTERFACE Int__ISimulatedAnnealingEvents $IID_OptiGenLibraryForCOM_Int__ISimulatedAnnealingEvents
INHERIT IDISPATCH
METHOD objectiveFunction <1> (BYREF fitness AS DOUBLE, BYREF pause AS INTEGER, BYREF IN chromosome AS IMOChromosome)
' Insert your code here
END METHOD
METHOD generationEnded <2> ()
' Insert your code here
END METHOD
END INTERFACE
END CLASS
' Interface Name : ISimulatedAnnealing
' Description : ISimulatedAnnealing Interface
' Class Name : SimulatedAnnealing
' ClassID : $CLSID_OptiGenLibraryForCOM_SimulatedAnnealing
' ProgID : $PROGID_OptiGenLibraryForCOM_SimulatedAnnealing
' Version ProgID : $PROGID_OptiGenLibraryForCOM_SimulatedAnnealing1
INTERFACE ISimulatedAnnealing $IID_OptiGenLibraryForCOM_ISimulatedAnnealing
INHERIT IDISPATCH
PROPERTY GET initialTemperature <1> () AS DOUBLE
PROPERTY SET initialTemperature <1> (BYVAL pVal AS DOUBLE)
PROPERTY GET coolingCoefficient <2> () AS DOUBLE
PROPERTY SET coolingCoefficient <2> (BYVAL pVal AS DOUBLE)
PROPERTY GET numberOfMovesPerTemperature <3> () AS LONG
PROPERTY SET numberOfMovesPerTemperature <3> (BYVAL pVal AS LONG)
PROPERTY GET maxIterationsWithoutImprovement <4> () AS LONG
PROPERTY SET maxIterationsWithoutImprovement <4> (BYVAL pVal AS LONG)
PROPERTY GET minimumTemperature <5> () AS DOUBLE
PROPERTY SET minimumTemperature <5> (BYVAL pVal AS DOUBLE)
PROPERTY GET statistics <6> (BYVAL index AS LONG) AS ISAStatistics
METHOD evolve <7> ()
PROPERTY GET objectiveType <8> () AS LONG
PROPERTY SET objectiveType <8> (BYVAL pVal AS LONG)
PROPERTY GET maxNumberOfIterations <9> () AS LONG
PROPERTY SET maxNumberOfIterations <9> (BYVAL pVal AS LONG)
PROPERTY GET bestSolution <10> (OPT BYVAL evaluateIfNecessary AS INTEGER) AS IMOChromosome
METHOD RESET <11> (BYVAL useInitialValues AS INTEGER)
PROPERTY GET maximumEvolutionTime <12> () AS LONG
PROPERTY SET maximumEvolutionTime <12> (BYVAL pVal AS LONG)
PROPERTY GET computeStatisticsEvery <13> () AS LONG
PROPERTY SET computeStatisticsEvery <13> (BYVAL pVal AS LONG)
PROPERTY GET numberOfStatistics <14> () AS LONG
PROPERTY GET numberOfGenerations <15> () AS LONG
PROPERTY GET elapsedTime <16> () AS LONG
PROPERTY GET terminated <17> () AS INTEGER
METHOD writeStatisticsToFile <18> (BYVAL filePathName AS WSTRING, OPT BYVAL useExponentialNotation AS INTEGER)
METHOD addBinaryGeneDefinition <19> (OPT BYVAL initialValue AS DOUBLE, OPT BYVAL mutationType AS LONG)
METHOD addIntegerGeneDefinition <20> (BYVAL lowerBound AS DOUBLE, BYVAL upperBound AS DOUBLE, OPT BYVAL initialValue AS _
DOUBLE, OPT BYVAL mutationType AS LONG)
METHOD addDoubleGeneDefinition <21> (BYVAL lowerBound AS DOUBLE, BYVAL upperBound AS DOUBLE, OPT BYVAL initialValue AS _
DOUBLE, OPT BYVAL mutationType AS LONG)
PROPERTY GET terminationType <22> () AS LONG
PROPERTY SET terminationType <22> (BYVAL pVal AS LONG)
METHOD seedRandom <23> (BYVAL seed AS LONG)
PROPERTY GET numberOfIterations <24> () AS LONG
PROPERTY GET currentTemperature <25> () AS DOUBLE
END INTERFACE
You're using declations for direct interface calls. Therefore OBJECT can't be used with them
' Specify whether to minimize or maximize the objective function
' OBJECT SET oGA.objectiveType = enumObjectiveType.otMaximize
oGA.objectiveType = enumObjectiveType.otMaximize
' Set genetic algorithm parameters to user-specified values
' OBJECT LET oGA.maxNumberOfGenerations = 250
' OBJECT LET oGA.populationSize = 25
' OBJECT LET oGA.mutationProbability = 0.005
' OBJECT LET oGA.crossoverProbability = 0.95
oGA.maxNumberOfGenerations = 250
oGA.populationSize = 25
oGA.mutationProbability = 0.005
oGA.crossoverProbability = 0.95
' Run the genetic algorithm
' OBJECT CALL oGA.evolve
oGA.evolve
Quote
I also believe there will be issues with the sub at the end, which appears to have an interface as a variable...
Change chromosome AS OptiGenLibraryForCOM.IChromosome to
chromosome AS IChromosome
Thanks for the input so far...
I have managed to get it to compile, however, it will not actually solve anything. I think the problem is that the objective function (called ga_objectiveFunction) is not being called.
I have tried the routine above, where it is a sub in the main program (trying to copy directly from the VB6 example). However, this did not work.
I also looked at the interface includes (both the PB-COM and TypeLib Browser 5.0.1). I add the the same code from the function to the event code, as shown here..
' ########################################################################################
' Class CIGenerationalGAEvents
' Interface name = _IGenerationalGAEvents
' IID = {F8619E8F-9621-11D2-8DC2-0060978D6BC9}
' _IGenerationalGAEvents Interface
' Attributes = 4096 [&H1000] [Dispatchable]
' Code generated by the TypeLib Browser 5.0.1 (c) 2011 by José Roca
' Date: 03 Sep 2011 Time: 07:54:33
' ########################################################################################
CLASS CIGenerationalGAEvents GUID$("{30FBD1A5-6E46-4FA3-91D4-C6C88BB3B1E5}") AS EVENT
INTERFACE IGenerationalGAEventsImpl GUID$("{F8619E8F-9621-11D2-8DC2-0060978D6BC9}") AS EVENT
INHERIT IDISPATCH
' =====================================================================================
METHOD objectiveFunction <1> ( _
BYREF prm_fitness AS DOUBLE _ ' [out] *fitness VT_R8 <Double>
, BYREF prm_pause AS INTEGER _ ' [out] *pause VT_BOOL <Integer>
, BYREF prm_chromosome AS IChromosome _ ' [in] **chromosome IChromosome <dispinterface>
) ' void
' *** Insert your code here ***
' Objective function (Maximize/Minimize genes)
prm_fitness = 0
DIM i AS INTEGER
FOR i = 0 TO prm_chromosome.numberOfGenes - 1
prm_fitness = prm_fitness + prm_chromosome.genes(i).Value
NEXT i
END METHOD
' =====================================================================================
' =====================================================================================
METHOD generationEnded <2>
' *** Insert your code here ***
END METHOD
' =====================================================================================
' =====================================================================================
METHOD greedyCrossoverObjFn <3> ( _
BYREF prm_fitness AS DOUBLE _ ' [out] *fitness VT_R8 <Double>
, BYVAL prm_gene1Value AS LONG _ ' [in] gene1Value VT_INT <Long>
, BYVAL prm_gene2Value AS LONG _ ' [in] gene2Value VT_INT <Long>
) ' void
' *** Insert your code here ***
END METHOD
' =====================================================================================
END INTERFACE
END CLASS
The code (which compiles but does nto run correctly is attached).
Any further assistance in sorting this out would be greatly appreciated.
Regards
Andrew
Quote
I think the problem is that the objective function (called ga_objectiveFunction) is not being called.
Of course not. You should read the PowerBASIC documentation instead of Visual Basic examples.
To connect to the events fired by the server use:
DIM pGAEvents AS IGenerationalGAEventsImpl
pGAEvents = CLASS "CIGenerationalGAEvents"
EVENTS FROM oGA CALL pGAEvents
Later, to disconnect events, use:
EVENTS END pGAEvents
Champion!!!
Now it is all up and running as it should. Thanks for the support.
Regards
Andrew Lindsay