下午好,

我正在为家庭护理公司的PHP应用程序工作.他们每周都有x个护理人员安排参加x个服务用户(客户)的房屋.每个服务用户都具有何时被访问的“时间表”,包括周期加上访问持续时间(以分钟为单位).

因此,例如,服务用户可以具有以下时间表.

AM   Lunch   Tea   Late   Night   Respite
Mon   30m  -       30m   60m    -       -
Tue   30m  -       -     60m    -       -
Wed   20m  25m     30m   60m    120m    -
Thu   -    -       30m   -      -       -
Fri   30m  25m     -     -      -       -
Sat   -    -       -     -      -       -
Sun   20m  25m     -     -      -       -

这些时期当前以下列格式存储在数据库中:

Table: Service_user_schedules
id   service_user_id   day   period   duration

护理人员每周都会填写一份可用的工作时间表.然后将该数据输入到系统中,并以以下格式存储在数据库中:

Table: Carer_available_shifts
id   carer_id   day   period

现在的问题是,我需要创建一个控制器,该控制器将采用这些数据,并根据所提供的可用性自动分配给服务用户的照顾者.这需要可编辑,以便在没有人可用于特定护理的情况下,用户可以选择不可用的,并且仍将被添加到数据库.

目前,我有一些循环,功能和回声,以检查照顾者是否可用于特定的服务用户,并使其可编辑.

有没有人以前执行过这样的任务,如果是这样,你是否找到一个简单的方法来完成它.我更喜欢使其面向对象,所以我可以重用同一个泛型类,但是在这一刻,我完全失去了!

提前谢谢了.

编辑:我现在已经为这个问题添加了一个赏金.我目前正在研究遗传算法(我从来没有听说过更不用说使用!)作为解决这个问题的一些答案.我想知道,如果有人使用其他方法来解决这种类型的问题,或者如果您使用了遗传算法,那么可以提供一个不太普遍的解释,说明如何将它们应用于这个特定的问题.

我会假设这个障碍在许多“人员配置”类型的应用程序中是相当普遍的,并且对网络上的任何地方的讨论几乎感到惊讶!

UPDATE

对不起,迟到的回复家伙.感谢您的详细答案,他们肯定让我对GA的使用感兴趣.对于这个特定的项目,我想我可能最终使用Tak所描述的数据库方法,但是当我有更多的开发时间被搁置时,可能会转换为使用GA.现在肯定是我的“学习”列表,你的答案给了我一个伟大的开始!干杯!

对于谁给予赏金,我现在有点失落. duedl0r将很多努力放在他(或她)的答案中,我很感激.它给了我很好的洞察遗传算法的世界 – 一个我从来没有遇到的问题解决方法.但是,提供的答案提供了我将用于此项目的解决方案.所以我已经把赏金给了德.

谢谢大家.

我会这样接近首先将数据库表链接到可用的照顾者…
Table schedules_shifts
id   service_user_schedules_id   carer_available_shifts_id

现在,一个功能可以将可用的护理人员与所需的计划插槽相匹配并填充表格…

* Fetch service_user_schedules for the next week
* For each service_user_schedules row
 * Fetch carer_available_shifts that match the schedule slot
 * For each carer_available_shift row
  * If results
   * Fetch schedules_shifts rows where carer_available_shifts_id is already used
   * If no results
    * Insert a row in the schedules_shifts table for each carer
   * Otherwise carer is busy,do nothing and continue
  * If no results,flag for review or trigger e-mail to manager,or other action
* Trigger e-mail or save log of completion for peace of mind

现在,新桌子可以提供护理人员赛程,而不需要重新分配护理人员的时间.然而,它确实符合多个护理人员的班次与时间表.这可能是一个功能!按原样离开他们,并在schedule schedule上添加一个已确认的列,以便经理可以手动分配工作,或照顾者可以自愿,或自动将第一个匹配标记为已确认,并将其他行保留为替代,以防第一个照顾者无法进行它.

这一切都可以由每周一次的cron触发,或者当最后的职业更新他们周的时间表时.可能是第一个因为用户经常是不可预测的.

现在,自动化数据在一个表中,您可以打开它进行编辑.创建一个正常的管理控制台,您可以根据需要更改在schedule_shifts中的行,或者标记不同行“已确认”.

将其翻译成泛型类不应该太困难 – 只是使用通用术语的问题.太晚了,我想不出来了:)

