Docs


Creating a submission

The two ways to start a job, what each form does, and worked examples.

Last updated June 3, 2026

Go to the live page Start a new submission

There are two paths to creating a submission from the website. Both end with a queued run; the difference is how much you fill in yourself.

Quick submissions

Quick submissions are short forms preset for common problems. You only fill in the values that matter for that problem; everything else uses sensible defaults. Pick one when:

  • The shape of your problem matches one of the cards.
  • You want to try Vilvik out without writing any code.
  • You want a fast result and you do not need full control over every parameter.

The cards available today are grouped by problem family.

Classic combinatorial problems

  • Binary subset sum. Pick a subset of integers whose sum is closest to a target you choose.
  • Knapsack. Choose items with values and weights to maximise total value while staying within a capacity. Supports a single capacity or several capacities at once (weight and volume, budget and headcount, and so on) through the multi-dimensional knapsack variant.
  • Bin packing. Pack items of given sizes into the fewest possible fixed-capacity bins.
  • Travelling salesman, with a demo data set. Plan the shortest tour through a built-in set of cities, visiting each one once and returning home.
  • Travelling salesman, with custom cities. Same problem, but with the cities you provide.
  • Timetable scheduling. Assign tasks to time slots, and optionally to resources, so no two tasks clash on a chosen attribute.

Linear and continuous problems

  • Linear single-objective. Find parameters that best satisfy a linear equation with predefined inputs and a target.
  • Linear multi-objective. Optimise shared parameters across several linear equations at once. Uses the NSGA-II algorithm by default, which works well for two or three objectives.
  • Linear many-objective (NSGA-III). The same problem solved with the NSGA-III algorithm by default, which scales better once you have four or more objectives.
  • 2D data clustering. Group 2D points into a fixed number of clusters by minimising intra-cluster distances.

Machine-learning tuning

  • Sklearn random forest hyperparameter search. Tune scikit-learn Random Forest hyperparameters to lift accuracy on a dataset you provide.
  • XGBoost hyperparameter search. Tune XGBoost gradient-boosted tree hyperparameters (number of estimators, depth, learning rate, subsampling, and more) to lift accuracy on a dataset you provide.
  • SVM hyperparameter search. Tune scikit-learn Support Vector Machine settings (C and gamma) to lift accuracy on a dataset you provide. The kernel is chosen on the form.
  • KNN hyperparameter search. Tune scikit-learn K-Nearest Neighbors settings (number of neighbors and leaf size) to lift accuracy on a dataset you provide. The weighting scheme is chosen on the form.
  • Logistic regression hyperparameter search. Tune scikit-learn Logistic Regression settings (C and iterations) to lift accuracy on a dataset you provide. The penalty and solver are chosen on the form.
  • Keras neural network training. Train a Keras multi-class classifier on your labelled dataset.
  • Keras XOR training. Train a small Keras network to learn the XOR decision boundary.
  • Keras neural network hyperparameter search. Tune Keras neural network hyperparameters against your dataset.
  • PyTorch neural network training. Train a PyTorch multi-class classifier on your labelled dataset.
  • PyTorch neural network hyperparameter search. Tune PyTorch neural network hyperparameters against your dataset.

Open them from the quick submissions menu.

Full new submission

The full form lets you control every parameter. Pick this when:

  • Your problem does not fit any of the quick cards.
  • You want to provide your own fitness function or callbacks.
  • You need to upload a code file along with the parameters.

Open it from the new submission page. You can paste code into the editor. Your code runs in a secure environment.

Libraries you can import in your code

These libraries are already available, so you can import them directly in your fitness function and callbacks. You do not install anything yourself.

LibraryVersionImport as
NumPy 2.4.6 import numpy
scikit-learn 1.9.0 import sklearn
XGBoost 3.2.0 import xgboost
TensorFlow 2.21.0 import tensorflow
PyTorch 2.11.0+cpu import torch

