自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (2)
  • 问答 (2)
  • 收藏
  • 关注

原创 电子书列表查询接口开发、通用返回类、封装请求参数和返回参数

电子书列表对应数据库表ebook,因此持久层的对象应指定为ebook。(1)修改generator-config.xml对象。(2)mybatis-generator生成对象。

2022-10-04 13:53:03 646 1

原创 Mysql数据库连接、集成mybatis、generator

注意:依赖当中需要在resources->generator包中添加generator-config.xml文件,作为代码生成器的配置文件。其中需要声明数据库连接方式、domain、java-mapper、resources-mapper的位置。mybatis是用于与数据库进行交互,更加方便快捷,是一种半自动的持久层框架(需要用户自行构建sql语句)。domain-据库表的实体类:用于返回表中的内容(相当于建立结构类),其参数与数据库表一致或减少。(a)添加实体层domain:添加数据库表的实体类。

2022-10-04 11:08:42 718

原创 第一个Hello word接口、代码简易分层、配置项设置和热部署

注意:启动类更换位置以后,需要添加@ComponentScan注解,以便于程序能够扫描到不同包的接口。一般情况下,接口放置于controller包下。(1)接口一般放置在controller包。(2)启动类置入config包。

2022-10-02 12:23:38 495

原创 启动日志与图案修改

添加内容:http://patorjk.com/software/taag/#p=display&f=Graffiti&t=Type%20Something%20。路径:file->settings->editor->live templates。通过banner.txt(名称是固定的)文件修改启动图案或者内容。添加模板库(不用添加也可,但是便于管理自行添加的模板)使用文件:logback-spring.xml。路径:src->main->resources。(1)LOG代码模板定义。

2022-10-02 10:31:22 372

原创 项目初始配置-gitee关联

file->settings->file encodings,将编码方式全部修改为UTF-8。(4)选择项目->VCS->Create Git Repository->选择项目文件目录。选中当前项目->Git->Commit Directory。(2)选择已下载的JDK版本,选择到已经下载的JDK目录。(1)前提是已经安装好git-for-windows。选中项目->Git->manage remotes。选中当前项目->Git->Add。选中项目->Git->Pull。(1)选择已配置的JDK版本。

2022-09-29 23:01:24 617

原创 idea创建springboot项目

4.1 src项目所有基本代码的放置位置4.1.1 mainmain是项目直接使用的位置,主要分为java类和resources配置文件。在java中,默认一个application,作为项目启动类。在resources中,static和templates主要是前端使用的配置文件包,例如静态文件和页面代码;在前后端不分离的项目中,一般作为前端相关的代码文件;但是在分离的项目中,不会使用到该文件目录;application.properties是maven的配置文件。

2022-09-12 22:51:38 254

原创 git安装-windows

windows下安装git

2022-08-25 23:40:51 66

原创 柔性作业车间调度问题-遗传算法求解方法

柔性作业车间问题的启发求解方法如【柔性作业车间调度问题-启发求解方法】,主要使用了简单的最早开始加工时间和最早加工结束时间启发策略,虽然能够得到可行的加工方案,但是仍然存在可进一步改进的方向。柔性作业车间问题可描述为:每一待加工工件包含一道或一道以上工序,每个工件的工序顺序都是已知的,每道工序可以在一台及以上的机器上完成加工, 加工的时间会因为所选择的加工机器不同而变得不同。 调度方案需要确定工序的加工顺序和机器的选择,从而使得整个调度系统的各指标达到最优。加工过程需满足以下条件:(1)工件工序只能在可

2022-06-24 14:29:11 2456 4

原创 柔性作业车间调度问题-启发求解方法

柔性作业车间问题可描述为:每一待加工工件包含一道或一道以上工序,每个工件的工序 顺序都是已知的,每道工序可以在一台及以上的机器上完成加工, 加工的时间会因为所选择的加工机器不同而变得不同。 调度方案需要确定工序的加工顺序和机器的选择,从而使得整个调度系统的各指标达到最优。加工过程需满足以下条件:(1)工件工序只能在可加工设备上进行加工(2)一台设备同一时间段只能对一个工件工序进行加工(3)工件工序开始加工后无法停止(4)工件下一工序的开始时间大于等于上一工序的结束时间,即工件工序具备加工次序仿真数

