{
  "_id": "6ad02287e2d863f662953fef",
  "Package": "turfLP",
  "Title": "TURF Analysis with Integer Linear Programming",
  "Version": "0.2.0",
  "Authors@R": "c(\nperson(\"John\", \"Ennis\", , \"john.m.ennis@aigora.com\", role = c(\"aut\", \"cre\")),\nperson(\"Aigora\", role = c(\"cph\", \"fnd\"))\n)",
  "Description": "Finds product portfolios that maximize TURF (total\nunduplicated reach and frequency) with integer linear\nprogramming, following Serra (2013)\n<doi:10.1016/j.foodqual.2012.10.001>. The maximum reach problem\nis the maximal covering location problem of Church and ReVelle\n(1974) <doi:10.1007/BF01942293>. The package solves it as an\ninteger linear program, so it finds exact optima without\nenumerating every portfolio. Ties on reach are broken by\nfrequency and then by the harmonic mean of the individual\nproduct reaches. The package also finds the smallest portfolio\nthat reaches every reachable respondent. For related work on\nTURF for large data sets, see Ennis, Fayle, and Ennis (2012)\n<doi:10.1016/j.foodqual.2011.06.004>.",
  "License": "MIT + file LICENSE",
  "Copyright": "See the file COPYRIGHTS.",
  "URL": "https://github.com/aigorahub/turfLP",
  "BugReports": "https://github.com/aigorahub/turfLP/issues",
  "Config/testthat/edition": "3",
  "Encoding": "UTF-8",
  "Language": "en-US",
  "Roxygen": "list(markdown = TRUE)",
  "Config/roxygen2/version": "8.1.0",
  "LazyData": "true",
  "Config/pak/sysreqs": "cmake pkg-config",
  "Repository": "https://aigorahub.r-universe.dev",
  "Date/Publication": "2026-10-15 00:04:30 UTC",
  "RemoteUrl": "https://github.com/aigorahub/turflp",
  "RemoteRef": "HEAD",
  "RemoteSha": "06afb81c7c1d9cca7c97137caffe2b3e4d23588e",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-10-15 00:42:19 UTC",
    "User": "root"
  },
  "Author": "John Ennis [aut, cre],\nAigora [cph, fnd]",
  "Maintainer": "John Ennis <john.m.ennis@aigora.com>",
  "_user": "aigorahub",
  "_type": "src",
  "_file": "turfLP_0.2.0.tar.gz",
  "_fileid": "https://r2.ropensci.org/55dfa9a54c4705abf187fe3b7b87628957c5ae8469519f494da5a8c82a6b01bb",
  "_filesize": 217296,
  "_sha256": "55dfa9a54c4705abf187fe3b7b87628957c5ae8469519f494da5a8c82a6b01bb",
  "_expires": "2027-01-23T00:47:01.000Z",
  "_created": "2026-10-15T00:42:19.000Z",
  "_published": "2026-10-15T00:47:03.345Z",
  "_buildurl": "https://github.com/r-universe/aigorahub/actions/runs/38661264584",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_jobs": [
    {
      "job": 116183812749,
      "time": 242,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11939750530"
    },
    {
      "job": 116183812705,
      "time": 236,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11939032690"
    },
    {
      "job": 116183812767,
      "time": 148,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "11938319925"
    },
    {
      "job": 116183812828,
      "time": 176,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11938923065"
    },
    {
      "job": 116182902025,
      "time": 177,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11938888824"
    },
    {
      "job": 116183812667,
      "time": 105,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "11939455966"
    },
    {
      "job": 116183812790,
      "time": 166,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11938434480"
    },
    {
      "job": 116183812843,
      "time": 109,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "11938553949"
    },
    {
      "job": 116183812900,
      "time": 158,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11938344712"
    }
  ],
  "_upstream": "https://github.com/aigorahub/turflp",
  "_commit": {
    "id": "06afb81c7c1d9cca7c97137caffe2b3e4d23588e",
    "author": "John Ennis <51167615+john-aigora@users.noreply.github.com>",
    "committer": "GitHub <noreply@github.com>",
    "message": "Merge pull request #15 from aigorahub/feat/dashboard-item-colors\n\nDashboard: a distinct color for each product in the columns chart",
    "time": 1792022670
  },
  "_maintainer": {
    "name": "John Ennis",
    "email": "john.m.ennis@aigora.com",
    "login": "john-aigora",
    "description": "We help sensory and consumer scientists teams lead in the age of artificial intelligence.",
    "uuid": 51167615
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 3.5.0",
      "role": "Depends"
    },
    {
      "package": "highs",
      "version": ">= 1.14.0",
      "role": "Imports"
    },
    {
      "package": "Matrix",
      "role": "Imports"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    }
  ],
  "_owner": "aigorahub",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-39",
      "n": 7
    },
    {
      "week": "2026-40",
      "n": 1
    },
    {
      "week": "2026-42",
      "n": 5
    }
  ],
  "_tags": [
    {
      "name": "v0.2.0",
      "date": "2026-09-27"
    }
  ],
  "_stars": 5,
  "_contributors": [
    {
      "user": "john-aigora",
      "count": 61,
      "uuid": 51167615
    }
  ],
  "_userbio": {
    "uuid": 51167669,
    "type": "organization",
    "name": "Aigora",
    "followers": 14
  },
  "_downloads": {
    "count": 108,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/turfLP"
  },
  "_devurl": "https://github.com/aigorahub/turflp",
  "_searchresults": 2,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "extra/turfLP.html",
    "LICENSE"
  ],
  "_homeurl": "https://github.com/aigorahub/turflp",
  "_realowner": "aigorahub",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.2.0",
      "date": "2026-10-07"
    }
  ],
  "_exports": [
    "turf",
    "turf_min_cover",
    "turf_simulate",
    "turf_sizes"
  ],
  "_datasets": [
    {
      "name": "cafe",
      "title": "Simulated cafe drink data",
      "object": "cafe",
      "class": [
        "data.frame"
      ],
      "fields": [
        "Espresso",
        "Americano",
        "Drip coffee",
        "Cold brew",
        "Cappuccino",
        "Latte",
        "Flat white",
        "Cortado",
        "Mocha",
        "Caramel macchiato",
        "Vanilla latte",
        "Iced latte",
        "Pumpkin spice latte",
        "Frappe",
        "Affogato",
        "Black tea",
        "Earl Grey",
        "Green tea",
        "Chamomile",
        "Peppermint tea",
        "Chai latte",
        "Matcha latte",
        "London fog",
        "Iced tea",
        "Hot chocolate",
        "White hot chocolate",
        "Steamed milk",
        "Strawberry smoothie",
        "Mango smoothie",
        "Green smoothie",
        "Acai bowl smoothie",
        "Protein shake",
        "Fresh orange juice",
        "Lemonade",
        "Sparkling water",
        "Kombucha",
        "Ginger shot",
        "Italian soda",
        "Golden milk",
        "Oat milk latte"
      ],
      "rows": 2500,
      "table": true,
      "tojson": true
    },
    {
      "name": "chips",
      "title": "Simulated potato chip purchase intent data",
      "object": "chips",
      "class": [
        "data.frame"
      ],
      "fields": [
        "Sea salt",
        "Salt and vinegar",
        "Barbecue",
        "Sour cream and onion",
        "Cheddar",
        "Jalapeno",
        "Dill pickle",
        "Honey mustard",
        "Ranch",
        "Sweet chili",
        "Truffle",
        "Wasabi",
        "Lime",
        "Buffalo",
        "Black pepper",
        "Balsamic",
        "Garlic parmesan",
        "Chipotle",
        "Smoked paprika",
        "Ketchup",
        "Kimchi",
        "Masala",
        "Everything bagel",
        "Hot honey"
      ],
      "rows": 600,
      "table": true,
      "tojson": true
    },
    {
      "name": "coffee",
      "title": "Black coffee liking data",
      "object": "coffee",
      "class": [
        "data.frame"
      ],
      "fields": [
        "87-1.0-16",
        "87-1.0-20",
        "87-1.0-24",
        "87-1.25-16",
        "87-1.25-20",
        "87-1.25-24",
        "87-1.5-16",
        "87-1.5-20",
        "87-1.5-24",
        "90-1.0-16",
        "90-1.0-20",
        "90-1.0-24",
        "90-1.25-16",
        "90-1.25-20",
        "90-1.25-24",
        "90-1.5-16",
        "90-1.5-20",
        "90-1.5-24",
        "93-1.0-16",
        "93-1.0-20",
        "93-1.0-24",
        "93-1.25-16",
        "93-1.25-20",
        "93-1.25-24",
        "93-1.5-16",
        "93-1.5-20",
        "93-1.5-24"
      ],
      "rows": 118,
      "table": true,
      "tojson": true
    },
    {
      "name": "ham",
      "title": "Cured ham liking data",
      "object": "ham",
      "class": [
        "data.frame"
      ],
      "fields": [
        "N1",
        "N2",
        "N3",
        "N4",
        "S1",
        "S2",
        "S3",
        "S4"
      ],
      "rows": 127,
      "table": true,
      "tojson": true
    },
    {
      "name": "icecream",
      "title": "Simulated ice cream liking data",
      "object": "icecream",
      "class": [
        "data.frame"
      ],
      "fields": [
        "Vanilla",
        "Chocolate",
        "Strawberry",
        "Mint chip",
        "Cookie dough",
        "Salted caramel",
        "Pistachio",
        "Coffee",
        "Mango sorbet",
        "Rocky road"
      ],
      "rows": 120,
      "table": true,
      "tojson": true
    },
    {
      "name": "lunchbags",
      "title": "Lunch bag purchase data",
      "object": "lunchbags",
      "class": [
        "data.frame"
      ],
      "fields": [
        "Red retrospot",
        "Woodland",
        "Black skull",
        "Cars blue",
        "Spaceboy design",
        "Suki design",
        "Pink polkadot",
        "Dolly girl design",
        "Apple design",
        "Alphabet design",
        "Vintage leaf design",
        "Vintage doily",
        "Paisley park",
        "Red vintage doily"
      ],
      "rows": 1175,
      "table": true,
      "tojson": true
    },
    {
      "name": "pies",
      "title": "Thanksgiving pie data",
      "object": "pies",
      "class": [
        "data.frame"
      ],
      "fields": [
        "Apple",
        "Buttermilk",
        "Cherry",
        "Chocolate",
        "Coconut cream",
        "Key lime",
        "Peach",
        "Pecan",
        "Pumpkin",
        "Sweet potato"
      ],
      "rows": 980,
      "table": true,
      "tojson": true
    }
  ],
  "_help": [
    {
      "page": "cafe",
      "title": "Simulated cafe drink data",
      "topics": [
        "cafe"
      ]
    },
    {
      "page": "chips",
      "title": "Simulated potato chip purchase intent data",
      "topics": [
        "chips"
      ]
    },
    {
      "page": "coffee",
      "title": "Black coffee liking data",
      "topics": [
        "coffee"
      ]
    },
    {
      "page": "ham",
      "title": "Cured ham liking data",
      "topics": [
        "ham"
      ]
    },
    {
      "page": "icecream",
      "title": "Simulated ice cream liking data",
      "topics": [
        "icecream"
      ]
    },
    {
      "page": "lunchbags",
      "title": "Lunch bag purchase data",
      "topics": [
        "lunchbags"
      ]
    },
    {
      "page": "pies",
      "title": "Thanksgiving pie data",
      "topics": [
        "pies"
      ]
    },
    {
      "page": "turf",
      "title": "Find the product portfolio with maximum reach",
      "topics": [
        "turf"
      ]
    },
    {
      "page": "turf_min_cover",
      "title": "Find the smallest portfolio that reaches every reachable respondent",
      "topics": [
        "turf_min_cover"
      ]
    },
    {
      "page": "turf_simulate",
      "title": "Simulate a reach matrix",
      "topics": [
        "turf_simulate"
      ]
    },
    {
      "page": "turf_sizes",
      "title": "Find the best portfolio for each of several sizes",
      "topics": [
        "turf_sizes"
      ]
    }
  ],
  "_readme": "https://github.com/aigorahub/turflp/raw/HEAD/README.md",
  "_rundeps": [
    "backports",
    "checkmate",
    "highs",
    "lattice",
    "Matrix",
    "Rcpp"
  ],
  "_score": 3.8750612633917,
  "_indexed": true,
  "_nocasepkg": "turflp",
  "_universes": [
    "aigorahub",
    "john-aigora"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.2.0",
      "date": "2026-10-15T00:45:04.000Z",
      "distro": "resolute",
      "commit": "06afb81c7c1d9cca7c97137caffe2b3e4d23588e",
      "fileid": "https://r2.ropensci.org/f90066cdbb443f026ad4ef2cded677033a1180c1f0c3939ada11e7b1a1de705b",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/aigorahub/actions/runs/38661264584"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.2.0",
      "date": "2026-10-15T00:45:00.000Z",
      "distro": "resolute",
      "commit": "06afb81c7c1d9cca7c97137caffe2b3e4d23588e",
      "fileid": "https://r2.ropensci.org/48b1780bad3c59b39ed78cd03be70ca96b5ca9f8727a9f61b8fed23630f384d5",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/aigorahub/actions/runs/38661264584"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.2.0",
      "date": "2026-10-15T00:43:49.000Z",
      "commit": "06afb81c7c1d9cca7c97137caffe2b3e4d23588e",
      "fileid": "https://r2.ropensci.org/cf95d718c32e804bb5937683de40f561648f659f056ec6e6ca01858bd6ca2587",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/aigorahub/actions/runs/38661264584"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.2.0",
      "date": "2026-10-15T00:44:04.000Z",
      "commit": "06afb81c7c1d9cca7c97137caffe2b3e4d23588e",
      "fileid": "https://r2.ropensci.org/85048f3acadad91184c57a7235ddcd26330327f4fcce6bea19cfd1fee21d3fcd",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/aigorahub/actions/runs/38661264584"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.2.0",
      "date": "2026-10-15T00:44:21.000Z",
      "commit": "06afb81c7c1d9cca7c97137caffe2b3e4d23588e",
      "fileid": "https://r2.ropensci.org/55d0f6c7a665fb7d659021b411c3bba17ae14c11f894f90f50fbe6426ef63d5e",
      "status": "success",
      "buildurl": "https://github.com/r-universe/aigorahub/actions/runs/38661264584"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.2.0",
      "date": "2026-10-15T00:43:22.000Z",
      "commit": "06afb81c7c1d9cca7c97137caffe2b3e4d23588e",
      "fileid": "https://r2.ropensci.org/52c27af9e6e7c8fdb25fc3c15cb7a7a8563439fba333216ae32314e825a3840f",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/aigorahub/actions/runs/38661264584"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.2.0",
      "date": "2026-10-15T00:43:17.000Z",
      "commit": "06afb81c7c1d9cca7c97137caffe2b3e4d23588e",
      "fileid": "https://r2.ropensci.org/b2f1752580e942f757b54a942eed808a3568f3c00b4fa4185750439c27f1506a",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/aigorahub/actions/runs/38661264584"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.2.0",
      "date": "2026-10-15T00:43:28.000Z",
      "commit": "06afb81c7c1d9cca7c97137caffe2b3e4d23588e",
      "fileid": "https://r2.ropensci.org/3fc7b40d2d16a831543de8d7c0ec5a7d362d47a991c2eb970635cbf227c91a26",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/aigorahub/actions/runs/38661264584"
    }
  ]
}