Their dependencies (such as scipy and joblib) can be imported too. Verified Jun 3, 2026.

If a library is not listed, it is not available, so import only from this set and their dependencies.

What you give us

Across both paths, the form collects:

  • A short name for the submission.
  • An optional description.
  • The number of generations, the population size, and the gene configuration.
  • The genetic operators (selection type, crossover type, mutation type, and their associated values).
  • A fitness function, plus any optional callback functions.

You will see an i icon next to every field that opens a short explanation. Read it if you are unsure.

For the full list of parameters and what each one controls, see Submission parameters.

Worked example: a quick submission

The simplest quick form is Binary subset sum. Pick a target number and a set of integers; the algorithm searches for a subset whose sum is closest to the target.

  1. Open Binary subset sum parameters.
  2. Enter the target sum and the set of numbers (comma-separated).
  3. Leave the rest at the defaults and click Run.
  4. The submission is queued. Watch the progress streamed live to your browser; you can close the tab and come back later.
  5. When the run finishes, you land on the result page (or you can open it from Your submissions list).

Worked example: a full new submission

Use this path when you need a custom fitness function.

  1. Open New submission.
  2. Give it a name (e.g. "Sphere minimization, 50 genes").
  3. Set the basics: number of generations, population size, number of genes, gene type. (For details, see Submission parameters.)
  4. Paste a fitness function. If you do not have one ready, click the Use a template icon next to the field and pick a starting point. See below.
  5. Optionally pick selection, crossover, mutation parameters; everything not set uses safe defaults.
  6. Click Run.

Use a template: Fitness functions and callbacks

Two modals on the new-submission form help you avoid writing boilerplate.

Fitness function templates

Open the Fitness Function Templates modal next to the fitness-function field. Pick one of:

  • Sum of Genes, maximize the sum of gene values.
  • Minimization (Sum of Squares), minimize the sum of squared gene values (a sphere objective).
  • Match Target Value, fitness rises as the candidate's sum approaches a target you set.
  • Linear Target (Weighted Sum), fitness based on a weighted linear combination of genes.
  • Regression (Negative MSE). For regression problems; returns the negative mean squared error.
  • Constrained (Penalty). A starting point for problems where some candidates should be penalized.

Once you pick a template, the code appears in the modal's editor. Adapt it to your problem (the comments in each template point at the lines you will most often change) and click Apply Template. The chosen function lands in the fitness-function field on the main form.

Callback templates

Open the Callback Function Templates modal next to the callback field. The available templates currently include:

  • Trace Execution, logs the algorithm's progress at each callback hook, useful when you want to inspect intermediate state.

Apply works the same as above. Pick, adapt, then Apply Template.

Templates are starting points, not drop-in solutions. Read the code; it almost always needs adapting to your specific problem.

What happens after you submit

sequenceDiagram participant You as You participant Web as Vilvik web participant Q as Job queue participant W as Worker participant DB as Results participant Mail as Email Note over You,Web: Submit phase You->>Web: Submit parameters Web->>Web: Validate, check your tier Web->>Q: Enqueue Web-->>You: Submission id, live status Note over Q,W: Run phase (you can close the tab) Q->>W: Dispatch W->>W: Run in secure environment W-->>You: Live progress W->>DB: Save best solution, charts, logs Note over W,You: Finish phase W->>Mail: Send "finished" email Mail-->>You: Notification You->>Web: Open the result Web->>DB: Fetch DB-->>You: Result page, share links, downloads

In words:

  1. Vilvik validates the parameters.
  2. The submission is queued.
  3. A worker picks it up and runs it in a secure environment.
  4. While it runs, the website streams progress to your browser in real time. You can close the tab and come back. You will get an email when the run finishes.
  5. Once it finishes, you have a result you can read, share, and continue.

After running, your submission appears on Your submissions list. The result page is documented at Reading a result. The wider picture is in How Vilvik works.

Thanks for the feedback!