Skip to content

Instantly share code, notes, and snippets.

@rtkclouds
Created November 16, 2023 20:22
Show Gist options
  • Save rtkclouds/46ce471b005908597cef1434a371e789 to your computer and use it in GitHub Desktop.
Save rtkclouds/46ce471b005908597cef1434a371e789 to your computer and use it in GitHub Desktop.
Adaptive Decision-Making Technique in Open-Ended Environments
const n = 10; // Number of possible actions
const z = 20; // Size of the window
const s = 5; // Size of the action vector
const k = 3; // Size of the position vector
// Generates a random action vector
function generateRandomActions() {
let actions = [];
for (let i = 0; i < s; i++) {
actions.push(Math.floor(Math.random() * n));
}
return actions;
}
// Generates a random positions vector
function generateRandomPositions() {
let positions = [];
for (let i = 0; i < k; i++) {
positions.push(Math.floor(Math.random() * z));
}
return positions;
}
// Simulates retrieving data from the window 'z'
function getDataFromWindow(positions) {
return positions.map(p => Math.random()); // Returns random data
}
// Calculates the cumulative modular sum
function cumulativeModularSum(data) {
return data.reduce((acc, val) => (acc + val) % s, 0);
}
// Evaluates the action (this function is a placeholder)
function evaluateAction(action) {
// A simple evaluation function could be something related to the action itself
return action;
}
let bestScore = -Infinity;
let bestAction = null;
for (let i = 0; i < 100; i++) { // Runs for 100 iterations
let actions = generateRandomActions();
let positions = generateRandomPositions();
let windowData = getDataFromWindow(positions);
let actionIndex = cumulativeModularSum(windowData);
let action = actions[actionIndex];
let score = evaluateAction(action);
if (score > bestScore) {
bestScore = score;
bestAction = action;
// Implement the 1% adjustment logic here if necessary
}
// Implement the logic for reset and 1% randomization if the score is worse
}
console.log(`Best action: ${bestAction} with score: ${bestScore}`);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment