OptaPlanner笔记1

1.1 什么是OptaPlanner

每个组织都面临规划问题:为产品或服务提供有限的受约束的资源(员工、资产、时间和金钱)。OptaPlanner用来优化这种规划,以实现用更少的资源来做更多的业务。 这被称为Constraint Satisfaction Programming(约束规划,这是运筹学学科的一部分)。

OptaPlanner 是一个轻量级、可嵌入的约束满足问题求解引擎,可优化规划问题。它适用的场景例如:

  • 员工轮班排班:为护士、修理工等排班。
  • 议程安排:安排会议,约会,维护工作,广告等。
  • 教育方面的排班:安排学科,课程,考试,学术会议等。
  • 车辆路线:利用已知的地图工具规划运输货物和/或乘客的车辆路线,这些路线可以经过多个目的地。
  • 装箱问题:如何使用装箱、卡车、船舶和存储仓库装载物品,或者是云计算中如何跨计算机资源打包信息。
  • 车间作业调度:汽车装配线规划、机器队列规划、劳动力任务规划等。
  • 切割库存:在切割纸张、钢材、地毯等时最大限度地减少浪费。
  • 体育日程安排:为足球联赛、棒球联赛规划比赛和训练时间表。
  • 财务优化:投资组合优化、风险分散等。

在这里插入图片描述

1.2 什么是规划问题

在这里插入图片描述

规划问题存在一个基于有限资源和特定规则的最优解。最优解可以是任何数量的事务,例如:

  • 利润最大化
  • 环境影响最小化
  • 员工和顾客满意度最大化

实现这些目标的能力取决于可用资源的数量,例如:

  • 人员数量
  • 时间
  • 预算
  • 实物资产(机械、车辆、计算机、建筑物等)

还必须考虑与这些资源相关的特定限制,例如一个人的工作小时数、他们使用某些机器的能力或设备之间的兼容性。

OptaPlanner可以帮助Java程序员有效地解决约束满足问题。它使用非常有效的得分计算,将优化启发式和元启发式算法结合在一起。

1.2.1 规划问题是NP-Complete还是NP-Hard问题

NP-Hard问题是指在多项式时间内无法解决的问题。这些问题通常是非常困难的,因为它们的解决需要大量的计算资源。NP-Hard问题的例子包括旅行推销员问题、分治问题等。
NP-Complete问题是指在多项式时间内可以解决,但在NP-Hard问题的解决过程中可以被解决的问题。这些问题的解决通常比NP-Hard问题的解决要快,但仍然需要大量的计算资源。NP-Complete问题的例子包括完全背包问题、分支界限问题等。

前面提到的所有场景都可能是NP-Complete或者NP-Hard的,也就是说:

  • 在合理的时间内验证问题的给定解决方案很容易。
  • 没有灵丹妙药可以在合理的时间内找到问题的最佳解决方案。(至少,世界上最聪明的计算机科学家还没有发现这样的灵丹妙药。 但是,如果他们找到一个适用于某个NP-Complete问题的解决方案,它将适用于每个NP-Complete问题。)

这意味着解决问题可能比你预期的要困难,因为常用的技术不足以解决问题:

  • 蛮力算法(即使是再聪明的变体)将会耗费大量的时间
  • 快速算法(例如在装箱问题中,先放入最大的物品)将得到远远偏离最优解的解决方案。

通过使用先进的优化算法,OptaPlanner 可以在合理的时间内为这类规划问题找到接近最优的解决方案。

1.2.2 规划问题存在约束(硬约束或软约束)

通常,规划问题存在至少两个级别的约束:

  • 绝对不可破坏的(负面)硬约束。(例如,一名教师不能同时教授两节不同的课程。)
  • 如果可以避免,就不应该破坏的(负面)软约束。(例如:某教师不喜欢在星期五的下午授课。)

某些问题也可能存在积极的约束:

  • 如果可能的话,应该满足的(正向的)软约束。(例如,某教师喜欢在星期一的上午授课。)

某些基础问题(例如N皇后问题)只存在硬约束。某些问题存在三个或更多级别的约束,例如硬、中等、软约束。
这些约束定义了规划问题的得分计算(也称为适应度函数)。规划问题的每个解决方案都可以用得分评级。在 OptaPlanner 中,得分约束用面向对象的语言(例如Java代码)编写。这样的代码易于编写、灵活且可扩展。

1.2.3 规划问题存在巨大的搜索空间

