- virtual, morning hours Nashville, Tennessee time, as I am based in Berlin, 2 - 3 hours
- English
- Applied Mixed Integer Linear Programming for Beginners
- Discrete optimization, operations research
# if this produced a valid tree | |
quote(a <= b <= c) | |
# then we could do | |
add_constraint(lower[i] <= X[i] <= upper[i], i = 1:n) | |
# instead of | |
add_constraint(X[i] <= upper[i], i = 1:n) | |
add_constraint(lower[i] <= X[i], i = 1:n) |
# let's construct some byte code | |
# x <- 42 | |
# y <- x + 42 | |
bcode <- .Internal(mkCode( | |
c( | |
12L, # this is an identifier which byte-code version you use (I think) | |
# each line is an operator, the first item is the operator, followed by operands (aka. arguments) | |
16L, 0L, # Operator "LDCONST" (load constant) from the index 1 in the constant pool | |
# now value 1 is on the stack | |
22L, 1L, # Operator "SETVAR" (set variable) assign the last value on the stack to the name at index 2 |
# License GPL 2 | |
library(armacmp) | |
# from the R docs of optim | |
fr <- function(x) { ## Rosenbrock Banana function | |
x1 <- x[1] | |
x2 <- x[2] | |
return(100 * (x2 - x1 * x1)^2 + (1 - x1)^2) | |
} | |
grr <- function(x = type_colvec()) { ## Gradient of 'fr' |
# Let's build this expression by hand | |
# val <- 0 | |
# if (this) { | |
# val <- 1 | |
# } | |
constant_pool <- list( | |
NULL, | |
as.symbol("val"), # we need a symbol val | |
as.symbol("this"), # we also need a symbol this, | |
0, 1 # next we need the two values 0 and 1 |
input <- readLines("path/to/input") | |
input <- as.integer(input) | |
library(ompr) | |
library(ompr.roi) | |
library(ROI.plugin.glpk) | |
library(tidyverse) | |
n <- length(input) | |
MIPModel() %>% | |
# a variable for each input number |
library(torch)
optim_torch <- function(params, fn, method, iterations = 1000, ...) {
optimizer <- do.call(paste0("optim_", method), list(params, ...))
for (i in seq_len(iterations)) {
obj_val <- fn(params)
if (i %% 100 == 0) message(as.numeric(obj_val))
optimizer$zero_grad()
obj_val$backward()
optimizer$step()
# investigate your project or package dependencies | |
# using the {tidyverse}, {renv} and {tools}. | |
# since this code is wrapped in {reprex}, the below library calls | |
# will be identified as dependent packages although only {tidyverse}, {renv} | |
# and {tools} are actually used. | |
library(tidyverse, warn.conflicts = FALSE) # ironically the most deps :) | |
# add some more dependencies as an example | |
suppressPackageStartupMessages(library(caret, warn.conflicts = FALSE)) | |
suppressPackageStartupMessages(library(tidymodels, warn.conflicts = FALSE)) |
Inspired by this article
# remotes::install_github("dirkschumacher/logician")
# a role based access control
library(logician)
role_database <- logician_database(
role(user),
library(logician) | |
# Towers of Hanoi | |
# https://en.wikipedia.org/wiki/Tower_of_Hanoi | |
# Original Prolog Implementation: | |
# https://www.cs.toronto.edu/~sheila/384/w11/simple-prolog-examples.html | |
database <- logician_database( | |
# no `is` operator yet, so we have to define all valid numbers | |
num(1),num(2),num(3),num(4),num(5), | |
num(6),num(7),num(8),num(9), |