LoginSignup
50
5

初めてのpython cvxpy

Last updated at Posted at 2023-12-01

はじめに

これは 株式会社 RetailAI X Advent Calendar 2023 の 2 日目の記事です。

昨日は @10long さんの記事でした。RWKVをjuliaで試してみる

本日は、「初めてのpython cvxpy」 です。
今年、使う機会があったので少しだけ書きます。

なぜcvxpy

できるだけ数式のままの表現で書けるので初心者にやさしい。

とりあえずやってみる

実行環境は「Google Colab

!pip install cvxpy
!pip install --upgrade cvxpy

公式サイトのTOPページの例を参考にやってみます。

import numpy as np
import cvxpy as cp

A = np.array([
    [ 1.76405235,  0.40015721,  0.97873798],
    [ 2.2408932 ,  1.86755799, -0.97727788],
    [ 0.95008842, -0.15135721, -0.10321885],
    [ 0.4105985 ,  0.14404357,  1.45427351]
])

b = np.array(
    [0.76103773, 0.12167502, 0.44386323, 0.33367433]
)


n = len(A[0]) # 用意する変数の数
x = cp.Variable(shape=(n,))

objective = cp.Minimize(cp.sum_squares(A @ x - b))
constraints = [
    0 <= x, 
    x <= 1
]
prob = cp.Problem(objective, constraints)
print(prob)

prob.solve(verbose=True)

xの値を見てみます

print(x.value)

[2.35157320e-01, -5.06468160e-23, 2.61728416e-01]

ちょっとした気付き

いろいろポチポチやってた時の気付きになります。

x = np.array([
    [1,2],
    [3,4],
    [5,6]
])
print(sum(x), np.sum(x), x.sum())

実行結果:[9 12], 21, 21です。
numpyとcvxpyは似ている箇所もあり、復習になりました。

感想

ある程度決まった問題に対して、Google Colabで数値を少し変えてポチポチやってみるといい感じでした👍

明日は、@yoshitake_tatsuhiroさんです。お楽しみに!

参考

この記事は以下の情報を参考にして執筆しました。
CVXPY
【python cvxpy】モデリング言語cvxpyを利用して数理最適化問題を解く

50
5
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
50
5