用python3编写的灵活的遗传算法库。

Optivolution的Python项目详细描述


optivolutionpy

一个Python 3中编写的灵活的遗传算法库。

安装

对于python3,只需运行:

$ pip3 install OptivolutionPy

或者克隆此存储库并从项目目录中运行python3 setup.py install。例如:

$ git clone https://github.com/Mhmd-Hisham/OptivolutionPy.git
$ cd OptivolutionPy
$ python3 setup.py install

高级示例

使用光学进化的智能蚂蚁查看此repo了解更多详细信息。

SmartAntsDemo

简单示例

求解一维knapsack problem

#!/usr/bin/env python3importrandomfromoptivolution.populationimportPopulationfromoptivolution.chromosomeimportChromosomeclassOneDimensinalKnapsack(Chromosome):""" Inidividual knapsack object. """maximum_weight=15knapsack_data=[{'name':'box1','value':4,'weight':12},{'name':'box2','value':2,'weight':1},{'name':'box3','value':10,'weight':4},{'name':'box4','value':1,'weight':1},{'name':'box5','value':2,'weight':2}]def__init__(self,genes_length=len(knapsack_data),genes=[]):super().__init__(genes_length,genes)@Chromosome.fitness_propertydeffitness(self):""" Defining the fitness function. """# Use the knapsack value as the fitness valuetotal_value=0total_weight=0foriinrange(self.genes_length):if(self.genes[i]==True):total_value+=self.knapsack_data[i]['value']total_weight+=self.knapsack_data[i]['weight']iftotal_weight>self.maximum_weight:total_value=0returntotal_valuedefrandom_gene(self):""" Defining the random gene. """returnrandom.choice((0,1))classKnapscakPopulation(Population):tournament_sample_percentage=10defrandom_individual(self):""" Defining the random individual in the population. """returnOneDimensinalKnapsack()defmain():population=KnapscakPopulation(population_size=20)population.run(20)print(f"Generation {population.generation_number}")best=population.get_best_individual()# The optimal answer for this test case is# (15, [0, 1, 1, 1, 1])print((best.fitness,best.genes))if__name__=="__main__":main()

输出:

(15, [0, 1, 1, 1, 1])

穆罕默德·希沙姆–G-MailGitHubLinkedIn

此项目是在gnu gplv3许可下授权的-请检查LICENSE以了解更多详细信息。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将jasper集成到jhipster项目中   java无法忽略lombok注释   关于tomcat日志的java问题   java@Autowired未设置字段>NullPointerException   GUI提交按钮不工作   java气泡和选择排序   java如何编写规则来匹配两个数组?   java如何找出某个字符在字符串中的第一次、第二次或第三次出现?   java通过字符串引用id   javascript在网络视图中加载在线图表   java保留web应用程序中用户更改的日志   在安卓中尝试使用Mandrill SMTP发送电子邮件时出现java错误   用java语言将a2b4c5等字符串转换为AABBCCCCC的程序是什么?   java无需TODO即可删除所有注释   java JMX MBean在应用程序部署时自动注册   java如何使用JSON解析从任何url解析数据   java@transactional注释类使用代理包装,但未创建事务   JavaFx转换和打印