2017-03-09 4 views
0

J'ai écrit un script Google pour optimiser un problème de programmation mathématique, mais je n'arrive pas à trouver comment afficher la solution optimale dans la feuille de calcul en utilisant le script d'optimisation.Optimisation de scripts Google

est ici le script Google:

function myFunction() { 
    var engine = LinearOptimizationService.createEngine(); 

    // Add variables, constraints and define the objective with addVariable(), addConstraint(), etc. 
    // Add two variables, 0 <= x <= 10 and 0 <= y <= 5 
    engine.addVariable('x', 0, 10); 
    engine.addVariable('y', 0, 5); 

    // Create the constraint: 0 <= 2 * x + 5 * y <= 10 
    var constraint = engine.addConstraint(0, 10); 
    constraint.setCoefficient('x', 2); 
    constraint.setCoefficient('y', 5); 

    // Create the constraint: 0 <= 10 * x + 3 * y <= 20 
    var constraint = engine.addConstraint(0, 20); 
    constraint.setCoefficient('x', 10); 
    constraint.setCoefficient('y', 3); 

    // Set the objective to be x + y 
    engine.setObjectiveCoefficient('x', 1); 
    engine.setObjectiveCoefficient('y', 1); 

    // Engine should maximize the objective 
    engine.setMaximization(); 

    // Solve the linear program 
    var solution = engine.solve(); 

Toute aide sera appréciée.

+0

Veuillez fournir plus de détails. Quelle est la tâche que vous essayez d'atteindre? Voulez-vous sérialiser la variable de solution dans une feuille de calcul? Voulez-vous diffuser la sortie dans un fichier? Quelles tentatives avez-vous faites? Quel était le résultat, etc.? – Ahmedov

+0

Je veux envoyer les valeurs de la solution à la feuille de calcul appelant la fonction. J'ai essayé d'utiliser google scripts solution.getvariable et les appels de solution.getobjectivefunction et les appels de retour et rien n'a été montré dans la feuille de calcul. – user7686691

Répondre

0

Le code de travail complet est fourni ci-dessous. Vous devez ajouter une fonction pour écrire votre solution dans la feuille de calcul active. Pour cela, j'ai ajouté une nouvelle fonction addSolution(solution) qui écrit ensuite chaque membre de l'objet solution dans leurs cellules respectives.

function myFunction() { 
    var engine = LinearOptimizationService.createEngine(); 

    // Add variables, constraints and define the objective with addVariable(), addConstraint(), etc. 
    // Add two variables, 0 <= x <= 10 and 0 <= y <= 5 
    engine.addVariable('x', 0, 10); 
    engine.addVariable('y', 0, 5); 

    // Create the constraint: 0 <= 2 * x + 5 * y <= 10 
    var constraint = engine.addConstraint(0, 10); 
    constraint.setCoefficient('x', 2); 
    constraint.setCoefficient('y', 5); 

    // Create the constraint: 0 <= 10 * x + 3 * y <= 20 
    var constraint = engine.addConstraint(0, 20); 
    constraint.setCoefficient('x', 10); 
    constraint.setCoefficient('y', 3); 

    // Set the objective to be x + y 
    engine.setObjectiveCoefficient('x', 1); 
    engine.setObjectiveCoefficient('y', 1); 

    // Engine should maximize the objective 
    engine.setMaximization(); 

    // Solve the linear program 
    var solution = engine.solve(); 
    addProduct(solution) 
} 

function addSolution(solution) { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    sheet.appendRow([solution.getObjectiveValue(), solution.getStatus(), solution.getVariableValue('x'), solution.getVariableValue('y'),solution.isValid()]); 
} 
+0

Merci. Je vais essayer. – user7686691

+0

@ user7686691please accepter la réponse en cliquant sur la coche à côté de lui, une fois que vous avez décidé qu'il a résolu votre problème. – Ahmedov