2022-06-19 16:06:00 1561 8

原创 多阶段库存订货问题的整数规划求解-cplex

某鞋店出售橡胶雪靴,预计未来4个月市场需求如下:月份:1 2 3 4需求:40 20 30 40每次订货只有10,20,30,40,50几种批量方案,每种批量的价格分别为48,86,118,138,160元,每月库存不能超过40双,存储费用按月末计算,每双价格为0.2元。考虑到四个月后市场风险较大,希望四个月后的库存为0.这四个月如何订货,总花费最小?(1)每月的月末库存不能超过40(2)第4个月的月末库存为0(3)当月库存=上月库存+当月订货量-当月需求量变量s_i表示第i月的剩余库存

2022-06-15 17:35:13 586

原创 java文件操作方法

java文件操作方法

2022-06-13 20:20:44 244

原创 java调用cplex实现经典Benders分解算法求解混合整数规划问题

Benders分解算法是由Jacques F. Benders在1962年首先提出,目的是用于解决混合整数规划问题(MIP问题),即连续变量与整数变量同时出现的极值问题。随着分解算法的不断演变,不严格要求问题形式的广义Benders分解算法被A.M. Geoffrion提出,实现了对具有Benders分解基本形式的非线性问题求解,也就是说在广义Benders分解算法对子问题的求解方法也不必一定是线性的。这里仅对经典的Benders分解算法进行简要说明。经典的Benders分解算法将决策变量分为简单变量和复杂

2022-06-08 14:43:09 2176 2

原创 java调用cplex实现拉格朗日松弛算法求解整数规划问题

在难以求解的模型当中,可以使用分支定界算法,割平面算法等算法进行精确求解,以便于获得问题的精确解。若在求解过程中,这些难以求解的模型不需要获得他的精确解,而是只需要给出一个次优解或者解的上下界。在这种情况下可以考虑采用松弛模型的方法。当然,智能算法也是一种解决途径。对于一个整数规划问题,与0-1整数规划问题中将离散变量的取值范围松弛为[0,1]之间的连续变量不同,拉格朗日松弛算法是将模型中的部分约束进行松弛,并且这些被松弛的约束并不是被完全去掉,而是利用拉格朗日乘子在目标函数上增加相应的惩罚项,对不满足这些

2022-06-04 20:59:07 1719 5

原创 java调用cplex实现分支定界算法求解整数规划问题

分支定界算法分支定界算法是求解整数规划或者混合整数规划问题的最常用方法之一,其基本思想是将松弛可行域不断分解为较小的区域,并从该区域当中获取最好解;若该区域仍然无法满足变量约束条件,则进一步划分可行域。这一过程为分支过程且分支过程中将会对解进行判断,若劣于当前最好解,该支将被舍去。若找到符合约束条件的整数解,则需要对当前解进行更新,划定问题的界限,称之为定界。为什么自定义算法cplex求解器具备求解整数规划的功能,如博客【cplex求解整数规划示例-按行添加】或者【cplex求解整数规划示例-按列添加

2022-05-31 18:31:01 1311 2

原创 java调用cplex实现列生成算法求解切割下料问题

列生成算法列生成(Column generation)算法是一种用于求解大规模线性优化问题的非常高效的算法,被应用于调度问题、切割问题、车辆路径问题、选址问题等。列生成算法是一种可用于求解线性规划问题的精确算法,其本质是单纯形法的延伸扩展。列生成算法的原理详细介绍可参考博客【干货 | 10分钟带你彻底了解column generation】为什么使用列生成算法在一般的线性规划问题当中,变量数和约束数较少,求解器或者手写单纯形法均能对问题进行求解,再不济花费时间成本进行算法迭代,同样也可以实现求解。

2022-05-29 21:48:49 1080 1

原创 cplex求解整数规划示例-按列添加

