2017-03-09 6 views
0

수학 프로그래밍 문제를 최적화하기 위해 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