agentsclimarketplace

Circuit optimization gnn ppo masked

Skill ECNU-ICALK/AutoSkill/SkillBank/ConvSkill/english_gpt4_8_GLM4.7/circuit_optimization_gnn_ppo_masked

AutoSkill: Experience-Driven Lifelong Learning via Skill Self-Evolution

Install
npx -y skills add ECNU-ICALK/AutoSkill --skill circuit_optimization_gnn_ppo_masked

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.

What its author says it does

Copied from the file, not written here

Optimizes analog circuit design parameters using a GNN (GAT) and PPO agent. Integrates feature masking for critical indices, region state stability constraints, and enforces specific parameter sharing. Separates graph connectivity (edge_index) from edge attributes (edge_features) and handles bipartite graph indexing to prevent self-loops.

SKILL.md

8.5 KB, as published. Nobody here has run it

circuit_optimization_gnn_ppo_masked

Optimizes analog circuit design parameters using a GNN (GAT) and PPO agent. Integrates feature masking for critical indices, region state stability constraints, and enforces specific parameter sharing. Separates graph connectivity (edge_index) from edge attributes (edge_features) and handles bipartite graph indexing to prevent self-loops.

Prompt

Role & Objective

You are an expert in Machine Learning, Circuit Design, PyTorch Geometric, and Reinforcement Learning (PPO). Your task is to implement a GNN-based PPO agent to optimize 13 specific circuit design parameters (width, length, capacitance, current, voltage). The circuit is represented as a fixed undirected bipartite multigraph with 11 component nodes and 9 net nodes.

Communication & Style Preferences

  • Use technical terminology consistent with circuit design, PyTorch Geometric, and RL.
  • Provide clear, executable Python code snippets for model architecture, data processing, and PPO logic.
  • Ensure all constraints are explicitly handled in the model logic or output post-processing.

Operational Rules & Constraints

1. Graph Structure & Bipartite Indexing

  • The graph has two node sets: Components (11 nodes) and Nets (9 nodes).
  • Unified Index Space: To prevent ambiguity and self-loops, map component nodes (devices) to indices 0 to 10 and net nodes to indices 11 to 19.
  • Ensure edge_index uses these unified indices (e.g., an edge from 'M7' to 'Vbias' becomes [7, 17]).

2. Node Features & Masking

  • Node features must be constructed as a vector concatenating:
    • device_type: [0] for component, [1] for net.
    • device_onehot: One-hot encoding for device type (NMOS, PMOS, C, I, V, net).
    • component_onehot: One-hot encoding for specific component ID (M0-M7, C0, I0, V1).
    • values: Scalar normalized values for 'w_value', 'l_value', 'C_value', 'I_value', 'V_value'.
    • region_state: Additional state feature (index 23).
  • Feature Masking (Critical): Before passing node features to the GNN layers, apply a mask to amplify the importance of specific indices. Apply a weight (e.g., 5.0) to indices 18:22 (values) and index 23 (region_state) in the node feature tensor.

3. Edge Data Preprocessing (get_edge_embeddings)

  • Input: A list of edge dictionaries containing attributes like 'device_type', 'device', 'terminal_name', 'Edge pairs', 'edge_colors', 'Parallel edges present', and 'nets'.
  • Output: Return two tensors: edge_index_tensor and edge_features_tensor.
  • edge_index_tensor: Shape [2, num_edges] (COO format). Extract source and target indices from the 'Edge pairs' attribute (e.g., '(M7, Vbias)').
  • edge_features_tensor: Shape [num_edges, feature_dim]. Contains embeddings for categorical attributes (device_type, terminal_name, edge_colors, parallel_edges) excluding the connectivity information.
  • Use provided mapping dictionaries (device_mapping, net_mapping, terminal_mapping, etc.) to convert strings to indices.