在列生成算法学习过程中,使用按列对添加模型有利于后期逐步添加列。但是之前只了解按行添加的模式,因而记录java-cplex按列添加模型的方式。按行添加:根据数学模型的约束数量,逐一将每一个约束添加进入模型,如【cplex求解整数规划示例-按行添加】。按列添加:根据数学模型的变量数量,逐一将每一个约束的变量添加进入模型。问题介绍数据定义class DataColumn{ // 目标系数 double[] objectiveCoefficient={7, 8, 2, 9

2022-05-29 20:23:17 1238

原创 神经网络自编码-pytorch

自编码介绍由于神经网络层与层之间的神经元连接存在输入和输出大小的不同,可以应用网络实现对数据的降维,图片的解压缩等操作。以图片解压缩为例,输入神经元个数为m,输出神经元个数为n:若m>n,则将图片进行降维,提取图片的精华信息;若n<m,则将图片进行增维,对图片进行解压或者扩充图片信息。网络搭建#搭建网络class Net(nn.Module): def __init__(self): super(Net, self).__init__() #

2022-05-23 16:55:45 471

原创 Q-Learning解决二维寻宝问题-sarsa

环境说明二维寻宝问题的环境如下图,探索者能够在5x5的位置中移动,起点位置为绿色方块,宝藏位置为红色方块,每一个位置对应相应的奖励。探索者从起点开始,在上下左右中选择移动方向,直至到达红色区域并获得宝藏。实现流程sarsa与一般方法的不同在于,获取当前状态反馈后,需要进一步获取下一个动作,然后使用当前动作和下一动作对Q表进行更新,算法伪代码如下:实现流程:(1)设置初始状态;(2)选择动作;(3)获取状态反馈;(4)选取下一个动作(5)更新Q表;(6)更新状态;(7)设置终止条件状态动作说明

2022-05-20 19:21:05 310

原创 循环神经网络实现简单回归预测-pytorch

循环神经网络的实现参考课程【RNN 循环神经网络】数据模拟在使用循环神经网络进行回归预测时,使用sin函数的值预测cos函数。网络搭建class Net(nn.Module): def __init__(self): super(Net, self).__init__() #RNN层 self.rnn=nn.RNN( input_size=1, #输入特征维度为1:输入值

2022-05-20 19:07:18 834

原创 手写数字识别的LSTM神经网络实现-pytorch

LSTM神经网络的实现参考课程【RNN 循环神经网络】训练数据获取def dataLoader(): # 获取Mnist手写数字数据集 train_data = torchvision.datasets.MNIST( root='./mnist', #保存或者提取位置 train=True, #如果为True则为训练集,如果为False则为测试集 transform=torchvision.trans

2022-05-20 10:18:15 246

原创 手写数字识别的卷积神经网络实现-pytorch

卷积神经网络的实现参考课程【CNN卷积神经网络】数据集下载卷积神经网络经常被应用于手写数字的数据集mnist的识别,若数据集下载出现异常,可以到【MNIST数据集】进行数据集下载。train_data = torchvision.datasets.MNIST( root='./mnist', #保存或者提取位置 train=True, #如果为True则为训练集,如果为False则为测试集 transform=to

2022-05-19 14:52:49 156

原创 批量训练、参数保存与提取-pytorch

简单回归问题以简单回归问题为例,实现神经网络的小批量训练、网络参数保存以及参数提取。简单回归问题的神经网络实现可见:【简单回归问题的神经网络实现-pytorch】dataLoader定义dataLoader是torch提供用于封装数据的工具,可以有效实现网络训练过程中的批量训练问题。#生成DataLoader数据结构def dataLoader(x,y): #将torch转换为Dataset torch_dataset = Data.TensorDataset(x, y)

2022-05-18 22:54:43 608

原创 简单二分类问题的神经网络实现-pytorch

数据模拟def dataSet(): n_data = torch.ones(100, 2) # 数据的基本形态 x0 = torch.normal(2*n_data, 1) # 类型0 横坐标 y0 = torch.zeros(100) # 类型0 纵坐标 x1 = torch.normal(-2*n_data, 1) # 类型1 横坐标 y1 = torch.ones(100)

2022-05-18 19:26:37 1455

原创 简单回归问题的神经网络实现-pytorch

前言在学习深度强化学习过程中,由于前期并未系统的 学习网络搭建过程以及使用的地方较少,现在对于使用pytorch搭建神经网络的流程已经十分生疏。在这里重新系统的学习神经网络的搭建过程。学习课程:【莫烦python】数据模拟使用linspace生成模拟的数据。注意其中的x后续将作为网络的输入,应当将其维度设置为1,否则将由于输入维度和网络层维度不同导致无法进行计算。torch.unsqueeze:扩充维度def dataSet(): x = torch.unsqueeze(torch.li

2022-05-18 18:38:15 489

原创 划分问题的整数规划求解-cplex

问题介绍给定一个大小不等的整数集合,问是否可以把这些整数划分成两个集合,任何一个整数或者在集合S1中或者在S2中,但不能同时在两个集合中;对任意给的一个整数集合,请设计算法,解决是否存在一个划分,使得S1种整数之和恰好等于S2集合的整数之和。数学模型leapms介绍使用Java+cplex求解问题前,先介绍一种全新且高效的建模工具——Leapms。Leapms 是一个用于求解整数规划的免费建模语言,具备简洁的建模过程。Leapms 语言设计的原则包括:(1)采用描述性语言形式;(2)尽力与模型的

2022-05-17 18:41:19 388

原创 选址问题的整数规划求解-cplex

问题介绍有五个地点需要派员工作,拟在五个地点中选择若干个地点建立办公室,从办公室到工作地点的旅行根据远近不同有不同的耗费,在各地建立办公室的一次性花费也不同。已知各地的派员需求量,规划在何处建址以及各办公室到不同地点的派员数量,以使得总花费最小。数据如下:数学模型leapms介绍使用Java+cplex求解问题前,先介绍一种全新且高效的建模工具——Leapms。Leapms 是一个用于求解整数规划的免费建模语言,具备简洁的建模过程。Leapms 语言设计的原则包括:(1)采用描述性语言形式;(

2022-05-17 17:40:14 1337

原创 P中值选址问题的整数规划求解-cplex

问题介绍p-中值选址问题是一个常见的选址问题. 问题是给定I个需求结点和J个待选设施地点, 要求选择p个地点建立设施, 使得运输成本最低。数学模型leapms介绍Leapms 语言是一个用于求解整数规划的免费建模语言,具备简洁的建模过程。Leapms 语言设计的原则包括:(1)采用描述性语言形式;(2)尽力与模型的数学表达形式一致。leapms软件应用网站:https://www.cnblogs.com/leapms/数据定义// 数据参数定义class DataMedian{

2022-05-17 16:25:15 3339

原创 cplex求解整数规划示例-按行添加

使用java+cplex实现对整数规划问题进行求解,使用or-tools的解决方法可以查看这篇文章【or-tools求解整数规划】。问题介绍数据定义// 数据参数定义class Data{ // 目标系数 double[] objectiveCoefficient={7, 8, 2, 9, 6}; // 约束系数 double[][] constraintCoefficient={{5, 7, 9, 2, 1}, {18, 4, -

2022-05-17 12:38:47 709

原创 Q-Learning解决最短路径问题

紧接着使用Q-Learning实现了一维环境里的寻宝问题,以及二维世界里的寻宝问题,将实现模板应用于最短路问题。环境说明最短路径问题的环境如下图,起点为A,终点为G,选择最短的路线完成A->G。节点之间的连线表示节点相联通,其上数值表示奖励。若节点之间无法联通,则奖励为-99。Q-Learning流程实现流程:(1)设置初始状态;(2)选择动作;(3)获取状态反馈;(4)更新Q表;(5)更新状态;(6)设置终止条件状态动作说明状态(state):节点编号动作(action):节点编号

2022-05-15 14:08:50 2142 5

原创 Q-Learning解决二维寻宝问题

上回使用Q-Learning实现了一维环境里的寻宝问题,接下来将其扩展到二维环境。与一维环境中仅能左右移动不同,探索者可以在二维环境里进行上下左右四个方向移动。环境说明二维寻宝问题的环境如下图,探索者能够在5x5的位置中移动,起点位置为绿色方块,宝藏位置为红色方块,每一个位置对应相应的奖励。探索者从起点开始,在上下左右中选择移动方向,直至到达红色区域并获得宝藏。Q-Learning流程实现流程:(1)设置初始状态;(2)选择动作;(3)获取状态反馈;(4)更新Q表;(5)更新状态;(6)设置终止条

2022-05-15 13:51:11 844

原创 Q-Learning解决一维寻宝问题

前言强烈推荐【莫烦python】的强化学习视频课程,对初学者入门较为友好,最主要是免费。课程连接:https://mofanpy.com/tutorials/machine-learning/reinforcement-learning/在一维寻宝问题中,探索者处于一维世界的起始段(最左端或者任意位置),可以选择向左或者向右移动位置进行探索,直至找到末位的宝藏,获得相应的奖励。探索者相应环境信息如下:状态:位置i(i=0,…,n)且起始位置为0,结束位置为n动作:左,右此外,当探索者位于位置0

2022-05-14 23:13:27 667

原创 IntelliJ IDEA 2021.3配置Cplex12100

Cplex是IBM公司的一款高性能求解器,支持python、java、C++等多种语言。本文简要介绍介绍IntelliJ IDEA 2021.3配置Cplex的过程。cplex_entserv1210.win-x86-64网盘链接:https://pan.baidu.com/s/1OiFcpTYJ94Xv6tflT1ICGg提取码:t3pj第一步:添加cplex.jarFile -> Project structure -> Libraries->左上角(+)->Java-

2022-05-10 22:41:46 445

原创 烟花算法初探

前沿:函数优化求解问题学习过程中,不可避免选择求解算法,且不同的算法收敛速度不同,复杂度不同。探究问题求解的性能,则需要对求解算法进行对比。因此,在这里,引入烟花算法。以下资料来源于书籍:《烟花算法引论》谭营 著;科学出版社,20151.烟花算法介绍2.算法组成3.算法实现3.1 随机维度选择随机维度选择是指在1和dim之间随机选择n个维度,且n个维度不重复。作用是在进行位移操作时对指定数量的位置进行偏移,即产生新的爆炸火花。过程实现如下:void DimensionRand(i

2020-09-08 16:52:33 4300

原创 差分进化算法求解函数优化问题

前言:在这里,我们尝试使用标准差分进化算法对无约束函数优化问题进行求解。由于使用的是基础算法,效果不显著。在未来,应该讨论完善的、改进的算法的应用。算法内容参考书籍:差分进化算法理论与应用 张春美著差分进化算法(DE)是一类全局优化算法,算法的操作流程与遗传算法相类似,包括变异、交叉和选择操作,但这些操作的具体定义与遗传算法有所不同。1.标准差分进化算法1.2差分变异1.3交叉1.4 选择2.C++示例2.1缩放因子差分进化算法的参数缩放因子F表示对基向量的扰动程度,对于计算

2020-07-29 18:43:53 2180

原创 模拟退火算法求解函数优化问题举例

前言:在这里,我们尝试使用模拟退火算法对函数优化问题进行求解。由于使用的是基础算法,并且简化了相关过程,所以求解效果不显著。在未来,应该讨论完善的、改进的模拟退火算法的应用。算法内容参考书籍:模拟退火算法及其应用案例参考博客:模拟退火算法与其python实现(一)1.固体退火过程固体退火是先将固体加热至熔化,再通过冷却凝固成规整晶体的热力学过程。2.固体退火现象在加热固体时,固体粒子的热运动不断增强,随着温度的升高,粒子预期平衡位置的偏离越来越大。当温度升至溶解温度后,固体的规则性被彻底破坏,从

2020-06-24 11:06:00 1521

原创 原单纯形法求解线性规划

前言:最近学习使用智能算法求解线性规划问题过程中,为了对算法结果进行比对,思前想后还是使用单纯形法进行验证。原因是单纯形法曾出现于运筹学课堂,并且使用编程语言编写过,还有那么些印象。单纯形法:具体步骤是,从线性方程组找出一个个的单纯形,每一个单纯形可以求得一组解,然后再判断该解使目标函数值是增大还是变小了,决定下一步选择的单纯形。通过优化迭代,直到目标函数实现最大或最小值。原理描述可参考博客:运筹学——线性规划及单纯形法求解。一般线性规划满足:max z=c_1x_1+c_2x_2+…+c_nx_

2020-06-11 17:53:05 3941

原创 单设施布置方法-精确重心法

精确重心法常用于单一设施布置的面选址中,常常考虑现有设施之间的距离和物流量。其中,距离一般使用欧几里得距离表示,物流量使用权值表示。现有设施位置为(x,y),权值为w,其目标函数为:计算过程为:以报刊亭选址为例:一个报刊连锁公司想在一个地区开设一个新的报刊零售点,主要的服务对象是附近的5个住宿小区的居民,这些需求点的位置如图所示。各个需求点对应的权重(需求量)。计算过程代码化为:void initial(){ float sum_X=0,sum_Y=0; for(int i=0

2020-06-08 14:59:54 6522 2

原创 遗传算法求解函数优化问题-基本遗传算法SGA

博客内图片文字来源于书本《遗传算法及其应用》1.算法介绍《遗传算法及其应用》是在阅读GA过程中较好的一本算法基础方法介绍的书,想要从零开始详细的进行学习的同学们,这是很好的参考工具。关于遗传算法,《遗传算法及其应用》一书给出了最为详尽的描述,书中也针对不同问题给出了基础的方法,例如组合优化问题中的函数优化、背包问题、货郎担问题和图论等等。2.实例介绍在上述内容的基础上,使用C...

2020-05-07 13:50:28 1926

原创 PSO算法求解(下)-罚函数方法

在上一篇博客“PSO算法求解(上)-基本PSO”中,回顾了基本粒子群算法求解无约束问题的流程,那么,有约束的问题该如何求解?一种方法是将约束作为边界,对产生的粒子除边界检验以外,再考虑粒子是否满足约束式,如博客https://blog.csdn.net/weixin_37980595/article/details/104467199;然而,这种方法的求解过程非常缓慢,且操作较繁琐。另一种方法...

2020-04-30 16:35:41 5290 7

原创 PSO算法求解(上)-基本PSO

粒子群算法是智能算法之一,应用还是比较广泛的,尤其是在毕设当中。前一次关于“PSO求解整数规划问题”的举例说明比较突兀,并没有完整的依据,且求解方法是笨拙的,根本不适应一般求解。这里,将从基本粒子群算法出发,然后过渡到一般问题的求解。首先,使用基本粒子群求解无约束问题。图片中文字来源:粒子群算法及应用_纪震著_北京:科学出版社_2009.01基本粒子群算法求解无约束问题:#include...

2020-04-29 21:16:09 1876 2

柔性作业车间调度问题-启发求解方法和遗传算法求解方法

柔性作业车间问题可描述为:每一待加工工件包含一道或一道以上工序,每个工件的工序 顺序都是已知的,每道工序可以在一台及以上的机器上完成加工, 加工的时间会因为所选择的加工机器不同而变得不同。 调度方案需要确定工序的加工顺序和机器的选择,从而使得整个调度系统的各指标达到最优。 加工过程需满足以下条件: (1)工件工序只能在可加工设备上进行加工 (2)一台设备同一时间段只能对一个工件工序进行加工 (3)工件工序开始加工后无法停止 (4)工件下一工序的开始时间大于等于上一工序的结束时间,即工件工序具备加工次序

2022-06-29

java调用cplex实现列生成算法求解切割下料问题

java调用cplex实现列生成算法求解切割下料问题 列生成(Column generation)算法是一种用于求解大规模线性优化问题的非常高效的算法,被应用于调度问题、切割问题、车辆路径问题、选址问题等。 列生成算法是一种可用于求解线性规划问题的精确算法,其本质是单纯形法的延伸扩展。

2022-05-29

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除