2017-03-09 17 views
0

私は数学的プログラミングの問題を最適化するためのGoogleスクリプトを書いたが、最適化スクリプトを使ってスプレッドシートに最適なソリューションを表示する方法を理解することはできない。ここでGoogleスクリプトの最適化

は、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(); 

任意の助けが理解されるであろう。

+0

詳細を記入してください。達成しようとしている課題は何ですか?ソリューション変数をスプレッドシートにシリアル化しますか?出力をファイルにストリーミングしますか?どのような試みをしましたか?結果などは何でしたか? – Ahmedov

+0

ソリューションの値を関数を呼び出すスプレッドシートに送信します。私は、Googleスクリプトのsolution.getvariableとsolution.getobjectivefunction呼び出しを使用してコールを返し、何もスプレッドシートに表示されませんでした。 – user7686691

答えて

0

完全な作業コードを以下に示します。アクティブなスプレッドシートにソリューションを書き込む関数を追加する必要があります。そのために、addSolution(solution)という新しい関数を追加して、solutionオブジェクトの各メンバーをそれぞれのセルに書き込みます。

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

ありがとうございます。私はそれを試してみましょう。 – user7686691

+0

@ user7686691あなたの問題を解決したと判断したら、その隣にあるチェックマークをクリックして答えを受け入れてください。 – Ahmedov

関連する問題