mirror of
https://github.com/morten-olsen/bob.git
synced 2026-02-08 01:46:29 +01:00
149 lines
2.9 KiB
TypeScript
149 lines
2.9 KiB
TypeScript
import { calulation, plugins } from '@bob-the-algorithm/core';
|
|
import { createWorker } from '../../features/runner/worker';
|
|
import { convertResult } from '../../utils/graph';
|
|
|
|
const MIN = 1000 * 60;
|
|
const HOUR = 1000 * 60 * 60;
|
|
|
|
const getTravelTime = async () => 30 * MIN;
|
|
|
|
const realistic = async () => {
|
|
const result = await calulation({
|
|
location: 'home',
|
|
time: 0,
|
|
heuristic: ({ completed }) => completed.length >= 3,
|
|
plugins: [
|
|
plugins.transport({
|
|
getTravelTime,
|
|
}),
|
|
],
|
|
planables: [
|
|
{
|
|
id: `Brush teeth`,
|
|
duration: 2 * MIN,
|
|
start: {
|
|
min: 7 * HOUR,
|
|
max: 8 * HOUR,
|
|
},
|
|
attributes: {
|
|
locations: ['home'],
|
|
},
|
|
score: 1,
|
|
},
|
|
{
|
|
id: 'Drop off kids',
|
|
duration: 30 * MIN,
|
|
attributes: {
|
|
locations: ['daycare'],
|
|
},
|
|
score: 1,
|
|
start: {
|
|
min: 7 * HOUR,
|
|
max: 9 * HOUR,
|
|
},
|
|
},
|
|
{
|
|
id: 'Pickup the kids',
|
|
duration: 30 * MIN,
|
|
attributes: {
|
|
locations: ['daycare'],
|
|
},
|
|
score: 1,
|
|
start: {
|
|
min: 15 * HOUR,
|
|
max: 15.5 * HOUR,
|
|
},
|
|
},
|
|
{
|
|
id: `Eat breakfast`,
|
|
duration: 15 * MIN,
|
|
start: {
|
|
min: 7 * HOUR,
|
|
max: 9 * HOUR,
|
|
},
|
|
attributes: {
|
|
locations: ['home'],
|
|
},
|
|
score: 1,
|
|
},
|
|
{
|
|
id: 'Do work',
|
|
duration: 1 * HOUR,
|
|
count: 5,
|
|
attributes: {
|
|
locations: ['work'],
|
|
},
|
|
score: 10,
|
|
start: {
|
|
min: 8 * HOUR,
|
|
max: 18 * HOUR,
|
|
},
|
|
},
|
|
{
|
|
id: 'Read book',
|
|
duration: 0.5 * HOUR,
|
|
attributes: {
|
|
locations: ['home', 'work'],
|
|
},
|
|
score: 3,
|
|
count: 2,
|
|
start: {
|
|
min: 8 * HOUR,
|
|
max: 22 * HOUR,
|
|
},
|
|
},
|
|
{
|
|
id: 'Meditate',
|
|
duration: 10 * MIN,
|
|
score: 1,
|
|
attributes: {},
|
|
start: {
|
|
min: 8 * HOUR,
|
|
max: 22 * HOUR,
|
|
},
|
|
},
|
|
{
|
|
id: 'Meeting 1',
|
|
duration: 1 * HOUR,
|
|
attributes: {
|
|
locations: ['work', 'work'],
|
|
},
|
|
score: 10,
|
|
start: {
|
|
min: 10 * HOUR,
|
|
max: 10 * HOUR,
|
|
},
|
|
},
|
|
{
|
|
id: 'Meeting 2',
|
|
duration: 1 * HOUR,
|
|
attributes: {
|
|
locations: ['work', 'work'],
|
|
},
|
|
score: 10,
|
|
start: {
|
|
min: 12 * HOUR,
|
|
max: 12 * HOUR,
|
|
},
|
|
},
|
|
{
|
|
id: 'Play playstation',
|
|
duration: 1 * HOUR,
|
|
attributes: {
|
|
locations: ['home'],
|
|
},
|
|
score: 10,
|
|
start: {
|
|
min: 16 * HOUR,
|
|
max: 24 * HOUR,
|
|
},
|
|
},
|
|
],
|
|
});
|
|
return convertResult(result);
|
|
};
|
|
|
|
createWorker({
|
|
realistic,
|
|
});
|