Creating a submission
The two ways to start a job, what each form does, and worked examples.
Go to the live page Start a new submissionThere 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.
| Library | Version | Import 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.
- Open Binary subset sum parameters.
- Enter the target sum and the set of numbers (comma-separated).
- Leave the rest at the defaults and click Run.
- The submission is queued. Watch the progress streamed live to your browser; you can close the tab and come back later.
- 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.
- Open New submission.
- Give it a name (e.g. "Sphere minimization, 50 genes").
- Set the basics: number of generations, population size, number of genes, gene type. (For details, see Submission parameters.)
- 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.
- Optionally pick selection, crossover, mutation parameters; everything not set uses safe defaults.
- 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
sphereobjective). - 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¶
In words:
- Vilvik validates the parameters.
- The submission is queued.
- A worker picks it up and runs it in a secure environment.
- 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.
- 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.