PowerSolver Docs
Back to Wizard

PowerSolver Wizard User Guide

This guide walks you through every screen of the Planning Wizard with detailed explanations, tips, and troubleshooting.


Overview

The Planning Wizard guides you through 7 steps to define and solve your planning problem:

┌─────────────────────────────────────────────────────────────────────────┐
│  Step 1    Step 2    Step 3    Step 4    Step 5    Step 6    Step 7    │
│  Define    List      Define    Define    Pinned    Solver    Review    │
│  Problem   Entities  Values    Rules     Assign    Settings  & Solve   │
└─────────────────────────────────────────────────────────────────────────┘
Step Title Purpose Required?
1Define Your ProblemDescribe what you're solving✅ Yes
2What Needs Scheduling?Enter your entities (tasks, shifts, etc.)✅ Yes
3Who or What Can Do It?Enter your values (employees, rooms, etc.)✅ Yes
4What Are Your Rules?Define constraints✅ Yes
5Any Pre-Decisions?Lock specific assignments❌ Optional
6How Long Should We Search?Configure solver timeout✅ Yes
7Review & Validate JSONFinal check and solve✅ Yes

Getting Started

Login Screen

Screenshot: Login Screen
Field Description
UsernameYour PowerSolver username
PasswordYour password

After logging in, you'll see the main dashboard.

Main Dashboard

Screenshot: Main Dashboard

The dashboard shows:

Element Description
Open Wizard buttonStart a new problem or continue editing
JSON Preview panelShows your current problem configuration
AI Configuration sidebarSelect AI provider and model
File Operations sidebarSave/load problem files

Sidebar Controls

Screenshot: Sidebar
Control What It Does
File NameName your problem file
AI Provider dropdownSelect DeepSeek, Groq, etc.
AI Model dropdownSelect the AI model
API Key StatusShows if AI is configured
Dark Mode toggleSwitch light/dark theme

Step 1: Define Your Problem

Screenshot: Step 1 Modal

Purpose

Tell PowerSolver what kind of problem you're solving. This step configures the wizard for your specific use case.

Fields

Field Required Description Example
Problem Statement✅ Yes1-2 sentences describing your problem"I need to assign 20 development tasks to 5 developers over a 2-week sprint"
Success Criteria✅ YesWhat makes a solution "good""All tasks assigned, skills matched, workload balanced, deadlines met"
Problem Type✅ YesSelect from dropdownTask Assignment

Problem Type Options

Type Icon Best For
Vehicle Routing🚚Delivery routes, field service — Uses LIST variables
Employee Rostering📅Staff scheduling, shift planning — Uses BASIC variables
Task Assignment📋Project tasks, work orders — Uses BASIC variables
Maintenance Scheduling🔧Equipment maintenance — Uses BASIC variables
School Timetabling🎓Class schedules — Uses BASIC variables
Cloud Optimization☁️Server/resource allocation — Uses BASIC variables
Conference Scheduling🎤Event sessions — Uses BASIC variables
Job-Shop Scheduling⚙️Manufacturing jobs — Uses BASIC variables
Generic (Custom)🔧Custom problems — Configure manually

Problem Type Info Card

