1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SnowflakeAdvent Calendar 2024

Day 2

Snowflakeで数理最適化の問題を解いてみる

Last updated at Posted at 2024-12-22

やること

以下のような高校数学でも習うような簡単な問題をSnowflake を用いて解いてみる.
今回解くのは,数理最適化の中でも簡単に解くことのできる,連続な線形最適化問題とする.数理最適化についてはUdemyでコンテンツを出しているため、こちら明日から役立つ「オペレーションズ・リサーチ概論」を視聴いただければ幸いである.
image.png

サンプルコード

以下,Python on Snowflake で動作するサンプルコードである.
Snowflake のデータベースへのアクセスは行っていないが,応用すれば,Snowflake のデータベースからデータを入力し,結果を書き込むことも可能である.

import snowflake.snowpark as snowpark
from snowflake.snowpark.functions import col
from pulp import LpMaximize, LpProblem, LpVariable, value
import pandas as pd

def main(session: snowpark.Session): 

    m = LpProblem(sense=LpMaximize)  # 数理モデル
    x = LpVariable("x", lowBound=0)  # 変数
    y = LpVariable("y", lowBound=0)  # 変数
    m += x + y                       # 目的関数
    m += x + 2 * y <= 2              # 制約条件1
    m += 2 * x + y <= 2              # 制約条件2    
    m.solve()  # ソルバーの実行
    results = [{'var': v.name, 'val': v.varValue} for v in m.variables()]
    df_results = pd.DataFrame(results)
    df_results.loc[len(df_results)] = ['opt',value(m.objective)]
    dataframe = session.create_dataframe(df_results)
    
    return dataframe

image.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?