103 lines
2.2 KiB
TypeScript
103 lines
2.2 KiB
TypeScript
|
|
/**
|
||
|
|
* Canvas Schema - Type definitions for optimization workflow nodes
|
||
|
|
*/
|
||
|
|
|
||
|
|
export type NodeType =
|
||
|
|
| 'model'
|
||
|
|
| 'solver'
|
||
|
|
| 'designVar'
|
||
|
|
| 'extractor'
|
||
|
|
| 'objective'
|
||
|
|
| 'constraint'
|
||
|
|
| 'algorithm'
|
||
|
|
| 'surrogate';
|
||
|
|
|
||
|
|
export interface BaseNodeData {
|
||
|
|
label: string;
|
||
|
|
configured: boolean;
|
||
|
|
errors?: string[];
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface ModelNodeData extends BaseNodeData {
|
||
|
|
type: 'model';
|
||
|
|
filePath?: string;
|
||
|
|
fileType?: 'prt' | 'fem' | 'sim';
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface SolverNodeData extends BaseNodeData {
|
||
|
|
type: 'solver';
|
||
|
|
solverType?: 'SOL101' | 'SOL103' | 'SOL105' | 'SOL106' | 'SOL111' | 'SOL112';
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface DesignVarNodeData extends BaseNodeData {
|
||
|
|
type: 'designVar';
|
||
|
|
expressionName?: string;
|
||
|
|
minValue?: number;
|
||
|
|
maxValue?: number;
|
||
|
|
unit?: string;
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface ExtractorNodeData extends BaseNodeData {
|
||
|
|
type: 'extractor';
|
||
|
|
extractorId?: string;
|
||
|
|
extractorName?: string;
|
||
|
|
config?: Record<string, unknown>;
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface ObjectiveNodeData extends BaseNodeData {
|
||
|
|
type: 'objective';
|
||
|
|
name?: string;
|
||
|
|
direction?: 'minimize' | 'maximize';
|
||
|
|
weight?: number;
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface ConstraintNodeData extends BaseNodeData {
|
||
|
|
type: 'constraint';
|
||
|
|
name?: string;
|
||
|
|
operator?: '<' | '<=' | '>' | '>=' | '==';
|
||
|
|
value?: number;
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface AlgorithmNodeData extends BaseNodeData {
|
||
|
|
type: 'algorithm';
|
||
|
|
method?: 'TPE' | 'CMA-ES' | 'NSGA-II' | 'GP-BO' | 'RandomSearch';
|
||
|
|
maxTrials?: number;
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface SurrogateNodeData extends BaseNodeData {
|
||
|
|
type: 'surrogate';
|
||
|
|
enabled?: boolean;
|
||
|
|
modelType?: 'MLP' | 'GNN' | 'Ensemble';
|
||
|
|
minTrials?: number;
|
||
|
|
}
|
||
|
|
|
||
|
|
export type CanvasNodeData =
|
||
|
|
| ModelNodeData
|
||
|
|
| SolverNodeData
|
||
|
|
| DesignVarNodeData
|
||
|
|
| ExtractorNodeData
|
||
|
|
| ObjectiveNodeData
|
||
|
|
| ConstraintNodeData
|
||
|
|
| AlgorithmNodeData
|
||
|
|
| SurrogateNodeData;
|
||
|
|
|
||
|
|
export interface CanvasEdge {
|
||
|
|
id: string;
|
||
|
|
source: string;
|
||
|
|
target: string;
|
||
|
|
sourceHandle?: string;
|
||
|
|
targetHandle?: string;
|
||
|
|
}
|
||
|
|
|
||
|
|
// Valid connections
|
||
|
|
export const VALID_CONNECTIONS: Record<NodeType, NodeType[]> = {
|
||
|
|
model: ['solver', 'designVar'],
|
||
|
|
solver: ['extractor'],
|
||
|
|
designVar: ['model'],
|
||
|
|
extractor: ['objective', 'constraint'],
|
||
|
|
objective: ['algorithm'],
|
||
|
|
constraint: ['algorithm'],
|
||
|
|
algorithm: ['surrogate'],
|
||
|
|
surrogate: [],
|
||
|
|
};
|