可以在PHP数组中进行所有数据筛选,而不是上面创建的数据库舞蹈,但是我认为sql更适合于通过数据排序和修改.

遗传算法听起来很有趣,如果你有时间调查他们^ _ ^

希望有帮助?

php – 调度方法的更多相关文章

  1. 详解前端HTML5几种存储方式的总结

    本篇文章主要介绍了前端HTML5几种存储方式的总结 ,主要包括本地存储localstorage,本地存储sessionstorage,离线缓存(application cache),Web SQL,IndexedDB。有兴趣的可以了解一下。

  2. PhoneGap / iOS上的SQLite数据库 – 超过5mb可能

    我误解了什么吗?Phonegap中的sqlitedbs真的有5mb的限制吗?我正在使用Phonegap1.2和iOS5.解决方法您可以使用带有phonegap插件的原生sqliteDB,您将没有任何限制.在iOS5.1中,Websql被认为是可以随时删除的临时数据…

  3. ios – 领域:如何获取数据库的当前大小

    是否有RealmAPI方法使用RealmSwift作为数据存储来获取我的RealmSwift应用程序的当前数据库大小?

  4. ios – Realm – 无法使用现有主键值创建对象

    我有一个对象有许多狗的人.应用程序有单独的页面,它只显示狗和其他页面显示人的狗我的模型如下我有人存储在Realm中.人有详细页面,我们取,并显示他的狗.如果狗已经存在,我会更新该狗的最新信息并将其添加到人的狗列表中,否则创建新狗,保存并将其添加到人员列表中.这适用于coredata.在尝试用他的狗更新人时,领域会抛出异常无法使用现有主键值创建对象解决方法这里的问题是,即使你正在创建一个全新的Rea

  5. ios – UIWebView中的WebSQL / SQLite数据库的最大大小(phonegap)

    我知道一般来说,Web应用程序的本地存储空间有5MB的限制.本地网页浏览应用程式是否也有这个限制?

  6. ios – Firebase离线存储高级 – 手动同步和进度信息

    >我可以提供一个捆绑数据库–安装App后我可以已经离线查询了Firebase数据?然后我有另一个关于Firebase的主要问题:>JSON存储是伟大的–但是这样我们不关心一个独特的结构,我们必须注意这一点插入总是正确的数据集?我从来没有试图显示实际的进展,但是当您从firebase中检索数据时,始终会在成功检索数据时调用onDataChange方法.https://firebase.google.com/docs/database/android/retrieve-data#read_data_onceC

  7. ios – 如何处理多用户数据库

    我的应用程序就像很多应用程序–它有一个用户输入用户名和密码的登录屏幕,以及登录按钮我的应用程序还使用CoreData来保存大多数用户的业务对象,当然也是用户特定的.我也有一个登出按钮来启用切换用户.这不会发生很多,但仍然是必要的).现在如果不同的用户登录,我需要获取他的具体数据.但是我该如何做呢?

  8. ios – Swift从Firebase数据库中获取特定价值

    我正在尝试从Firebase数据库中获取特定值.我看了一些像谷歌这样的文件,但我做不到.这是数据库的JSON文件:SWIFT代码:我想获得用户的电子邮件价值,而不是每个人.我怎样才能做到这一点?解决方法在您的代码中,快照将包含子值的字典.要访问它们,请将snapshot.value转换为Dictionary,然后访问各个子项是一个快照

  9. ios – Realm Swift:在卸载应用程序后是否可以保留数据库?

    使用realmswift,即使从设备上卸载应用程序,是否可以在设备内存中保留和维护应用程序的领域数据库文件?非常感谢您的帮助.解决方法删除应用程序时,应用程序的所有文件都是剩余的.iOS应用程序是沙盒.这意味着每个应用程序在磁盘中都有自己的空间,并有自己的目录,这些目录充当应用程序及其数据的主页.从iPhone删除应用程序会删除此沙箱,删除与该应用程序关联的所有数据.

  10. ios – 在没有XML的情况下更新sqlite数据库

    我的应用程序需要来自sqlite数据库的数据.它将附带此数据库的一个版本,但我需要定期更新它(很可能每月一次).通常情况下,我一直在通过我设置的一堆网络服务将我的应用程序的其他部分的更新作为XML发送,但我现在正在处理的这个特定数据库非常大(大约20-30MB),而且我当我尝试以这种方式发送时出现超时错误.我尝试将数据库放在我的公司服务器上,然后将其下载到NSData对象中.然后我将该数据对象保存

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部