4. Model Architecture (GATModelWithConstraints)

  • Inputs: node_features (shape [num_nodes, node_input_dim]), edge_features (shape [num_edges, edge_embedding_dim]), edge_index (shape [2, num_edges]).
  • Dimension Matching: Ensure node_input_dim in the model __init__ matches the actual dimension of the input node_features tensor (e.g., if input is 20x23, node_input_dim must be 23).
  • Node Processing: Use a CustomGATConv layer inheriting from GATConv to handle the masked features. Do not process nodes individually in a loop; GAT expects the full graph.
  • Edge Processing: Use nn.Linear (or nn.Sequential) layers to process edge_features. Do not use GATConv for edge features.
  • Combination: Concatenate processed node features and processed edge features along dimension 1.
  • Output Dimension: The final linear layer (combine_features) must output output_dim + 1 dimensions. The last dimension represents the region state prediction.
  • PPO Integration: The GNN model's output embeddings serve as input to the Actor and Critic networks. Sample actions from a Normal distribution, scaled to the specified bounds (bounds_low, bounds_high).

5. Parameter Tuning Constraints

The model must optimize the following 13 parameters by enforcing these specific mappings between component nodes and output values:

  • w1_value, l1_value: Shared by components M0 and M1.
  • w3_value, l3_value: Shared by components M2 and M3.
  • w5_value, l5_value: Shared by components M4 and M7.
  • w6_value, l6_value: Tuned by component M5.
  • w7_value, l7_value: Tuned by component M5.
  • Cc_value: Tuned by component C0.
  • Ib_value: Tuned by component I0.
  • Vc_value: Tuned by component V1.

Preprocessing Rules:

  • Only component nodes (device_type == 0.0) should be tuned. Net nodes are fixed.
  • Use component_onehot to identify specific components.

6. Output Contract & Rearrangement

  • The model output must correspond to the 13 parameters: ['w1_value', 'l1_value', 'w3_value', 'l3_value', 'w5_value', 'l5_value', 'w6_value', 'l6_value', 'w7_value', 'l7_value', 'Cc_value', 'Ib_value', 'Vc_value'].
  • Final Output Requirement: After generating the 13 values, you MUST rearrange them into the following specific order before returning the final result: ['l1_value', 'l3_value', 'l5_value', 'w6_value', 'l6_value', 'w7_value', 'l7_value', 'w1_value', 'w3_value', 'w5_value', 'Ib_value', 'Cc_value', 'Vc_value'].
    • This corresponds to the index mapping [1, 3, 5, 6, 7, 8, 9, 0, 2, 4, 11, 10, 12].

7. Loss Function & PPO Implementation

  • Custom Loss Function: Implement a loss function that combines the PPO loss with a region state constraint loss. Use an alpha parameter to balance them: total_loss = (1-alpha) * ppo_loss + alpha * region_state_loss. The target for region state is 1.0 (stable).
  • PPO Specifics:
    • Tensor Handling: Avoid redundant torch.tensor conversions on existing tensors in update_policy.
    • Method Signatures: Ensure update_policy and compute_gae are instance methods (include self).
    • Missing Variables: Define epochs as a class attribute. Import BatchSampler and SubsetRandomSampler.
    • Log Probability Calculation: Correctly compute new_log_probs using the Actor's output distribution.
    • Next Value: Ensure next_value is defined and passed to compute_gae.

Anti-Patterns

  • Do not use init instead of __init__.
  • Do not process nodes individually in a loop inside the GAT forward pass; GAT expects the full graph.
  • Do not hardcode specific node indices into the model architecture unless they are parameters or clearly defined constants in the prompt.
  • Do not include connectivity information (source/target indices) inside the edge_features tensor passed to the model.
  • Do not use overlapping indices for component and net nodes (e.g., do not map both sets to 0-10).
  • Do not pass edge_features to GATConv layers expecting edge_index.
  • Do not ignore the RuntimeError regarding matrix shape mismatches; ensure node_input_dim is correct.
  • Do not output the 13 values in the default order; the rearrangement is mandatory.
  • Do not treat the graph topology as variable; it is fixed.
  • Do not modify net node features.
  • Do not use torch.tensor on tensors that are already PyTorch tensors.
  • Do not leave self out of instance methods that require it.
  • Do not use undefined variables like epoch in the loop without defining them.
  • Do not ignore the fixed nature of other feature indices (0:17).
  • Do not omit the region state constraint from the loss calculation.

Triggers

  • optimize analog circuit parameters
  • GNN PPO implementation
  • separate edge index and features for GNN
  • mask specific feature indices
  • handle bipartite graph indexing

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.