规划问题有许多解决方案。 这些解决方案可划分为以下几类:

  • 不考虑是否破坏任何约束的possible solution(可能方案)。规划问题往往存在大量这种毫无价值的解决方案。
  • 不破坏任何负面硬约束的feasible solution(可行方案)。可行方案往往与可能方案数量相对。有时候没有可行方案。每一个可行方案都是可能方案
  • 得分最高的optimal solution(最佳方案)。规划问题至少有一个最佳方案。即使没有可行方案,且最佳方案不可行的情况下也是如此。
  • 在给定时间内找到的最高分的best solution(最优方案)。最优方案可能是可行的,如果时间充裕的话,它就是最佳方案。

与直觉相反,即使数据集很小,可能方案的数量也是巨大的(如果计算正确的话)。正如你在例子中看到的,大多数案例比已知宇宙中原子的数量(10^80)有更多的可能方案。由于没有找到最优解决方案的灵丹妙药,因此任何实现都必须评估一部分的可能方案。

OptaPlanner支持多种优化算法,可以有效地处理大量可能方案。 根据用例的不同,某些优化算法的性能优于其他算法,但无法提前判断。使用 OptaPlanner,只需几行XML或代码来修改求解器的配置,即可轻松切换优化算法。

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

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

相关文章

Flutter系列文章-Flutter UI进阶

在本篇文章中,我们将深入学习 Flutter UI 的进阶技巧,涵盖了布局原理、动画实现、自定义绘图和效果、以及 Material 和 Cupertino 组件库的使用。通过实例演示,你将更加了解如何创建复杂、令人印象深刻的用户界面。 第一部分:深入…

aardio 调用 python pickle load 数据

aardio 调用 python pickle load 词典数据; pip install readmdict dump_pickle.py import os import sys import time import pickle from readmdict import MDX, MDDos.chdir("/mdict")mdxfile "your.mdx" if not os.path.exists(mdxfil…

学习笔记-JVM-对象结构及生命周期

申明:文章内容是本人学习极客时间课程所写,文字和图片基本来源于课程资料,在某些地方会插入一点自己的理解,未用于商业用途,侵删。 原资料地址:课程资料 对象的创建流程 常量池检查:检查new指令是否能在常…

6.利用matlab完成 符号矩阵的秩和 符号方阵的逆矩阵和行列式 (matlab程序)

1.简述 利用M文件建立矩阵 对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。下面通过一个简单例子来说明如何利用M文件创建矩阵。 例2-2 利用M文件建立MYMAT矩阵。(1) 启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵:(2) 把…

LeetCode面向运气之Javascript—第121题-买卖股票的最佳时机-97.77%

LeetCode第121题-买卖股票的最佳时机 题目要求 给定一个数组prices ,它的第i个元素prices[i]表示一支给定股票第i天的价格。 你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回…

【云原生】Kubernetes 概述

Kubernetes 概述 1.Kubernetes 简介 Kubernetes 是一个可移植的、可扩展的、用于管理容器化工作负载和服务的开源平台,它简化(促进)了声明式配置和自动化。它有一个庞大的、快速增长的生态系统。Kubernetes 的服务、支持和工具随处可见。 K…

Jay17 2023.8.12日报

8.12 今天做了2题,CTFshow 红包挑战8(PHP create_function())和BUU [RoarCTF 2019]Easy Java(web.xml泄露)。 此外一直在打NepCTF,出了一题(ez_java_checkin)简单了解了java中shri…

02 - git 文件重命名

第一种方式: mv kongfu_person.txt kongfu.txt git add .第二种方式: git mv kongfu_person.txt kongfu.txt

Jmeter请求接口返回值乱码解决

乱码示例 解决步骤: 1.打开Jmeter安装目录下的bin目录,找到jmeter.properties 2.使用记事本或其他编译工具打开jmeter.properties文件,然后全局搜索sampleresult.default.encoding 3.在文件中添加sampleresult.default.encodingutf-8,保存…

TSINGSEE青犀视频安防监控视频平台EasyCVR设备在线,视频无法播放的原因排查

可支持国标GB28181、RTMP、RTSP/Onvif、海康Ehome、海康SDK、大华SDK、宇视SDK等多种协议接入的安防监控视频平台EasyCVR基于云边端一体化架构,具有强大的数据接入、处理及分发能力,可在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、…

【CSS学习笔记】

学习内容 1.css是什么 2.CSS怎么用(快速入门) 3.CSS选择器(重点 难点) 4.美化页面(文字、阴影、超链接、列表、渐变…) 5.盒子模型 6.浮动 7.定位 8.网页动画(特效) 1.什么是CSS C…

【计算机视觉|生成对抗】用深度卷积生成对抗网络进行无监督表示学习(DCGAN)

本系列博文为深度学习/计算机视觉论文笔记,转载请注明出处 标题:Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks 链接:[1511.06434] Unsupervised Representation Learning with Deep Conv…