python实现双臂老虎机k-armed-bandit

老虎机,投入钱币会随机返还钱币(reward)
这里设置两台老虎机,一台均值500,标准差5,一台均值550,标准差10
初始值均为998,更新规则为reward之和/轮数
最后结果会在均值附近收敛

import matplotlib.pyplot as plt
import numpy as npdef renew(value1, value2, round1, round2):# 更新大者if value1 >= value2:choice = 1reward1 = int(np.random.normal(loc=500, scale=5, size=None))  # 随机奖励round1 += 1value1 = int((value1 + reward1) / round1)print('reward1:', reward1)reward = reward1else:choice = 2reward2 = int(np.random.normal(loc=550, scale=10, size=None))  # 随机奖励round2 += 1value2 = int((value2 + reward2) / round2)print('reward2:', reward2)reward = reward2print('choice:', choice)return value1, value2, choice, round1, round2, rewardif __name__ == '__main__':value1, value2 = 998, 998s1 = [value1]s2 = [value2]round1, round2 = 1, 1for i in range(1, 100):value1, value2, choice, round1, round2, reward = renew(value1, value2, round1, round2)if choice == 1:s1.append(reward)else:s2.append(reward)print('round1:', round1, 'round2:', round2)print('s1:', s1, 's2:', s2)value1 = int(sum(s1)/round1)value2 = int(sum(s2)/round2)print('value1:', value1, 'value2:', value2)print(' ')plt.plot([i for i in range(len(s1))], s1, 'b', label='value1')plt.plot([i for i in range(len(s2))], s2, 'g', label='value2')plt.legend()plt.show()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/180085.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一些分享| 在线笔记、GIF图片生成方法

文章目录 在线笔记视频转GIF 本片博客旨在挖掘一些好用且免费的在线平台,持续更新中~ 正所谓科技解放双手,使用在线平台可以方便快捷地学习办公,节省时间。 在线笔记 语雀 https://www.yuque.com/dashboard 语雀是笔者用得最长最久的平台了…

C语言查看main函数的参数

这里写自定义目录标题 argc 代表参数的个数argv 代表参数的具体值,其中argv[0]代表的是可执行文件的名字,参考上图

《QT从基础到进阶·二十七》进度条QProgressBar

ui.ProgressBar.setValue(45); //45% ui.ProgressBar.setMin(0); ui.ProgressBar.setMax(255);0到100分为255份,值为215时,进度条为100/255*215 84% 点击主界面弹出进度条QProgressDialog 常用功能: setWindowFlags(Qt::Dialog | Qt::Cu…

基于Langchain-Chatchat的知识库问答系统

文章目录 文章背景构建知识库资源及相关配置相关问题检索问题检索结果不准确 LLM问题LLM回答错误、遗漏或多余 参考 文章背景 Langchain-Chatchat项目是一种利于langchain思想实现的基于本地知识库的问答应用,是一个可以实现完全本地化推理的知识库增强方案&#x…

排查线程阻塞问题

案例代码 package first;import java.util.concurrent.TimeUnit;public class DeadLock {private static volatile Object lock new Object();public static void main(String[] args) {new Thread(() -> {test1();}).start();new Thread(() -> {test2();}).start();}p…

如何解决3d max渲染效果图全白这类异常问题?

通过3d max渲染效果图时,经常会出现3Dmax渲染效果图全黑或是3Dmax渲染效果图全白这类异常问题。可能遇到这类问题较多的都是新手朋友。不知如何解决。 3dmax渲染出现异常的问题,该如何高效解决呢?今天小编这里整理几项知识点,大家…

java时间类

一、java时间类为什么这么复杂? java的时间类非常复杂,这是由于jdk1.0到jdk1.1的时间类设计存在缺陷,导致使用不方便,线程不安全等问题,所以在jdk1.8,java又重新加入了一些时间类替换之前的时间类,但是jd…

Centos7 单用户模式修改密码 3步搞定 666 (百分比成功)

1.第一步重新服务器 2.进入这个页面按e进入单用户模式 3.找到linux16这行 在后面添加 init/bin/bash 按ctrlx进入 4.注意是事项直接修改是报错passud: Authentication token manipulation error 需要执行权限:mount -o remount,rw /

SpringBoot Web开发

SpringBoot3-Web开发 SpringBoot的Web开发能力,由SpringMVC提供。 Web开发的三种方式 方式处理过程注意事项实现效果全自动直接编写控制逻辑全部使用自动给配置默认效果手自一体Configuration、 配置WebMvcConfigurer、 配置WebMvcRegistrations不要标注 EnableWeb…

macos死机后IDEA打不开,Cannot connect to already running IDE instance.

Cannot connect to already running IDE instance. Exception: Process 573 is still running 解决办法 进入:/Users/lzq/Library/Application Support/JetBrains 找到IDEA的目录删除隐藏文件夹 .lock rm -rf .lock

邮件钓鱼-邮件来源伪造-SPF绕过-setoolkitgohishswaks钓鱼

0x00 SPF简介 SPF即发送方策略框架,某种邮件服务器会有自己的SPF策略设定,可以设定SPF为只允许某些主机发送邮件等,当设定后第三方就无法伪造成邮件服务器的管理员对用户下发邮件。 是否存在SPF的验证: linux下:dig…

tomcat8.5.95配置https报错 socket ,无法包装数据,状态无效[CLOSED] ,断开的管道

tomcat8.5.95配置https一直下面的错,经过一下午的排查解决了 2023-11-15 16:33:16.825 ERROR[https-jsse-nio2-8183-exec-5]org.springframework.boot.web.support.ErrorPageFilter.handleCommittedResponse:213 -Cannot forward to error page for request [/css/bootstrap.m…