When you select a problem type, an info card appears showing:

  • Description of the problem type
  • Examples of typical use cases
  • Entity label (what you'll call your entities)
  • Value label (what you'll call your values)

Buttons

Button Action
CancelClose wizard without saving
SaveSave current step and stay
NextSave and proceed to Step 2

Tips

  • Be specific in your problem statement — the AI advisor uses this to give better suggestions
  • If unsure which problem type to choose, start with "Generic (Custom)"
  • Your problem statement and success criteria are saved but don't affect the solver directly

Common Issues

Issue Cause Solution
"Please fill in all required fields" warningMissing fieldFill in all three fields
Wrong problem type selectedMisunderstandingReview problem type descriptions

Step 2: What Needs Scheduling? (Entities)

Screenshot: Step 2 Modal

Purpose

Enter the items that need to be assigned or scheduled. These are your planning entities.

Understanding Entities

Problem Type Entities Are... Examples
Task AssignmentTasks to complete"Design homepage", "Fix bug #123"
Employee RosteringNurses/employees to schedule"Sarah Mitchell", "James Chen"
School TimetablingLessons to schedule"Math 101", "Physics Lab"
Maintenance SchedulingJobs to perform"Motor inspection", "Oil change"
Vehicle RoutingVehicles to route"Truck 1", "Van 2"

The Entity Cards Interface

Screenshot: Entity Cards

Each entity appears as a card with:

  • ID (required) — Unique identifier
  • Name (required) — Human-readable description
  • Properties — Additional fields based on problem type

Adding Entities

Method 1: Add One at a Time

  1. Click "Add Item" button
  2. Fill in the card fields
  3. Click ✓ to save or ✗ to cancel

Method 2: Import from File

  1. Click "Import from File" button
  2. Select Excel (.xlsx), CSV, or JSON file
  3. Map your columns to PowerSolver fields
  4. Review preview and click "Import Items"

Entity Properties

Property Used By Description Format
IDAllUnique identifierText (e.g., "TASK-001")
NameAllHuman-readable nameText
Durationcost, timeHow long it takesNumber (hours)
SkillsskillRequired skillsComma-separated (e.g., "java, react")
PriorityDisplayImportance levelhigh, medium, low
DeadlinetimeMust complete byDateTime
Start TimetimeEarliest startDateTime
End TimetimeLatest endDateTime

Custom Properties

In addition to standard properties, PowerSolver supports custom properties for domain-specific data.

Automatic Detection: When you load a JSON file, the wizard automatically detects custom properties and creates input fields for them.

How Custom Properties Work

  1. Detection: Custom properties in your JSON are auto-detected
  2. Display: New fields are created for each custom property
  3. Editing: Edit custom property values just like standard fields
  4. Preservation: Custom properties are saved and exported correctly

Examples by Domain

Domain Custom Entity Properties Used For
Cloud ComputingrequiredResourceType, cpuRequired, memoryRequiredResource matching
ManufacturingmachineType, toolingRequired, batchSizeMachine assignment
HealthcarepatientType, certificationRequiredStaff matching
LogisticspackageType, temperatureControlVehicle assignment
Important: Custom properties only affect the solver if you create constraints that reference them in Step 4.

Card Actions

Icon Action
✏️Edit card
🗑️Delete card
↕️Drag to reorder
🔒Toggle pinned status

Pinned Assignments (Preview)

Check the 🔒 Pinned checkbox and select a value in "Pre-Assign To" to lock an assignment. The solver will not change pinned assignments.

Common Issues

Issue Cause Solution
"Please add at least one item"No entitiesAdd at least one entity
Duplicate ID warningSame ID used twiceUse unique IDs
Import failsWrong file formatUse .xlsx, .csv, or .json
Missing required columnColumn mapping wrongRe-map columns in import dialog

Step 3: Who or What Can Do It? (Values)

Screenshot: Step 3 Modal

Purpose

Enter the resources that entities can be assigned to. These are your planning values.

Understanding Values and Variables

PowerSolver supports 1-4 value ranges (planning variables):

Variables Example Value Ranges
1 variableDevelopers
2 variablesDevelopers + Time Slots
3 variablesDevelopers + Time Slots + Rooms
4 variablesDevelopers + Time Slots + Rooms + Equipment

Each value range appears as a separate tab or section.

Value Properties

Property Used By Description Format
IDAllUnique identifierText
NameAllHuman-readable nameText
SkillsskillWhat this resource can doComma-separated
CapacitycapacityMaximum workloadNumber
AvailabilitytimeWhen availableDateTime range
Hourly RatecostCost per hourNumber
Start TimetimeAvailable fromDateTime
End TimetimeAvailable untilDateTime

Custom Properties on Values

Values also support custom properties that define their capabilities:

Domain Custom Value Properties Purpose
Cloud ComputingresourceTypes, cpuCores, memoryGB, gpuCountServer capabilities
ManufacturingmachineCapabilities, toolsAvailableMachine specs
Healthcarecertifications, specializationsStaff qualifications
LogisticsvehicleCapacity, hasRefrigerationVehicle capabilities

Matching Entity and Value Properties

Custom properties create a matching relationship:

Entity (Workload):                    Value (Server):
├── requiredResourceType: "gpu"  ←→  resourceTypes: ["gpu", "cpu"]
├── cpuRequired: 16              ←→  cpuCores: 32
└── memoryRequired: 64           ←→  memoryGB: 128
Important: Property names must exactly match what you configure in Step 4 constraints.

Tips

  • Ensure value skills cover all entity requirements
  • Set realistic capacity values
  • For time slots, ensure you have enough to cover all entities

Common Issues

Issue Cause Solution
"Please add at least one resource"No valuesAdd values to each variable
Skill mismatch laterValues lack required skillsAdd skills that entities need
Not enough valuesToo few optionsAdd more values

Step 4: What Are Your Rules? (Constraints)

Screenshot: Step 4 Modal

Purpose

Define the rules your solution must follow. These are your constraints.

Constraint Levels

Tab Level Color Meaning
Hard ConstraintsHard🔴 RedMust be satisfied — violations make solution invalid
Medium ConstraintsMedium🟡 YellowShould be satisfied — significant penalty
Soft ConstraintsSoft🟢 GreenNice to have — minor penalty

Adding Constraints

  1. Click the appropriate tab (Hard/Medium/Soft)
  2. Click "Add Constraint"
  3. Fill in the constraint form:
Field Description
NameDescriptive name (e.g., "Skill Match")
RuleSelect constraint rule type
Target VariableWhich variable this applies to
WeightHow important (higher = more important)
DescriptionOptional explanation

Available Constraint Rules

Rule What It Does Required Properties
unassignedPenalize unassigned entitiesNone
skillMatch required skillsEntity: skills, Value: skills
capacityDon't exceed capacityValue: capacity
costMinimize total costEntity: duration, Value: hourlyRate
balanceDistribute workload evenlyNone
timeRespect time windowsEntity: deadline, Value: availability
no_conflictPrevent overlapping assignmentsUses timeslot variable
availabilityRespect availabilityValue: availability
preferenceHonor preferencesEntity: preferred[Variable]

Configuring Constraints with Custom Properties

When using custom properties (defined in Steps 2 and 3), you need to tell the constraint which property names to use:

Skill Constraint with Custom Properties

For the skill rule, expand the constraint card to see additional fields:

Field Description Example
Entity Skills PropertyProperty name on entity containing required skillsrequiredResourceType
Value Skills PropertyProperty name on value containing available skillsresourceTypes

Example Configuration

Name: Resource Type Match
Rule: skill
Target Variable: server
Entity Skills Property: requiredResourceType
Value Skills Property: resourceTypes
Weight: 10

This constraint ensures entities with requiredResourceType: "gpu" are only assigned to values where resourceTypes contains "gpu".

Constraint Property Reference

Constraint Entity Property Field Value Property Field
skillentitySkillsPropertyvalueSkillsProperty
capacitydemandPropertycapacityProperty
costdurationPropertyrateProperty
distanceentityLocationPropertyvalueLocationProperty
preferenceentityPreferencePropertyvaluePreferenceProperty
Important: Property names are case-sensitive and must exactly match your data.

Weight Guidelines

Weight When to Use
1-10Low priority within level
10-100Normal priority
100-1000High priority
1000+Critical (consider making hard)

Tips

  • Start with hard constraints (must-haves)
  • Add unassigned constraint to ensure all entities get assigned
  • Use weights to prioritize within the same level
  • Test with fewer constraints first, then add more

Common Issues

Issue Cause Solution
"Please add at least one rule"No constraintsAdd at least one constraint
Missing targetVariableId errorConstraint not configuredSelect target variable
Solution always infeasibleToo many hard constraintsConvert some to medium/soft

Step 5: Any Pre-Decisions? (Pinned Assignments)

Screenshot: Step 5 Modal

Purpose

Review and manage pinned assignments — entities that are already assigned and should not be changed by the solver.

When to Use Pinning

Scenario Example
Confirmed assignments"Sarah is already confirmed for Monday shift"
Partial re-optimization"Keep existing assignments, just fill gaps"
Specific requirements"Task X must go to Alice"
Testing"Lock this assignment and see what happens"

How Pinning Works

  1. In Step 2: Check the 🔒 Pinned checkbox on an entity card
  2. In Step 2: Select the pre-assigned value
  3. In Step 5: Review all pinned assignments

The solver will never change a pinned assignment.

Tips

  • Only pin what's truly fixed
  • Too many pins limit solver flexibility
  • Check that pins don't conflict with hard constraints

Common Issues

Issue Cause Solution
Pinned assignment causes infeasibilityPin conflicts with constraintUnpin or adjust constraints
Can't find entity to pinNot marked in Step 2Go back to Step 2 and mark as pinned

Step 6: How Long Should We Search? (Solver Settings)

Screenshot: Step 6 Modal

Purpose

Configure how long the solver should run and other optimization settings.

Time Presets

Preset Icon Timeout Best For
Quick30 secTesting, small problems
Standard⏱️120 secMost problems
Thorough🔍300 secComplex problems, best results
Custom⚙️You chooseSpecific requirements

Problem Size Summary

The wizard shows a summary of your problem:

Entities: 20 tasks
Values: 6 developers × 10 timeslots
Constraints: 5 hard, 3 soft
Recommended timeout: 120 seconds

Custom Time Setting

If you select Custom:

  1. Use the slider to set timeout (10-600 seconds)
  2. Or type a specific value in the input box
  3. Maximum: 3600 seconds (1 hour)

Timeout Guidelines

Problem Size Entities Recommended
Small< 2030 seconds
Medium20-10060-120 seconds
Large100-500180-300 seconds
Very Large500+300-600 seconds

Tips

  • Longer timeouts generally produce better solutions
  • Diminishing returns after a certain point
  • Start with Standard, adjust based on results
  • For testing, use Quick to verify setup

Common Issues

Issue Cause Solution
"Please set a valid timeout"Invalid valueSet timeout between 10-3600
Solver times out with poor solutionTimeout too shortIncrease timeout
Solver runs too longTimeout too longReduce timeout

Step 7: Review & Validate JSON

Screenshot: Step 7 Modal

Purpose

Final review of your problem configuration. Validate, optionally improve with AI, and solve.

The JSON Editor

The large text area shows your complete problem as JSON. You can:

  • Review the configuration
  • Make manual edits if needed
  • Copy the JSON for external use

Validation

Click "Validate JSON" to check for errors:

Result Indicator Meaning
✅ ValidGreen "Success" alertReady to solve
❌ InvalidRed "Error" alertFix errors before solving

Common Validation Errors

Error Cause Fix
"entities array is required"No entitiesGo back to Step 2
"valueRanges object is required"No valuesGo back to Step 3
"variables array is required"Problem type issueCheck Step 1
"Invalid JSON syntax"Manual edit errorFix JSON syntax
"Constraint X missing targetVariableId"Incomplete constraintEdit constraint in Step 4

AI Improvement Feature

Click "Improve with AI" to get AI-powered suggestions:

  1. AI analyzes your problem
  2. Shows loading indicator while processing
  3. Displays improvement suggestions
  4. Shows improved JSON for comparison
Button Action
Apply ImprovementsUse AI suggestions
DiscardKeep original
Save AI ImprovementDownload AI version
Reset to OriginalUndo AI changes

Solving from Step 7

After validation succeeds, you can:

  1. Click "Done" to close the wizard
  2. On the main dashboard, click "Solve" button
  3. Or use the API to submit the problem

Solution View

Screenshot: Solution View

After solving, view your results:

Solution Summary

Field Description
Job IDUnique identifier for this solve
StatusSOLVING, COMPLETED, FAILED
ScoreSolution quality (e.g., "0hard / -50soft")
DurationHow long solving took

Score Interpretation

Score: 0hard / -2medium / -450soft
       │        │          │
       │        │          └── Soft penalties (lower is better)
       │        └── Medium violations
       └── Hard violations (must be 0!)
Score Component Meaning
0hard✅ Solution is valid (feasible)
-Xhard❌ Solution is invalid — X hard violations
-YmediumY medium constraint penalties
-ZsoftZ soft constraint penalties

Export Options

Format Button Use For
JSON"Copy JSON"Integration with other systems
Excel"Export to Excel"Sharing with stakeholders

Domain Attributes Registry

NEW in v1.5 — The Domain Attributes Registry provides a structured way to manage custom properties, replacing error-prone free-text input with validated dropdown selections.

What is the Domain Attributes Registry?

The Domain Attributes Registry is a central panel that appears in Steps 2 and 3 of the wizard. It allows you to:

  • Define custom attributes for entities and values
  • Select attributes from dropdowns when configuring constraints
  • Validate that your data has the required properties
  • Track which attributes are used in constraints

Why Use Domain Attributes?

Before (Free Text) After (Domain Attributes)
Type cpuRequried (typo!)Select cpuRequired from dropdown
No validation until runtimeReal-time usage statistics
Property names case-sensitiveConsistent, validated names
No documentationSelf-documenting schema

The Three-Step Connection

Domain Attributes create a powerful link between Steps 2, 3, and 4:

┌─────────────────────────────────────────────────────────────────────┐
│                                                                     │
│  STEP 2: Entities        STEP 3: Values        STEP 4: Constraints │
│                                                                     │
│  ┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐ │
│  │ Entity          │    │ Value           │    │ Constraint      │ │
│  │ Attributes      │    │ Attributes      │    │ Properties      │ │
│  │                 │    │                 │    │                 │ │
│  │ • cpuRequired   │───▶│ • cpuCapacity   │───▶│ demandProperty: │ │
│  │ • memoryReq     │───▶│ • memoryCapacity│    │   cpuRequired   │ │
│  │ • requiredType  │───▶│ • resourceTypes │    │ capacityProp:   │ │
│  └─────────────────┘    └─────────────────┘    │   cpuCapacity   │ │
│                                                 └─────────────────┘ │
│  Requirements           Capabilities           Rules               │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

Using the Domain Attributes Panel

Location

The Domain Attributes panel appears at the top of:

  • Step 2 (What Needs Scheduling?) — For entity attributes
  • Step 3 (Who or What Can Do It?) — For value attributes

[Screenshot: Domain Attributes Panel]

Panel Structure

┌─────────────────────────────────────────────────────────────────────┐
│ ⚙️ Domain Attributes (8)                                      ▼    │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│ 📦 Entity Attributes                                      [+ Add]  │
│ ─────────────────────────────────────────────────────────────────  │
│ cpuRequired         Number (cores)       🔗1  ✓4/4   [✏️] [🗑️]   │
│ memoryRequired      Number (GB)          🔗1  ✓4/4   [✏️] [🗑️]   │
│ gpuRequired         Number (units)            ✓4/4   [✏️] [🗑️]   │
│ requiredResourceType Text                🔗1  ✓4/4   [✏️] [🗑️]   │
│                                                                     │
│ 🖥️ Value Attributes                                       [+ Add]  │
│ ─────────────────────────────────────────────────────────────────  │
│ cpuCapacity         Number (cores)       🔗1  ✓3/3   [✏️] [🗑️]   │
│ memoryCapacity      Number (GB)          🔗1  ✓3/3   [✏️] [🗑️]   │
│ gpuCount            Number (units)            ✓3/3   [✏️] [🗑️]   │
│ resourceTypes       List                 🔗1  ✓3/3   [✏️] [🗑️]   │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

Status Badges

Badge Meaning
🔗1Used in 1 constraint
✓4/4All 4 entities have this property
⚠️ No dataAttribute defined but no data

Adding an Attribute

  1. Click + Add next to "Entity Attributes" or "Value Attributes"
  2. Fill in the modal form:
Field Required Description Example
Name✅ YesProperty name (camelCase)cpuRequired
Type✅ YesNumber, Text, List, Yes/NoNumber
UnitNoUnit label for numberscores, GB, hours
DescriptionNoHelp text"CPU cores needed"
  1. Click Save

[Screenshot: Add Attribute Modal]

Attribute Types

Type Icon Use For Example Value
Number🔢Quantities, measurements8, 64.5
Text📝Categories, identifiers"gpu", "urgent"
List📋Multiple values, tags["Java", "Python"]
Yes/No✓/✗Boolean flagstrue, false

Using Attributes in Constraints (Step 4)

When you configure a constraint that uses property fields:

  1. Dropdowns appear instead of text inputs
  2. All defined attributes are shown as options
  3. Type labels help you select the right one
  4. Empty warning prompts you to define attributes first

[Screenshot: Constraint Dropdown Selection]

Constraint Fields That Use Domain Attributes

Constraint Type Entity Property Field Value Property Field
Skill MatchentitySkillsPropertyvalueSkillsProperty
CapacitydemandPropertycapacityProperty
CostdurationPropertyrateProperty
Time-availabilityProperty
DistanceentityLocationPropertyvalueLocationProperty
PreferenceentityPreferencePropertyvaluePreferenceProperty
DependencydependsOnProperty-

Best Practices

✅ Do

  • Use camelCase for attribute names
  • Add units for numeric attributes
  • Create matching pairs (requirement ↔ capability)
  • Add descriptions for clarity
  • Define attributes before configuring constraints

❌ Don't

  • Use reserved names (id, name, skills, capacity)
  • Create duplicate attribute names
  • Mix incompatible types in constraints
  • Delete attributes that are used in constraints

Naming Conventions

Pattern Use For Examples
[resource]RequiredEntity requirementscpuRequired, memoryRequired
[resource]CapacityValue capacitiescpuCapacity, memoryCapacity
preferred[Resource]Soft preferencespreferredRegion, preferredShift
max[Resource]Upper limitsmaxDuration, maxCost

Migration from Existing JSON

When you import a JSON file created before Domain Attributes:

  1. Auto-detection: Custom properties are automatically detected
  2. Migration: Properties are added to the registry
  3. No action needed: Your existing files work seamlessly

Troubleshooting Domain Attributes

Issue Cause Solution
"⚠️ Define entity attributes first"No attributes in registryAdd attributes in Step 2/3 first
Attribute not in dropdownWrong scopeEntity attrs for entity fields, value attrs for value fields
Red "No data" badgeProperty not in your dataAdd the property to your entities/values
Can't delete attributeUsed in constraintRemove constraint reference first

Progress Indicator

The step indicator at the top of each modal shows your progress:

[Step 1] ─ [Step 2] ─ [Step 3] ─ [Step 4] ─ [Step 5] ─ [Step 6] ─ [Step 7]
   ●          ●          ○          ○          ○          ○          ○
completed  active    upcoming
State Appearance
CompletedFilled circle, checkmark
ActiveHighlighted, current step
UpcomingEmpty circle

Saving Your Work

Your work is saved when you:

  • Click "Save" on any step
  • Click "Next" to proceed
  • The wizard auto-saves periodically

Going Back

You can always go back to previous steps:

  • Click "Previous" button
  • Click on a completed step in the progress indicator

Keyboard Shortcuts

Shortcut Action
EnterConfirm / Next
EscapeCancel / Close
Ctrl+SSave

Custom Properties Reference

This section provides a complete reference for using custom properties throughout the Planning Wizard.

What Are Custom Properties?

Custom properties are domain-specific attributes that go beyond standard fields. They allow you to model any type of planning problem with your own terminology and data structures.

Standard Properties: id, name, skills, capacity, duration, deadline
Custom Properties: requiredResourceType, cpuCores, memoryGB, gpuCount, etc.

Automatic Detection

When you load a JSON file or import data, the wizard automatically detects custom properties:

  1. Scans all entities and values for non-standard property names
  2. Determines the appropriate field type based on data
  3. Creates editable fields in the card UI
  4. Preserves all properties during save/export

Field Type Detection

Data Type Example Value UI Field Created
Number32, 128.5Number input
String"gpu", "high-memory"Text input
Array["java", "python"]Text input (comma-separated)
Booleantrue, falseCheckbox

Property Naming Best Practices

✅ Good ❌ Avoid Why
requiredResourceTypetypeDescriptive, clear purpose
cpuCorescpuIncludes unit
memoryGBmemSelf-documenting
maxCapacitycapReadable
Naming Rules:
  • Use camelCase consistently
  • Be descriptive (not abbreviated)
  • Include units where applicable (GB, Hours, etc.)
  • Match exactly between entities, values, and constraints (case-sensitive)

Complete Constraint Properties Reference

Each constraint type can reference custom properties. Here's the complete reference:

Skill Constraints

Constraint Entity Property Field Value Property Field Description
skillentitySkillsPropertyvalueSkillsPropertyMatch required skills to available skills

Default: skillsskills | Example: requiredResourceTyperesourceTypes

Capacity Constraints

Constraint Property Fields Description
capacitycapacityProperty, demandPropertyDon't exceed capacity limits
capacity_temporalcapacityPropertyTime-aware capacity
list_capacitycapacityProperty, demandPropertyFor LIST variables

Defaults: capacity, demand (or count if null)

Cost Constraints

Constraint Entity Property Value Property Description
costdurationPropertyratePropertyCalculate assignment cost

Defaults: duration, hourlyRate

Time Constraints

Constraint Property Fields Description
timeavailabilityPropertyCheck value availability
date_rangetemporalVariableIdEnsure within date range
no_conflicttemporalVariableIdPrevent time overlaps
consecutivetemporalVariableId, maxGapHoursPenalize non-consecutive

Location Constraints

Constraint Entity Property Value Property Description
distanceentityLocationPropertyvalueLocationPropertyMinimize travel distance

Defaults: location, location

Dependency Constraints

Constraint Property Fields Description
dependencytemporalVariableId, dependsOnPropertyEnforce task dependencies

Default: dependsOn

Preference Constraints

Constraint Entity Property Value Property Description
preferenceentityPreferencePropertyvaluePreferencePropertyHonor preferences
unavailableunavailableProperty-Block certain assignments

Defaults: preferredValues, unavailableValues

Group Constraints

Constraint Property Field Description
mutual_exclusiongroupPropertySame group can't share value
same_valuegroupPropertySame group must share value
different_valuegroupPropertySame group must have different values

Default: groupId

Conditional Constraints

Constraint Property Fields Description
if_existsmatchProperty, conditionProperty, conditionValuePenalize if condition met
if_not_existsmatchProperty, conditionProperty, conditionValuePenalize if condition not met

Pairing Constraints

Constraint Property Fields Description
required_togetherpairedVariableId, matchPropertyTwo variables must be compatible

Default: compatibleWith

List Variable Constraints

Constraint Property Fields Description
demand_satisfieddemandProperty, supplyPropertyDemand met by supply sum
list_max_sizemaxSizeMaximum items in list
list_min_sizeminSizeMinimum items in list

End-to-End Example: Cloud Capacity Planning

Step 2 - Entity (Workload)

{
  "id": "WL-ML",
  "properties": {
    "name": "ML Training Pipeline",
    "requiredResourceType": "gpu",
    "cpuRequired": 16,
    "memoryRequired": 64,
    "gpuRequired": 2
  }
}

Step 3 - Value (Server)

{
  "id": "SRV-GPU",
  "properties": {
    "name": "GPU Server",
    "resourceTypes": ["gpu"],
    "cpuCores": 32,
    "memoryGB": 128,
    "gpuCount": 4
  }
}

Step 4 - Constraint

{
  "name": "Resource Type Match",
  "type": "hard",
  "rule": "skill",
  "targetVariableId": "server",
  "entitySkillsProperty": "requiredResourceType",
  "valueSkillsProperty": "resourceTypes",
  "weight": 10
}
Result: WL-ML is assigned to SRV-GPU because "gpu" is contained in ["gpu"].

Custom Properties Troubleshooting

Issue Cause Solution
Custom properties not showing in UIProperties not inside properties objectMove properties under properties: {} in JSON
Property appears but is emptyData type mismatchCheck JSON value format
Constraint not matchingProperty names don't match exactlyVerify case-sensitive names match
Changes not savedDidn't click Save or NextSave before navigating away
Exported JSON missing propertiesProperties lost during editingReload JSON and check again

Data Flow Diagram

┌─────────────────────────────────────────────────────────────────────────────┐
│                        CUSTOM PROPERTIES DATA FLOW                          │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  ┌──────────────┐    ┌──────────────┐    ┌──────────────┐                  │
│  │  JSON File   │───▶│ Wizard State │───▶│  Card UI     │                  │
│  │  (Import)    │    │ (Memory)     │    │  (Display)   │                  │
│  └──────────────┘    └──────────────┘    └──────────────┘                  │
│         │                   │                   │                           │
│         ▼                   ▼                   ▼                           │
│  ┌──────────────┐    ┌──────────────┐    ┌──────────────┐                  │
│  │ Auto-Detect  │    │  Preserve    │    │  Edit & Save │                  │
│  │ Properties   │    │  All Props   │    │  Properties  │                  │
│  └──────────────┘    └──────────────┘    └──────────────┘                  │
│         │                   │                   │                           │
│         └───────────────────┼───────────────────┘                           │
│                             ▼                                               │
│                    ┌──────────────┐                                         │
│                    │ Export JSON  │───▶ Solver (Uses Constraints)           │
│                    │ (All Props)  │                                         │
│                    └──────────────┘                                         │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

Troubleshooting

Wizard Won't Open

Cause Solution
Not logged inLog in first
Browser issueRefresh page
JavaScript disabledEnable JavaScript

Lost My Work

Cause Solution
Didn't saveUse browser back, may recover
Browser crashedCheck auto-save in local storage
Session expiredLog in again, reload saved file

AI Features Not Working

Cause Solution
No API keyConfigure API key in Admin
Wrong providerSelect correct AI provider
Network errorCheck internet connection

Validation Keeps Failing

Cause Solution
Missing required dataComplete all required steps
Invalid JSON syntaxCheck for typos in manual edits
Constraint errorsReview constraints in Step 4

Quick Reference

Step Summary

Step Required Input Minimum
1Problem statement, criteria, typeAll 3 fields
2EntitiesAt least 1 entity
3ValuesAt least 1 value per variable
4ConstraintsAt least 1 constraint
5Pinned assignmentsNone (optional)
6TimeoutValid number (10-3600)
7ValidationMust pass validation

Button Reference

Button Where Action
CancelStep 1Close without saving
PreviousSteps 2-7Go back one step
SaveAll stepsSave current step
NextSteps 1-6Save and proceed
DoneStep 7Close wizard
Validate JSONStep 7Check for errors
Improve with AIStep 7Get AI suggestions

Next Steps


Support