In my implementation i used reinforcement learning technique with graph neural network, in the analog circuit synthesis optimization process.
In general(common among all types): Fixed circuit topology (netlist) is converted in to graph structure, during optimization process, in the fixed topology(netlist/graph) the node features(circuit device component values/dimensions) are alone dynamic in nature, where the nodes(components and nets), edges(connection between components and nets) and edge features are static in nature.

Framework of my implementation:
-circuit netlist(represented in the environment simulation) is convert into graph network, graph network is embedded in to graph neural network.
-the node features and edge features/adjacency matrix/edge index, are my state values from the environment to the RL agent(actor and critic with GNN).
-circuit has target specification metrics(obtained value need to meet with in the target value range) and the device component(each component need to optimize) in the circuit has specific ranges(bounds) for tuning.
-RL agent generated action space for the values of the device component and pass it to the environment, where the environment, simulates the data and generate the state and reward function (reward function is based on the difference between the target and obtained performance metrics, we get penalties when deviation).
-the optimization aim is to get maximum reward(all the obtained value must be with in the target value range).
-based on the reward/penalty loss function were generated from the critic network, the actor network predicts new action space using the policy using the loss function in RL agent.
-The process is goes on until all the obtained value with in the target value range.

I need to know, can i able to modify the existing framework into below requirement:
-as same as the first type implementation procedure, instead of reaching target value range and end the optimization, we first train the agent by tuning the action space(continuous) with in its bounds to meet the target design specification, train the agent for different set of random number of performance metrics within the target range(predefined ranges for each metrics). using reward calculate the loss function and tune the action space to achieve each target. (i also need to know what else if the target doesnot reach from different continuous action space is there any stopping criteria)
-and after training i need to test the trained agent with the another set of random generated target specifications(which were not used in the training process)
-and i also need to test the trained agent with same circuit topology with another CMOS technology file

I have my exixting code in three splitups(full code divided in continuous three splitup because of large number of codes), i will provide my existing code for your reference, will you provide me the updated code for my requiement.

the circuit environment gets input action space for the variables(8) 'W1', 'W3', 'W5', 'W6', 'W7','Ib', 'Cc', 'Vc', and generate four output performance mertics 'gain', 'bw', 'ugf', 'pm' for each action space input, and from the environment we get state data(node feature tensor and edge index) and reward values(whether the output performance metrics reach the target metrics or not, based on the difference we calculate the cummulated reward values) 

-generating random target metrics 'gain', 'bw', 'ugf', 'pm', must be discrete with in the ranges, 
CircuitEnvironment.PERFORMANCE_METRICS_TARGET_LOW = np.array([48, 30e3, 10e6, 60])
CircuitEnvironment.PERFORMANCE_METRICS_TARGET_HIGH = np.array([100, 100e3, 100e6, 75]) 
-the action space must be in continuous with in the range for the action space variables 'W1', 'W3', 'W5', 'W6', 'W7','Ib', 'Cc', 'Vc', 
bounds_low = np.array([0.5e-6, 0.5e-6, 0.5e-6, 0.5e-6, 0.5e-6, 15e-6, 0.1e-12, 0.8])
bounds_high = np.array([50e-6, 50e-6, 50e-6, 50e-6, 50e-6, 30e-6, 10e-12, 1.4])
-training and testing target metrics must not be overlapped(no same discrete target metrics used in both testing and training process)

-Integrating the necessary data from the updated entire code into your save and load file process involves ensuring that all relevant state information is saved and loaded correctly in the training and testing process.