解决数据科学问题的 LF 框架

LF Framework to solve Data Science Issue

我正在寻找能够解决以下数据科学问题的框架:

我有几位老师每周可以工作 X 个小时,并且他们可以教授几门学科。

在学校里,每个科目每周需要特定的课时。有些比其他的多

假设一位老师可以教 2-3 个小时,这样您就明白我的意思了^^

我正在寻找的解决方案是一个用数据填充(训练)的框架或算法,然后能够分配教师,以便所有科目都有上限或至少尽可能接近。这意味着也许老师 2 只需要教数学,而老师 5 需要教 50% 的体育和 50% 的英语,或者 30% 的数学/40% 的体育/30% 的英语。

有人提到了 Prolog,但我不确定它是否可以处理此类问题?也许我错了?

是否有适合我的问题的东西,或者我注定要自己从头开始编写该算法?

提前致谢。

gnu-prolog:

中这个特定示例的约束求解的简单程序
soln(X) :-
    X = [T1M, T2M, T2E, T3S, T3A, T3E, T4M, T4A, T5S, T5M, T5E],
    fd_domain(X, 0, 10),

    %% subject constraints
    T1M + T2M + T4M + T5M #= 12,
    T2E + T3E + T5E #= 8,
    T4A + T3A #= 4,
    T3S + T5S #= 2,

    %% teacher constraints b/w 2 and 8 hrs
    2 #=< T1M, T1M #=< 8,
    2 #=< T2M + T2E, T2M + T2E #=< 8,
    2 #=< T3S + T3E + T3A, T3S + T3E + T3A #=< 8,
    2 #=< T4M + T4A, T4M + T4A #=< 8,
    2 #=< T5S + T5M + T5E, T5S + T5M + T5E #=< 8,
    fd_labeling(X).

有几个解决方案

| ?- soln(X).

X = [2,0,2,0,0,6,4,4,2,6,0] ? ;

X = [2,0,2,0,1,5,5,3,2,5,1] ? ;

X = [2,0,2,0,1,6,4,3,2,6,0] ? ;

X = [2,0,2,0,1,6,5,3,2,5,0] ? ;

X = [2,0,2,0,2,4,6,2,2,4,2] ? ;

X = [2,0,2,0,2,5,5,2,2,5,1] ? ;

X = [2,0,2,0,2,5,6,2,2,4,1] ? ;

X = [2,0,2,0,2,6,4,2,2,6,0] ? ;

X = [2,0,2,0,2,6,5,2,2,5,0] ? ;

X = [2,0,2,0,2,6,6,2,2,4,0] ? ;

X = [2,0,2,0,3,3,7,1,2,3,3] ? ;

X = [2,0,2,0,3,4,6,1,2,4,2] ? ;

X = [2,0,2,0,3,4,7,1,2,3,2] ? 

每个解决方案 X = ... 分别给出 T1M, T2M, T2E, T3S, T3A, T3E, T4M, T4A, T5S, T5M, T5E 的小时分布。

第一步似乎是将研究问题(或一系列问题陈述)转化为精确的形式。问题 Characterization/Problem 概念化似乎是解决该问题的一种技术。将方法概念化后,必须为每个子模型和子模块确定一种技术。

将高层次的问题陈述分解成更小的问题称为问题概念化。对于每个子问题,必须确定一种技术,并且方法必须根据前面所述的假设来确定。

解决方案的实现:判断假设是否合理,或者解决方案是否满足他的需求。

这可以与他用这些子问题创建的流程图进行比较,而且一般来说,它试图达到他将确定问题的粒度级别 class。因此,这些问题可以class确定为功能优化或分类问题。