赞
踩
有一个PPT,是之前从百度文库中做的截图,尝试使用Kimi将这样的文档进行一下整理。
初次尝试直接使用PPT格式,效果读取的不好。后面改为另存为PDF格式,整体效果有明显改善。程序成功从PDF中提取了多个图片中的内容,并将PPT中的信息,总结出一段文档后输出。测试结果见下面的程序输出。
测试用的文档,可从下面的链接中获取:
链接:https://pan.baidu.com/s/16MLreWmUsW46HiZIVOgAZA
提取码:1111
from openai import OpenAI from pathlib import Path client = OpenAI( api_key="your api key", base_url="https://api.moonshot.cn/v1", ) file = client.files.create(file=Path("d:\\遗传算法.pdf"), purpose="file-extract") file_content = client.files.content(file_id=file.id).text print(file_content) messages = [ { "role": "system", "content": "你是 Kimi,由 Moonshot AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一切涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI 为专有名词,不可翻译成其他语言。" }, { "role": "system", "content": file_content }, { "role": "user", "content": "请将上面文档中的内容,整理成一个算法的说明文档" } ] completion = client.chat.completions.create( model="moonshot-v1-32k", messages=messages, temperature=0.1, ) result = completion.choices[0].message.content print(completion) print("*" * 30) print(result)
D:\Anaconda3\envs\cmcc_demo\python.exe E:/Work/Code/cmcc_demo/kimi_demo_read_file.py {"content":"遗传算法的简单应用\n求解高次函数在区间上的最大值\n@ppskingdom\nBai问题描述\n求解函数f(×)=×+10*sin(5*x)+7*cos(4x)在区问[0,9]的最大值。\n@ppskingdom\nBaiaxm遗传算法特性\n遵循『适者生存』『优胜方汰』的原则\n是一类借鉴生物界自然选择和自然遗传机制的随机化搜索算法。\n遗传算法模拟一个人工种群的进化过程,通过选择(Selection)、交叉(Crossover)\n以及变异(Mutation)等机制,在每次选代中都保留一组候选个体,重复此过程,\n种群经过若干代进化后,理想情况下其适应度达到***近似最优***的状态。\n自从遗传算法被提出以来,其得到了广泛的应用,特别是在函数优化,生产调度、\n模式识别、神经网络、自适应控制等领域,遗传算法发挥了很大的作用,提高了\n一些问题求解的效率。\n@ppskingdom\nBaiaxm遗传算法组成(一)\n编码-\u003e创造染色体\n个体-\u003e种群\n适应度函数\n遗传算子\n送择\n交叉\n@ppskingdom\nBaia遗传算法组成(二)\n运行参数\n是否选择精英摄作\n种鲜大小\n染色体长度\n最大选代次数\n交叉概率\n异概率\n@ppskingdom\nBaia编码与解码\n实现遗传算法的第一步就是明确对求解问题的编码和解码方式。\n对于函数优化问题,一般有两种编码方式,各具优缺点\n实数编码:直接用实数表示基因,容易理解且不需要解码过程,但容易过早收敛,从\n而陷入局部最优\n二进制编码:稳定性高,种群多样性大,但需要的存储空问大,需要解码且难以理解\n对于求解函数录大值问题,可选择二进制编码。\n@ppskingdom\nBaia文编码\n解空间\n编码空间\n解码\n@ppskingdom\nBaitax编码的细节\n目标函数f(x)=X+10sin(5x)+7cos(4x),xE[0,9]\n假如设定求解的精度为小数点后4位,可以将X的解空问划分为(9-\n0)×(1e+4)=90000个等分。\n2°16\u003c90000\u003c2°17,需要17位二进制数来表示这些解。\n一个解的编码就是一个17位的二进制串。\n@ppskingdom\nBaia文生成染色体\n一开始,这些二进制串是随机生成的。\n一个这样的二进制串代表一条染色体串,这里染色体串的长度为17。\n@ppskingdom\nBaia文染色体的解码\n对于本问题,我们可以采用以下公式来解码:\nx=0+decimal(chromosome)x(9-0)/(2*17-1)\n一般化解码公式:\nf(x),xE[lower_bound,upper_bound]x=lower_bound +\ndecimal(chromosome)x(upper_bound-lower_bound)/(2*chromosome_size-1)\nlower bound:函数定义域的下限\nupper_bound:函数定义域的上限\nchromosome_size:染色体的长度\n@ppskingdom\nBaiaxm个体与种群\n『色体』表达了某种特征,这种特征的载体,称为「个体』。\n对于本次实验所要解决的一元函数录最大值求解问题,个体可以用上一节构造的染\n色体表示,一个个体里有一条染色体。\n许多这样的个体组成了一个种群,其含义是一个一维点集(轴上0,9的线段)。\n@ppskingdom\nBai文适应度函数\n遗传算法中,一个个体(解)的好坏用适应度函数值来评价,在本问题中,(X)就\n是适应度函数。\n适应度函数值越大,解的质量越高。\n适应度函数是遗传算法进化的驱动力,也是进行自然选择的唯一标准,宅的设计\n应结合求解问题本身的要求而定。\n@ppskingdom\nBaiaxe遗传算子\n我们希望有这样一个种群,宅所包含的个体所对应的函数值都很接近于(X)在\n0,9上的录最大值,但是这个种群一开始可能不那么优秀,因为个体的染色体串是\n随机生成的。\n如何让种群变得优秀呢?\n不新的进化。\n每一次进化都尽可能保留种群中的优秀个体,淘汰掉不理想的个体,并且在优秀\n个体之问进行染色体交又,有些个体还可能出现变寻。\n种群的每一次进化,都会产生一个最优个体。种群所有世代的最优个体,可能就\n是函数f(×)录最大值对应的定义域中的点。\n如果种群无休止地进化,那总能找到最好的解。但实际上,我们的时问有限,通\n常在得到一个看上去不错的解时,便终止了进化。\n@ppskingdom\nBaiax赋予种群进化的能力\n选择\n交叉\n变异\n@ppskingdom\nBaia选择(selection)\n选择操作是从前代种群中选择**多对***较优个体,一对较优个体称之为一对父母,\n让父母们将它们的基因传递到下一代,直到下一代个体数量达到种群数量上限\n在选择操作前,将种群中个体按照适应度从小到大进行排列\n采用轮盘赌选择方法(当然还有很多别的选择方法),各个个体被选中的概率与\n其适应度函数值大小成正比\n轮盘赌选择方法具有随机性,在选择的过程中可能会丢掉较好的个体,所以可以\n使用精英机制,将前代最优个体直接选择\n@ppskingdom\nBaia交叉(cross)\n两个待交叉的不同的染色体(父母)根据交叉概率(cross_rate)按禁种方式交换其部\n分基因\n采用单点交叉法,也可以使用其他交叉方法\n@ppskingdom\nBai文变异(mutation)\n色体按照变异概率(mutate_rate)进行染色体的变异\n用单点变异法,也可以使用其他变异方法\n@ppskingdom\nBaia文交叉概率和变异概率\n一般来说,交叉概率(cross_rate)比较大,变异概率(mutate_rate)极低。像求解\n函数录大值这类问题,我设置的交叉概率(cross_rate)是0.6,变异概率\n(mutate_rate)是0.01。\n因为遗传算法相信2条优秀的父母染色体交叉更有可能产生优秀的后代,而变异\n的话产生优秀后代的可能性极低,不过也有存在可能一下就变异出非常优秀的后\n代。这也是符合自然界生物进化的特征的。\n@ppskingdom\nBaia遗传算法流程\n拍入,种群大小,染色停长度,是需英选择,交叉痛率,变异概不,停止规则\n初胎化种群\n+\n计算个体适应度\n对个停适应度大小排序\n选择操作\n交叉摄作\n变异瑞作\n满足停止规则?\n客止\n@ppskingdom\nBaity=10*sin(5*×) +7*abs(×-5)+10\n120\n100\n50\n10.0\n7.5\n5.0\n2.5\n0.0\n2.5\n5.0\n7.5\n10.0\nX","file_type":"application/pdf","filename":"遗传算法.pdf","title":"","type":"file"} ChatCompletion(id='chatcmpl-5059e44c4c3f48f3ac4951fa797a4bba', choices=[Choice(finish_reason='stop', index=0, logprobs=None, message=ChatCompletionMessage(content='遗传算法求解高次函数最大值问题说明文档\n\n1. 问题描述\n目标是求解函数 f(x) = x + 10*sin(5*x) + 7*cos(4x) 在区间 [0,9] 上的最大值。\n\n2. 遗传算法特性\n遗传算法是一种模拟生物进化过程的随机化搜索算法,遵循“适者生存”和“优胜劣汰”的原则。它通过选择、交叉和变异等机制,逐步优化种群,以达到近似最优解。\n\n3. 遗传算法组成\n- 编码:创建染色体,用以表示个体的基因。\n- 个体:种群中的一个成员,含有一条染色体。\n- 适应度函数:评价个体(解)质量的函数。\n- 遗传算子:包括选择、交叉和变异操作。\n\n4. 运行参数\n- 是否选择精英策略。\n- 种群大小:种群中个体的数量。\n- 染色体长度:表示解的二进制串的长度。\n- 最大选代次数:算法迭代的最大次数。\n- 交叉概率:染色体交叉的概率。\n- 变异概率:染色体变异的概率。\n\n5. 编码与解码\n- 实数编码:直接用实数表示基因,易于理解,但可能导致过早收敛。\n- 二进制编码:稳定性高,种群多样性大,但需要解码过程。\n\n6. 编码细节\n对于本问题,解空间被划分为 90000 个等分,需要 17 位二进制数来表示。染色体即为一个 17 位的二进制串。\n\n7. 染色体生成\n初始染色体是随机生成的二进制串。\n\n8. 染色体解码\n解码公式为:\nx = 0 + (二进制串的十进制表示) * (9 - 0) / (2^17 - 1)\n\n9. 个体与种群\n个体是染色体的载体,种群是由多个个体组成的集合。\n\n10. 适应度函数\n适应度函数值越大,解的质量越高。在本问题中,适应度函数即为 f(x)。\n\n11. 遗传算子\n- 选择(Selection):根据适应度选择优秀个体作为父母。\n- 交叉(Crossover):父母染色体按一定概率交换基因。\n- 变异(Mutation):染色体按一定概率发生变异。\n\n12. 选择、交叉和变异操作\n- 选择操作采用轮盘赌方法,可能结合精英策略。\n- 交叉操作使用单点交叉法或其他方法。\n- 变异操作使用单点变异法或其他方法。\n\n13. 交叉和变异概率\n交叉概率通常较大,变异概率较低。例如,本问题中交叉概率设为 0.6,变异概率设为 0.01。\n\n14. 遗传算法流程\n- 初始化种群。\n- 计算个体适应度。\n- 根据适应度排序。\n- 执行选择、交叉和变异操作。\n- 检查是否满足停止规则,如满足则停止,否则继续迭代。\n\n通过以上步骤,遗传算法能够在有限的迭代次数内找到一个近似最优解。', role='assistant', function_call=None, tool_calls=None))], created=785540, model='moonshot-v1-32k', object='chat.completion', system_fingerprint=None, usage=CompletionUsage(completion_tokens=662, prompt_tokens=1734, total_tokens=2396)) ****************************** 遗传算法求解高次函数最大值问题说明文档 1. 问题描述 目标是求解函数 f(x) = x + 10*sin(5*x) + 7*cos(4x) 在区间 [0,9] 上的最大值。 2. 遗传算法特性 遗传算法是一种模拟生物进化过程的随机化搜索算法,遵循“适者生存”和“优胜劣汰”的原则。它通过选择、交叉和变异等机制,逐步优化种群,以达到近似最优解。 3. 遗传算法组成 - 编码:创建染色体,用以表示个体的基因。 - 个体:种群中的一个成员,含有一条染色体。 - 适应度函数:评价个体(解)质量的函数。 - 遗传算子:包括选择、交叉和变异操作。 4. 运行参数 - 是否选择精英策略。 - 种群大小:种群中个体的数量。 - 染色体长度:表示解的二进制串的长度。 - 最大选代次数:算法迭代的最大次数。 - 交叉概率:染色体交叉的概率。 - 变异概率:染色体变异的概率。 5. 编码与解码 - 实数编码:直接用实数表示基因,易于理解,但可能导致过早收敛。 - 二进制编码:稳定性高,种群多样性大,但需要解码过程。 6. 编码细节 对于本问题,解空间被划分为 90000 个等分,需要 17 位二进制数来表示。染色体即为一个 17 位的二进制串。 7. 染色体生成 初始染色体是随机生成的二进制串。 8. 染色体解码 解码公式为: x = 0 + (二进制串的十进制表示) * (9 - 0) / (2^17 - 1) 9. 个体与种群 个体是染色体的载体,种群是由多个个体组成的集合。 10. 适应度函数 适应度函数值越大,解的质量越高。在本问题中,适应度函数即为 f(x)。 11. 遗传算子 - 选择(Selection):根据适应度选择优秀个体作为父母。 - 交叉(Crossover):父母染色体按一定概率交换基因。 - 变异(Mutation):染色体按一定概率发生变异。 12. 选择、交叉和变异操作 - 选择操作采用轮盘赌方法,可能结合精英策略。 - 交叉操作使用单点交叉法或其他方法。 - 变异操作使用单点变异法或其他方法。 13. 交叉和变异概率 交叉概率通常较大,变异概率较低。例如,本问题中交叉概率设为 0.6,变异概率设为 0.01。 14. 遗传算法流程 - 初始化种群。 - 计算个体适应度。 - 根据适应度排序。 - 执行选择、交叉和变异操作。 - 检查是否满足停止规则,如满足则停止,否则继续迭代。 通过以上步骤,遗传算法能够在有限的迭代次数内找到一个近似最优解。 Process finished with exit code 0
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。