質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

1回答

365閲覧

VBAで機械学習的なこと

Fertyo

総合スコア1

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

0クリップ

投稿2021/07/29 12:52

目標値に近づける

画像のような表で、やりたいことがありまして
表の個数と金額は紐づいていて修正セルに差引する個数の数字を入れて個数差、金額差を無くし最終的には最終目標個数と最終目標金額と一致するように計算させたいです。その中で現在個数の中にはマイナスになっているものがあるのでそれもプラスになるように修正した上で上記のことを行いたいです。

イメージ説明

試したこと

ひたすらにランダムに数字を当てはめてどっちも0になるまで繰り返すということを試してみたのですが
データが100以上あるため何十万回ループさせてもうまくいきませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tabuu

2021/07/29 23:50

修正に入れる数字に制限はありますか? 個数差、金額差は両方0にする必要はありますか?最小値ではダメですか?
Fertyo

2021/07/30 10:45

修正に入れる数字に制限はありません。 個数差、金額差は両方0にする必要があります。
guest

回答1

0

ソルバーを使ってはどうでしょうか。
概要は以下のとおりです。

○単価が同じデータは、集約したほうが何かと都合がよい。

  • 集約したほうが効率がよい。
  • ソルバーの制約条件(変数の個数は最大200個、条件数は最大100)に抵触するリスクを回避できます。

○ソルバーの内容

  • 変動させる変数
    単価毎の各データにおける加減個数を以下、n(i)と書き、これを変動変数とします。
  • 制約条件
    0. n(i)は整数であること。
    0. n(i) は、減算後の個数はプラスである必要があります。
    (例. n(i) >= (-1) * 現在の個数(i)
    これはiの数だけ,個々に記述する必要があります。)
    0. Σn(i) = -1
    (合計セルを作っておいて、それが -1であることを要件に。)
    0. Σn(i) * 単価(i) が必要な差分に等しいこと。
    (計算式をセルに埋め、これが差分に一致することを要件に。)
  • 最適化目標

n(i)の絶対値の合計を"最小化"します。(計算セルを作り、それを最小化。)

  • 3つのアルゴリズムのうち、"エボリューショナリー"が適切かと思います。

○ 実行には分単位で時間がかかると思いますが、提示されたケースでは、以下のような結果が得られます。

単価 修正個数 2190 6 880 5 840 0 700 -1 670 0 640 0 580 0 520 -2 240 -9 -------------------- 個数増減計 -1 金額増減計 13640

(表示されたデータだけでは、現在金額合計を再現できない。表示されたデータを元に、差分13640を構成する組み合わせを算出したものです。)
なお、詳細を書く能力がありませんので、問い合わせにはお応えできません。

投稿2021/07/30 12:03

memento_mori

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問